mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-11 06:59:07 +01:00
![Soren Jorvang](/assets/img/avatar_default.png)
Use 10.5 SDK header files in an attempt to keep us honest and 10.5 compatible. I'd do the same with system libraries, but the linker gives strange errors when I try that. We also link against third party libraries from Macports that haven't had any magic 10.5 compat dust sprinkled over them, so maybe it isn't very important anyway. Move the OS X variable section in SConstruct upwards a bit to have the settings apply to more of the config tests. SCons' ParseConfig causes problems for the -arch tuples, though, so the SDL check still isn't quite as comprehensive as it should be. Put the XCode project out of its misery. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5693 8ced0084-cf51-0410-be5f-012b33b47a6e
146 lines
4.3 KiB
Python
146 lines
4.3 KiB
Python
import os
|
|
import platform
|
|
|
|
# taken from scons wiki
|
|
def CheckPKGConfig(context, version):
|
|
context.Message( 'Checking for pkg-config version > %s... ' % version)
|
|
ret = context.TryAction('pkg-config --atleast-pkgconfig-version=%s' % version)[0]
|
|
context.Result( ret )
|
|
return ret
|
|
|
|
def CheckFramework(context, name):
|
|
ret = 0
|
|
if (platform.system().lower() == 'darwin'):
|
|
context.Message( '\nLooking for framework %s... ' % name )
|
|
lastFRAMEWORKS = context.env['FRAMEWORKS']
|
|
context.env.Append(FRAMEWORKS = [name])
|
|
ret = context.TryLink("""
|
|
int main(int argc, char **argv) {
|
|
return 0;
|
|
}
|
|
""", '.c')
|
|
if not ret:
|
|
context.env.Replace(FRAMEWORKS = lastFRAMEWORKS)
|
|
|
|
return ret
|
|
|
|
def CheckFink(context):
|
|
context.Message( 'Looking for fink... ')
|
|
prog = context.env.WhereIs('fink')
|
|
if prog:
|
|
ret = 1
|
|
prefix = prog.rsplit(os.sep, 2)[0]
|
|
context.env.Append(LIBPATH = [prefix + os.sep +'lib'],
|
|
CPPPATH = [prefix + os.sep +'include'])
|
|
context.Message( 'Adding fink lib and include path ')
|
|
else:
|
|
ret = 0
|
|
|
|
context.Result(ret)
|
|
return int(ret)
|
|
|
|
def CheckMacports(context):
|
|
context.Message( 'Looking for macports... ')
|
|
prog = context.env.WhereIs('port')
|
|
if prog:
|
|
ret = 1
|
|
prefix = prog.rsplit(os.sep, 2)[0]
|
|
context.env.Append(LIBPATH = [prefix + os.sep + 'lib'],
|
|
CPPPATH = [prefix + os.sep + 'include'])
|
|
context.Message( 'Adding port lib and include path ')
|
|
else:
|
|
ret = 0
|
|
|
|
context.Result(ret)
|
|
return int(ret)
|
|
|
|
# TODO: We should use the scons one instead
|
|
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 0;
|
|
}
|
|
""", '.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 )
|
|
if platform.system().lower() == 'windows':
|
|
return 0
|
|
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):
|
|
context.Message( 'Checking for SDL lib version > %s... ' % version)
|
|
if platform.system().lower() == 'windows':
|
|
return 1
|
|
sdl_config = context.env.WhereIs('sdl-config')
|
|
if sdl_config == None:
|
|
ret = 0
|
|
else:
|
|
found_ver = os.popen('sdl-config --version').read().strip()
|
|
required = [int(n) for n in version.split(".")]
|
|
found = [int(n) for n in found_ver.split(".")]
|
|
ret = (found >= required)
|
|
|
|
context.Result(ret)
|
|
if ret:
|
|
context.env.ParseConfig('sdl-config --cflags --libs')
|
|
ret = CheckLib(context, 'SDL')
|
|
return int(ret)
|
|
|
|
def CheckPortaudio(context, version):
|
|
found = 0
|
|
if CheckPKG(context, 'portaudio'):
|
|
context.Message( 'Checking for lib portaudio version > %s... ' % version)
|
|
found = context.TryRun("""
|
|
#include <portaudio.h>
|
|
#include <stdio.h>
|
|
int main(int argc, char **argv) {
|
|
printf("%d", Pa_GetVersion());
|
|
return 0;
|
|
}
|
|
""", '.c')[1]
|
|
|
|
if found:
|
|
ret = (version <= found)
|
|
else:
|
|
ret = 0
|
|
|
|
context.Result(ret)
|
|
return int(ret)
|
|
|
|
def GenerateRevFile(flavour, template, output):
|
|
|
|
try:
|
|
svnrev = os.popen('svnversion .').read().strip().split(':')[0]
|
|
except:
|
|
svnrev = ""
|
|
|
|
revstr = svnrev + "-" + flavour
|
|
tmpstr = open(template, "r").read().replace("$WCMODS?$WCREV$M:$WCREV$$",revstr)
|
|
outfile = open(output, 'w')
|
|
outfile.write(tmpstr +"\n")
|
|
outfile.close()
|
|
|
|
return revstr
|