From 8fdfe2583c3aa095eb1a2e4c57ce1fde4acd3d93 Mon Sep 17 00:00:00 2001 From: nakeee Date: Tue, 9 Dec 2008 21:46:32 +0000 Subject: [PATCH] scons fixes git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1464 8ced0084-cf51-0410-be5f-012b33b47a6e --- SConstruct | 4 +- SconsTests/utils.py | 46 ++++++++++++- Source/Plugins/Plugin_VideoOGL/Src/SConscript | 65 +++++++------------ 3 files changed, 69 insertions(+), 46 deletions(-) diff --git a/SConstruct b/SConstruct index 5ec4ac8722..582bc51183 100644 --- a/SConstruct +++ b/SConstruct @@ -193,8 +193,8 @@ env['HAVE_X11'] = conf.CheckPKG('x11') #osx 64 specifics if env['osx64']: # SDL and WX are broken on osx 64 - env['HAVE_SDL'] = 0 - env['HAVE_WX'] = 0; +# env['HAVE_SDL'] = 0 +# env['HAVE_WX'] = 0; compileFlags += ['-arch' , 'x86_64', '-DOSX64'] # Gui less build diff --git a/SconsTests/utils.py b/SconsTests/utils.py index 409c24e94a..bd003561e2 100644 --- a/SconsTests/utils.py +++ b/SconsTests/utils.py @@ -1,4 +1,5 @@ import os +import platform # methods that should be added to env def filterWarnings(self, flags): @@ -15,13 +16,54 @@ def CheckPKGConfig(context, version): context.Result( ret ) return ret -def CheckPKG(context, name): - context.Message( 'Checking for %s... ' % name ) +def CheckFramework(context, name): + ret = 0 + if (platform.system() == 'darwin'): + context.Message( '\nLooking for framework %s... ' % name ) + lastLINKFLAGS = context.env['LINKFLAGS'] + context.env.Append(LINKFLAGS = '-Wl,-framework,%s' % name) + ret = context.TryLink(""" + int main(int argc, char **argv) { + return 0; + } + """, '.c') + if not ret: + context.env.Replace(LIBS = lastLIBS) + + return ret + +def CheckLib(context, name): + context.Message( 'Looking for lib %s... ' % name ) + lastLIBS = context.env['LIBS'] + context.env.Append(LIBS = name) + ret = context.TryLink(""" + int main(int argc, char **argv) { + return 1; + } + """,'.c') + if not ret: + context.env.Replace(LIBS = lastLIBS) + + return ret + +def ConfigPKG(context, name): + context.Message( '\nUsing pkg-config for %s... ' % name ) ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0] context.Result( ret ) if ret: context.env.ParseConfig('pkg-config --cflags --libs \'%s\'' % name) return int(ret) + +def CheckPKG(context, name): + context.Message( 'Checking for %s... ' % name ) + ret = 1 + if not CheckFramework(context, name): + if not ConfigPKG(context, name.lower()): + ret = CheckLib(context, name) + + context.Result(ret) + return int(ret) + def CheckSDL(context, version): diff --git a/Source/Plugins/Plugin_VideoOGL/Src/SConscript b/Source/Plugins/Plugin_VideoOGL/Src/SConscript index 15278a1546..03fd888676 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/SConscript +++ b/Source/Plugins/Plugin_VideoOGL/Src/SConscript @@ -5,6 +5,7 @@ Import('env') import sys sys.path.append(env['base_dir']+'SconsTests') import utils +import platform name = "Plugin_VideoOGL" @@ -41,7 +42,7 @@ compileFlags = [ linkFlags = [ ] libs = [ - 'videocommon', 'common', 'GLEW', + 'videocommon', 'common', ] gfxenv = env.Clone() @@ -59,59 +60,39 @@ if gfxenv['osx64']: '-x', 'objective-c++', ] - linkFlags += [ - '-framework', - 'cocoa', - '-arch', - 'x86_64' - ] - - tests = {'CheckPKG' : utils.CheckPKG} -conf = gfxenv.Configure(custom_tests = tests) - -if not conf.CheckPKG('gl'): - - if not conf.CheckLibWithHeader('gl', 'gl.h', 'c', 1): - print name + " must have opengl to be build" - -else: - gfxenv.ParseConfig("pkg-config gl --cflags --libs") - -#if not conf.CheckPKG('glu')): - -# Return() - - -# check for xxf86vm - -gfxenv['HAVE_XXF86VM'] = conf.CheckPKG('xxf86vm') - -conf.Finish() - -if gfxenv['HAVE_XXF86VM']: - gfxenv.ParseConfig("pkg-config xxf86vm --cflags --libs") - - -#gfxenv.ParseConfig("pkg-config glu --cflags --libs") +conf = gfxenv.Configure(custom_tests = tests, + config_h="Source/Core/Common/Src/Config.h") if sys.platform == 'darwin': # Use libraries from MacPorts. compileFlags.append('-I/opt/local/include') linkFlags.append('-L/opt/local/lib') - # Use frameworks instead of plain libs, when possible. - linkFlags += [ - '-Wl,-framework,%s' % framework - for framework in [ 'Cg', 'OpenGL' ] - ] + conf.CheckPKG('cocoa') + conf.CheckPKG('OpenGL') else: - # Libraries without pkg-config support. - libs += [ 'Cg', 'CgGL', 'GLU' ] + if not (conf.CheckPKG('GL') and conf.CheckPKG('GLU')): + print name + " must have opengl and glu to be build" + Return() +if not conf.CheckPKG('Cg') or not conf.CheckPKG('CgGL'): + print name + " must have cg and cggl to be build" + Return() + +if not conf.CheckPKG('GLEW'): + print name + " must have glew to be build" + Return() + +# check for xxf86vm + +gfxenv['HAVE_XXF86VM'] = conf.CheckPKG('xxf86vm') +conf.Define('HAVE_XXF86VM', gfxenv['HAVE_XXF86VM']) + +conf.Finish() # change to True if you want to compile with SDL useSDL = not (gfxenv['HAVE_X11'] and gfxenv['HAVE_XXF86VM'])