New GCPad/Wiimote: Enabled SDL 1.2 on the Windows build to support some gamepads...
[dolphin.git] / SconsTests / utils.py
blob5b38f109c829d687e500b3a3c96d0592bbc6ae14
1 import os
2 import platform
4 # taken from scons wiki
5 def CheckPKGConfig(context, version):
6 context.Message( 'Checking for pkg-config version > %s... ' % version)
7 ret = context.TryAction('pkg-config --atleast-pkgconfig-version=%s' % version)[0]
8 context.Result( ret )
9 return ret
11 def CheckFramework(context, name):
12 ret = 0
13 if (platform.system().lower() == 'darwin'):
14 context.Message( '\nLooking for framework %s... ' % name )
15 lastFRAMEWORKS = context.env['FRAMEWORKS']
16 context.env.Append(FRAMEWORKS = [name])
17 ret = context.TryLink("""
18 int main(int argc, char **argv) {
19 return 0;
21 """, '.c')
22 if not ret:
23 context.env.Replace(FRAMEWORKS = lastFRAMEWORKS)
25 return ret
28 def CheckFink(context):
29 context.Message( 'Looking for fink... ')
30 prog = context.env.WhereIs('fink')
31 if prog:
32 ret = 1
33 prefix = prog.rsplit(os.sep, 2)[0]
34 context.env.Append(LIBPATH = [prefix + os.sep +'lib'],
35 CPPPATH = [prefix + os.sep +'include'])
36 context.Message( 'Adding fink lib and include path')
37 else:
38 ret = 0
40 context.Result(ret)
41 return int(ret)
43 def CheckMacports(context):
44 context.Message( 'Looking for macports... ')
45 prog = context.env.WhereIs('port')
46 if prog:
47 ret = 1
48 prefix = prog.rsplit(os.sep, 2)[0]
49 context.env.Append(LIBPATH = [prefix + os.sep + 'lib'],
50 CPPPATH = [prefix + os.sep + 'include'])
51 context.Message( 'Adding port lib and include path')
52 else:
53 ret = 0
55 context.Result(ret)
56 return int(ret)
58 # TODO: We should use the scons one instead
59 def CheckLib(context, name):
60 context.Message( 'Looking for lib %s... ' % name )
61 lastLIBS = context.env['LIBS']
62 context.env.Append(LIBS = [name])
63 ret = context.TryLink("""
64 int main(int argc, char **argv) {
65 return 0;
67 """, '.c')
68 if not ret:
69 context.env.Replace(LIBS = lastLIBS)
71 return ret
73 def ConfigPKG(context, name):
74 context.Message( '\nUsing pkg-config for %s... ' % name )
75 ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0]
76 context.Result( ret )
77 if ret:
78 context.env.ParseConfig('pkg-config --cflags --libs \'%s\'' % name)
79 return int(ret)
81 def CheckPKG(context, name):
82 context.Message( 'Checking for %s... ' % name )
83 if platform.system().lower() == 'windows':
84 return 0
85 ret = 1
86 if not CheckFramework(context, name):
87 if not ConfigPKG(context, name.lower()):
88 ret = CheckLib(context, name)
90 context.Result(ret)
91 return int(ret)
95 def CheckSDL(context, version):
96 context.Message( 'Checking for sdl lib version > %s... ' % version)
97 if platform.system().lower() == 'windows':
98 return 1
99 sdl_config = context.env.WhereIs('sdl-config')
100 if sdl_config == None:
101 ret = 0
102 else:
103 found_ver = os.popen('sdl-config --version').read().strip()
104 required = [int(n) for n in version.split(".")]
105 found = [int(n) for n in found_ver.split(".")]
106 ret = (found >= required)
108 context.Result(ret)
109 if ret:
110 context.env.ParseConfig('sdl-config --cflags --libs')
111 return int(ret)
113 def CheckPortaudio(context, version):
114 found = 0
115 if CheckPKG(context, 'portaudio'):
116 context.Message( 'Checking for lib portaudio version > %s... ' % version)
117 found = context.TryRun("""
118 #include <portaudio.h>
119 #include <stdio.h>
120 int main(int argc, char **argv) {
121 printf("%d", Pa_GetVersion());
122 return 0;
124 """, '.c')[1]
126 if found:
127 ret = (version <= found)
128 else:
129 ret = 0
131 context.Result(ret)
132 return int(ret)
136 def GenerateRevFile(flavour, template, output):
138 try:
139 svnrev = os.popen('svnversion .').read().strip().split(':')[0]
140 except:
141 svnrev = ""
143 revstr = svnrev + "-" + flavour
144 tmpstr = open(template, "r").read().replace("$WCMODS?$WCREV$M:$WCREV$$",revstr)
145 outfile = open(output, 'w')
146 outfile.write(tmpstr +"\n")
147 outfile.close()
149 return revstr