diff --git a/Externals/WiiUseSrc/Src/SConscript b/Externals/WiiUseSrc/Src/SConscript index 9de5678385..405a19feb3 100644 --- a/Externals/WiiUseSrc/Src/SConscript +++ b/Externals/WiiUseSrc/Src/SConscript @@ -41,6 +41,6 @@ libs = [ 'm', ] -env_wiiuse.StaticLibrary(env['libs_dir']+"wiiuse", files, LIBS=libs) +env_wiiuse.StaticLibrary(env['local_libs'] + "wiiuse", files, LIBS=libs) env['HAVE_WIIUSE'] = 1 diff --git a/SConstruct b/SConstruct index 58228075d1..2c988cca82 100644 --- a/SConstruct +++ b/SConstruct @@ -25,14 +25,11 @@ warnings = [ 'pointer-arith', 'packed', 'no-conversion', -# 'no-unused-result', (need a newer gcc for this?) ] compileFlags = [ '-fno-exceptions', '-fno-strict-aliasing', '-msse2', -# '-fomit-frame-pointer', -# '-flto', ] cppDefines = [ @@ -125,10 +122,6 @@ vars.AddVariables( allowed_values = ('release', 'devel', 'debug', 'fastlog', 'prof'), ignorecase = 2 ), - EnumVariable('osx', 'Choose a backend (WIP)', '32cocoa', - allowed_values = ('32x11', '32cocoa', '64cocoa', 'universal'), - ignorecase = 2 - ), PathVariable('wxconfig', 'Path to the wxconfig', None), EnumVariable('pgo', 'Profile-Guided Optimization (generate or use)', 'none', allowed_values = ('none', 'generate', 'use'), @@ -207,9 +200,11 @@ elif (flavour == 'prof'): elif (flavour == 'release'): compileFlags.append('-O3') compileFlags.append('-fomit-frame-pointer'); +# XXX please test -Werror builds on Linux and Windows and remove this condition +if sys.platform == 'darwin': + warnings.append('error') # more warnings if env['lint']: - warnings.append('error') warnings.append('unreachable-code') warnings.append('float-equal') @@ -245,8 +240,8 @@ tests = {'CheckWXConfig' : wxconfig.CheckWXConfig, #object files env['build_dir'] = os.path.join(basedir, 'Build', platform.system() + '-' + platform.machine() + '-' + env['flavor'] + os.sep) - -VariantDir(env['build_dir'], '.', duplicate=0) +# Static libs go here +env['local_libs'] = env['build_dir'] + os.sep + 'libs' + os.sep # Where do we run from env['base_dir'] = os.getcwd()+ '/' @@ -262,28 +257,18 @@ elif flavour == 'prof': if (env['install'] == 'global'): env['prefix'] = os.path.join(env['prefix'] + os.sep) env['binary_dir'] = env['prefix'] + 'bin/' - env['libs_dir'] = env['prefix'] + 'lib/' env['plugin_dir'] = env['prefix'] + 'lib/dolphin-emu/' env['data_dir'] = env['prefix'] + "share/dolphin-emu/" else: env['prefix'] = os.path.join(env['base_dir'] + 'Binary', platform.system() + '-' + platform.machine() + extra + os.sep) env['binary_dir'] = env['prefix'] - if sys.platform == 'darwin': - env['plugin_dir'] = env['prefix'] + 'Dolphin.app/Contents/PlugIns/' - env['data_dir'] = env['prefix'] + 'Dolphin.app/Contents/' - env['libs_dir'] = env['prefix'] + 'Libs/' - else: - env['plugin_dir'] = env['prefix'] + 'plugins/' - env['data_dir'] = env['prefix'] - env['libs_dir'] = env['prefix'] + 'lib/' + env['plugin_dir'] = env['prefix'] + 'plugins/' + env['data_dir'] = env['prefix'] +if sys.platform == 'darwin': + env['plugin_dir'] = env['prefix'] + 'Dolphin.app/Contents/PlugIns/' + env['data_dir'] = env['prefix'] + 'Dolphin.app/Contents/' -env['RPATH'].append(env['libs_dir']) - -# static libs goes here -env['local_libs'] = env['build_dir'] + os.sep + 'libs' + os.sep - -env['LIBPATH'].append(env['local_libs']) -env['LIBPATH'].append(env['libs_dir']) +env['LIBPATH'].append(env['local_libs']) conf = env.Configure(custom_tests = tests, config_h="Source/Core/Common/Src/Config.h") @@ -360,23 +345,18 @@ if not env['SHARED_SFML']: env['CPPPATH'] += [ basedir + 'Externals/SFML/include' ] dirs += ['Externals/SFML/src'] -#osx 64 specifics +#osx specifics if sys.platform == 'darwin': + compileFlags.append('-mmacosx-version-min=10.5') + env['HAVE_COCOA'] = 1 env['HAVE_XRANDR'] = 0 - if env['osx'] == '64cocoa': - compileFlags += ['-arch' , 'x86_64', '-m64' ] - env['LINKFLAGS'] += ['-arch' , 'x86_64', '-m64' ] - conf.Define('MAP_32BIT', 0) - if env['osx'] == '32cocoa': - compileFlags += ['-arch' , 'i386', '-m32' ] - env['LINKFLAGS'] += ['-arch' , 'i386', '-m32' ] - if env['osx'] == 'universal': - compileFlags += ['-arch i386', '-arch x86_64'] - env['LINKFLAGS'] += ['-arch i386', '-arch x86_64'] - if not env['osx'] == '32x11': - env['HAVE_X11'] = 0 - env['HAVE_COCOA'] = 1 - + env['HAVE_X11'] = 0 + env['CC'] = "gcc-4.2" + env['CXX'] = "g++-4.2" + env['CFLAGS'] += ['-arch' , 'x86_64' , '-arch' , 'i386'] + env['CXXFLAGS'] += ['-arch' , 'x86_64' , '-arch' , 'i386'] + env['LINKFLAGS'] += ['-arch' , 'x86_64' , '-arch' , 'i386'] + conf.Define('MAP_32BIT', 0) else: env['HAVE_X11'] = conf.CheckPKG('x11') env['HAVE_XRANDR'] = env['HAVE_X11'] and conf.CheckPKG('xrandr') @@ -398,7 +378,11 @@ if sys.platform == 'win32': if env['nowx']: env['HAVE_WX'] = 0; else: - env['HAVE_WX'] = conf.CheckWXConfig('2.8', wxmods, 0) + if sys.platform == 'darwin': + # 2.9 is needed for 64-bit support on OS X + env['HAVE_WX'] = conf.CheckWXConfig('2.9', wxmods, 0) + else: + env['HAVE_WX'] = conf.CheckWXConfig('2.8', wxmods, 0) # check for libgtk2.0 env['HAVE_GTK2'] = 0 @@ -434,7 +418,6 @@ conf.Define('SHARED_SFML', env['SHARED_SFML']) conf.Define('USER_DIR', "\"" + env['userdir'] + "\"") if (env['install'] == 'global'): conf.Define('DATA_DIR', "\"" + env['data_dir'] + "\"") - conf.Define('LIBS_DIR', "\"" + env['libs_dir'] + "\"") # lua env['LUA_USE_MACOSX'] = 0 @@ -466,19 +449,6 @@ conf.Finish() #wx windows flags if env['HAVE_WX']: wxconfig.ParseWXConfig(env) - #this smells like a hack, but i dont know any other way to fix this - #right now. ParseWXConfig calls wx-config --libs, which returns - #"-arch i386" on my box (and probably also tmator's). - #SCons.ParseConfig makes this a tuple, which is - # 1) a problem for utils.filterWarnings - # 2) a duplicate (and conflicting) set of arch specifiers - #this mainly affects MacOSX, since darwin builds explicitly get - #those set around line 280. - if sys.platform == 'darwin': - env['CCFLAGS'] = [ - f - for f in filter(lambda x:isinstance(x, basestring), env['CCFLAGS']) - ] else: print "WX not found or disabled, not building GUI" @@ -498,7 +468,6 @@ if env.has_key('destdir'): env['prefix'] = env['destdir'] + env['prefix'] env['plugin_dir'] = env['destdir'] + env['plugin_dir'] env['binary_dir'] = env['destdir'] + env['binary_dir'] - env['libs_dir'] = env['destdir'] + env['libs_dir'] env['data_dir'] = env['destdir'] + env['data_dir'] # die on unknown variables @@ -538,8 +507,5 @@ if env['bundle']: tar_env.Append(TARFLAGS='-j', TARCOMSTR="Creating release tarball") - #TODO clean all bundles -#env.Clean(all, 'dolphin-*'+ '.tar.bz2') - - +#env.Clean(all, 'dolphin-*' + '.tar.bz2', 'Binary/Dolphin-r*' + '.dmg') diff --git a/osx_make_dmg.sh b/osx_make_dmg.sh index ad90f2eef0..8c2315530d 100755 --- a/osx_make_dmg.sh +++ b/osx_make_dmg.sh @@ -30,7 +30,7 @@ fix_shared_object_depends() { done done - # wxw shoves all the paths into one string…so the looping is really just for dealing with wxw crap… + # wxw shoves all the paths into one string, so the looping is really just for dealing with wxw crap orig_paths=(`otool -L $temp_dir/Dolphin.app/Contents/MacOS/Dolphin | grep ${search_string} | awk '{print $1}'`) for orig_path in ${orig_paths[@]}; do @@ -51,6 +51,7 @@ cp -r Darwin-i386/Dolphin.app $temp_dir fix_shared_object_depends libwx fix_shared_object_depends libSDL fix_shared_object_depends libGLEW +fix_shared_object_depends libz mkdir -p $temp_dir/Dolphin.app/Contents/Library/Frameworks/Cg.framework cp /Library/Frameworks/Cg.framework/Cg $temp_dir/Dolphin.app/Contents/Library/Frameworks/Cg.framework/Cg @@ -59,4 +60,4 @@ find $temp_dir -name .svn -exec rm -fr {} \; 2>/dev/null rm $temp_dir.dmg 2>/dev/null echo "Creating dmg" hdiutil create -srcfolder $temp_dir -format UDBZ $temp_dir.dmg -rm -rf $temp_dir \ No newline at end of file +rm -rf $temp_dir