[sldev] [HELP] Compiling on Mac

Michael Schlenker schlenk at uni-oldenburg.de
Fri Sep 25 11:00:24 PDT 2009


Am 25.09.2009 um 15:16 schrieb izze euler:

> Hi,
>
> I'm trying to compile the Second Life source code on a Mac using  
> XCode, but I get the following error:
>
> GCC 4.2 is not compatible with the Mac OS X 10.4 SDK (file  
> audioengine.cpp)
>
Just open the project file in xcode and set the used sdk to 10.5 or  
10.6?

> Does anyone know how I can resolve this?
>
> The only change I've made to the source code is to remove Fmod  
> libraries as mentioned on the wiki.

Where is that mentioned, haven't found it when trying to compile  
snowglobe with RLV patches and had some trouble to get it to compile  
with fmod ( duplicate symbols, but fixed it by adding the conflicting  
symbols to the already existing exception list in.)

Should get you started.

I also cranked up the optimization a bit in the CMAKE files, to get a  
faster binary:

Index: indra/cmake/00-Common.cmake
===================================================================
--- indra/cmake/00-Common.cmake	(revision 2601)
+++ indra/cmake/00-Common.cmake	(working copy)
@@ -171,6 +171,7 @@

  if (DARWIN)
    add_definitions(-DLL_DARWIN=1)
+  add_definitions(-fvisibility=hidden)
    set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,- 
search_paths_first")
    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlong-branch")
@@ -179,6 +180,8 @@
    # NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O0 $ 
{CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
    set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O0 $ 
{CMAKE_C_FLAGS_RELWITHDEBINFO}")
+  set(CMAKE_CXX_FLAGS_RELEASE "-Os -mssse3 -mfpmath=sse $ 
{CMAKE_CXX_FLAGS_RELEASE}")
+  set(CMAKE_C_FLAGS_RELEASE "-0s -mssse3 -mfpmath=sse $ 
{CMAKE_C_FLAGS_RELEASE}")
  endif (DARWIN)


Index: indra/cmake/Variables.cmake
===================================================================
--- indra/cmake/Variables.cmake	(revision 2601)
+++ indra/cmake/Variables.cmake	(working copy)
@@ -76,8 +76,8 @@
    # set this dynamically from the build system now -
    # NOTE: wont have a distributable build unless you add this on the  
configure line with:
    # -DCMAKE_OSX_ARCHITECTURES:STRING='i386;ppc'
-  #set(CMAKE_OSX_ARCHITECTURES i386;ppc)
-  set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.4u.sdk)
+  set(CMAKE_OSX_ARCHITECTURES i386)
+  set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk)
    if (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND  
CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
      set(ARCH universal)
    else (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND  
CMAKE_OSX_ARCHITECTURES MATCHES "ppc")

Index: indra/newview/fmod_hidden_symbols.exp
===================================================================
--- indra/newview/fmod_hidden_symbols.exp	(revision 2601)
+++ indra/newview/fmod_hidden_symbols.exp	(working copy)
@@ -8,6 +8,7 @@
  __make_words
  _lpc_clear
  _lpc_init
+__vorbis_block_init
  __vorbis_block_alloc
  __vorbis_block_ripcord
  __vorbis_apply_window
@@ -18,6 +19,7 @@
  _vorbis_block_clear
  _vorbis_block_init
  _vorbis_dsp_clear
+_vorbis_synthesis_restart
  _vorbis_synthesis_blockin
  _vorbis_synthesis_init
  _vorbis_synthesis_pcmout

Index: indra/llui/llresmgr.cpp
===================================================================
--- indra/llui/llresmgr.cpp	(revision 2601)
+++ indra/llui/llresmgr.cpp	(working copy)
@@ -253,30 +253,9 @@
  	LLLocale locale(LLLocale::USER_LOCALE);
  	struct lconv *conv = localeconv();
  	
-#if LL_DARWIN
-	// On the Mac, locale support is broken before 10.4, which causes  
things to go all pear-shaped.
-	// Fake up a conv structure with some reasonable values for the  
fields this function uses.
-	struct lconv fakeconv;
-	if(conv->negative_sign[0] == 0)	// Real locales all seem to have  
something here...
-	{
-		fakeconv = *conv;	// start with what's there.
-		switch(mLocale)
-		{
-			default:  			// Unknown -- use the US defaults.
-			case LLLOCALE_USA:
-			case LLLOCALE_UK:	// UK ends up being the same as US for the items  
used here.
-				fakeconv.negative_sign = "-";
-				fakeconv.mon_grouping = "\x03\x03\x00";	// commas every 3 digits
-				fakeconv.n_sign_posn = 1; // negative sign before the string
-			break;
-		}
-		conv = &fakeconv;
-	}
-#endif
-
-	char* negative_sign = conv->negative_sign;
-	char separator = getMonetaryThousandsSeparator();
-	char* grouping = conv->mon_grouping;
+	const char* negative_sign = conv->negative_sign;
+	const char separator = getMonetaryThousandsSeparator();
+	const char* grouping = conv->mon_grouping;
  	
  	// Note on mon_grouping:
  	// Specifies a string that defines the size of each group of digits  
in formatted monetary quantities.

Index: indra/mac_updater/mac_updater.cpp
===================================================================
--- indra/mac_updater/mac_updater.cpp	(revision 2601)
+++ indra/mac_updater/mac_updater.cpp	(working copy)
@@ -68,9 +68,9 @@
  OSStatus gFailure = noErr;
  Boolean gCancelled = false;

-char *gUpdateURL;
-char *gProductName;
-char *gBundleID;
+const char *gUpdateURL;
+const char *gProductName;
+const char *gBundleID;

  void *updatethreadproc(void*);

@@ -1048,7 +1048,7 @@
  		if(!mountOutput.empty())
  		{
  			const char *s = mountOutput.c_str();
-			char *prefix = "/dev/";
+			const char *prefix = "/dev/";
  			char *sub = strstr(s, prefix);
  			
  			if(sub != NULL)






More information about the SLDev mailing list