def checkAllegro5(context): context.Message("Checking for Allegro 5 ... ") tmp = context.env.Clone() env = context.env def find(version): context.Message(str(version)) try: def make(name): return '%s-%s' % (name, version) libraries = [make('allegro'), make('allegro_ttf'), make('allegro_memfile'), make('allegro_image'), make('allegro_primitives'), make('allegro_audio'), make('allegro_acodec')] utils.safeParseConfig(env, 'pkg-config %s --cflags --libs' % ' '.join(libraries)) env.Append(CPPDEFINES = ['USE_ALLEGRO5']) context.Message('found version %s' % version) return True except Exception: return False try: ok = 0 # if find(5.1) or find(5.0): if find(5.1): ok = 1 context.Result(utils.colorResult(ok)) return ok except: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0
def checkStaticZ(context): context.Message("Checking for static z... ") tmp = context.env.Clone() env = context.env (ok, stuff) = context.TryAction(Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'pkg-config zlib --cflags') # Strip off the -L part libdir = utils.readExec( 'pkg-config zlib --libs-only-L')[2:].rstrip() # Hack to hardcode these libraries zlib = env.Install('misc', "%s/libz.a" % libdir) env.Append(LIBS=[zlib]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 # FIXME: write proper test ret = context.TryLink( """ int main(int argc, char ** argv){ return 0; } """, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkStaticSDL(context): context.Message("Checking for static SDL... ") env = context.env try: utils.safeParseConfig(env, 'sdl-config --static-libs --cflags') env.Append(CPPDEFINES = ['USE_SDL']) except Exception: context.Result(utils.colorResult(0)) return 0 if False: sdl = env.Install('misc', readExec('sdl-config --prefix') + '/lib/libSDL.a') env.Append(LIBS = [sdl]) utils.safeParseConfig(env, 'sdl-config --cflags') env.Append(CPPDEFINES = ['USE_SDL']) if isOSX() or isOSX104(): def framework(x): return "-framework %s" % x frameworks = Split(""" Cocoa Carbon IOKit System CoreAudio AudioUnit AudioToolbox QuickTime OpenGL """) # env.Append(LINKFLAGS = map(framework, frameworks)) env.Append(FRAMEWORKS = frameworks) context.Result(utils.colorResult(1)) return 1
def checkStaticZ(context): context.Message("Checking for static z... ") tmp = context.env.Clone() env = context.env (ok, stuff) = context.TryAction(Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'pkg-config zlib --cflags') # Strip off the -L part libdir = utils.readExec('pkg-config zlib --libs-only-L')[2:].rstrip() # Hack to hardcode these libraries zlib = env.Install('misc', "%s/libz.a" % libdir) env.Append(LIBS = [zlib]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 # FIXME: write proper test ret = context.TryLink(""" int main(int argc, char ** argv){ return 0; } """, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkMpg123(context): context.Message("Checking for libmpg123... ") tmp = context.env.Clone() env = context.env env['HAVE_MP3_MPG123'] = True env.Append(CPPDEFINES = ['HAVE_MP3_MPG123']) (ok, stuff) = context.TryAction(env.Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env,'pkg-config libmpg123 --libs --cflags') except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 ret = context.TryLink(""" #include <mpg123.h> int main(int argc, char ** argv){ int err = mpg123_init(); if (err == MPG123_OK){ return 0; } return 1; } """, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkPthreads(context): context.Message("Checking for threads... ") if utils.useAndroid() or utils.useAndroidX86(): context.Message(" android threads") context.Result(utils.colorResult(1)) return 1 if utils.useAllegro(): env = context.env env.Append(LIBS = ['pthread']) context.Message(" pthreads") context.Result(utils.colorResult(1)) return 1 if utils.useAllegro5(): env = context.env env.Append(LIBS = ['pthread']) context.Message(' pthreads') context.Result(utils.colorResult(1)) return 1 if utils.useSDL(): # context.Message(" SDL threads") env = context.env env.Append(LIBS = ['pthread']) context.Message(' pthreads') context.Result(utils.colorResult(1)) return 1 context.Message(" defaulting to pthreads") context.Result(utils.colorResult(1)) return 1
def checkStaticRuby(context): context.Message("Checking if ruby is statically embeddable... ") if not canRunRuby(context): context.Result(utils.colorResult(0)) return 0 tmp = context.env.Clone() env = context.env env.Append(CPPDEFINES = ['HAVE_RUBY']) env.Append(CPPPATH = [rubyDir()]) old_libs = env['LIBS'] env.Replace(LIBS = [rubyStaticLib(), 'crypt', 'pthread', 'm', 'dl']) ret = context.TryLink(""" #include <ruby.h> int main(int argc, char ** argv){ ruby_init(); return 0; } """, ".c") env.Replace(LIBS = old_libs + [rubyLib()]) if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkRunRuby(context): # just fail for now context.Result(utils.colorResult(0)) return 0 context.Message("Checking if we can run ruby... ") (ok, stuff) = context.TryAction(Action("ruby -v")) context.Result(utils.colorResult(ok)) return ok
def checkStaticSDL(context): context.Message("Checking for static SDL... ") env = context.env try: utils.safeParseConfig(env, 'sdl-config --static-libs --cflags') env.Append(CPPDEFINES=['USE_SDL']) # FIXME: move sdl main to a new check env.Append(CPPDEFINES=['USE_SDL_MAIN']) except Exception: context.Result(utils.colorResult(0)) return 0 context.Result(utils.colorResult(1)) return 1
def checkStaticSDL(context): context.Message("Checking for static SDL... ") env = context.env try: utils.safeParseConfig(env, 'sdl-config --static-libs --cflags') env.Append(CPPDEFINES = ['USE_SDL']) # FIXME: move sdl main to a new check env.Append(CPPDEFINES = ['USE_SDL_MAIN']) except Exception: context.Result(utils.colorResult(0)) return 0 context.Result(utils.colorResult(1)) return 1
def checkStaticOgg(context): context.Message("Checking for static ogg and vorbis... ") tmp = context.env.Clone() env = context.env env['HAVE_OGG'] = True env.Append(CPPDEFINES=['HAVE_OGG']) (ok, stuff) = context.TryAction(Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'pkg-config vorbisfile --cflags') # Strip off the -L part libdir = utils.readExec( 'pkg-config vorbisfile --libs-only-L')[2:].rstrip() # Hack to hardcode these libraries vorbisfile = env.Install('misc', "%s/libvorbisfile.a" % libdir) ogg = env.Install('misc', "%s/libogg.a" % libdir) vorbis = env.Install('misc', "%s/libvorbis.a" % libdir) env.Append(LIBS=[vorbisfile, ogg, vorbis]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 main = 'int main(int argc, char ** argv)' try: if env['HAVE_SDL_MAIN']: main = 'int SDL_main(int argc, char ** argv)' except KeyError: pass ret = context.TryLink( """ #include <vorbis/vorbisfile.h> #include <stdio.h> %(main)s { OggVorbis_File ovf; FILE * f; ov_open_callbacks(f, &ovf, 0, 0, OV_CALLBACKS_DEFAULT); return 0; } """ % {'main': main}, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkCXX11(context): context.Message("Checking if cxx11 is supported by the compiler...") tmp = context.env.Clone() env = context.env env.Append(CPPDEFINES = ['HAVE_CXX11']) env.Append(CXXFLAGS = ['-std=c++11']) ret = context.TryLink(""" #if __cplusplus <= 199711L #error Not supported #endif int main(int argc, char ** argv){ return 0; } """, '.cpp') if not ret: context.sconf.env['HAVE_CXX11'] = False context.sconf.env = tmp else: context.sconf.env['HAVE_CXX11'] = True context.Result(utils.colorResult(ret)) return ret
def checkSDLMain(context): context.Message("Checking for SDL main... ") tmp = context.env.Clone() env = context.env env['HAVE_SDL_MAIN'] = False ok = False if utils.useAndroid(): ok = True else: ok = context.TryLink(""" #include <SDL.h> int SDL_main(int argc, char ** argv){ return 0; } """, ".c") if not ok: context.sconf.env = tmp else: env.Append(CPPDEFINES = ['USE_SDL_MAIN']) env['HAVE_SDL_MAIN'] = True context.Result(utils.colorResult(ok)) return ok
def checkAllegro4(context): context.Message("Checking for Allegro4... ") def testAllegro(context): return context.TryLink(""" #include <allegro.h> int main(int argc, char ** argv){ install_allegro(0, NULL, NULL); return 0; } END_OF_MAIN() """, ".c") # use pkg-config def allegro44(context): tmp = context.env.Clone() env = context.env ok = 1 try: utils.safeParseConfig(env, 'pkg-config allegro --cflags --libs') env.Append(CPPDEFINES = ['USE_ALLEGRO']) ok = testAllegro(context) except OSError: ok = 0 if not ok: context.sconf.env = tmp else: context.Message('found 4.4') return ok # use allegro-config def allegro42(context): tmp = context.env.Clone() env = context.env ok = 1 try: def enableAllegro(env2): utils.safeParseConfig(env2, 'allegro-config --cflags --libs') env2.Append(CPPDEFINES = ['USE_ALLEGRO']) utils.safeParseConfig(env, 'allegro-config --cflags --libs') env['paintown_enableAllegro'] = enableAllegro env.Append(CPPDEFINES = ['USE_ALLEGRO']) ok = testAllegro(context) except OSError: ok = 0 if not ok: context.sconf.env = tmp else: context.Message('found 4.2') return ok ok = allegro44(context) or allegro42(context) context.Result(utils.colorResult(ok)) return ok
def checkAllegro5(debug): use_debug = [""] if debug: use_debug[0] = "-debug" def make(context): context.Message("Checking for Allegro 5 ... ") tmp = context.env.Clone() env = context.env def find(version): context.Message(str(version)) try: def make(name): return '%s%s-%s' % (name, use_debug[0], version) libraries = [make('allegro'), make('allegro_ttf'), make('allegro_memfile'), make('allegro_image'), make('allegro_primitives'), make('allegro_audio'), make('allegro_acodec')] utils.safeParseConfig(env, 'pkg-config %s --cflags --libs' % ' '.join(libraries)) env.Append(CPPDEFINES = ['USE_ALLEGRO5']) context.Message('found version %s ' % version) return True except Exception, e: print e return False failure = None try: ok = 0 # if find(5.1) or find(5.0): if find(5): ok = 1 else: failure = "Install Allegro5. http://liballeg.org" ok = 0 raise Exception() ok = context.TryCompile(""" #include <allegro5/allegro.h> #if defined(ALLEGRO_VERSION) && defined(ALLEGRO_SUB_VERSION) && ALLEGRO_VERSION == 5 && ALLEGRO_SUB_VERSION >= 1 #else #error fail #endif int main(int argc, char ** argv){ } """, ".cpp") if ok == 0: failure = "Allegro5 version is too old. Install 5.1 or greater" raise Exception() ok = 1 except: context.sconf.env = tmp context.Result(utils.colorResult(ok)) if failure != None: print failure return ok
def checkStaticOgg(context): context.Message("Checking for static ogg and vorbis... ") tmp = context.env.Clone() env = context.env env['HAVE_OGG'] = True env.Append(CPPDEFINES = ['HAVE_OGG']) (ok, stuff) = context.TryAction(Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'pkg-config vorbisfile --cflags') # Strip off the -L part libdir = utils.readExec('pkg-config vorbisfile --libs-only-L')[2:].rstrip() # Hack to hardcode these libraries vorbisfile = env.Install('misc', "%s/libvorbisfile.a" % libdir) ogg = env.Install('misc', "%s/libogg.a" % libdir) vorbis = env.Install('misc', "%s/libvorbis.a" % libdir) env.Append(LIBS = [vorbisfile, ogg, vorbis]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 main = 'int main(int argc, char ** argv)' try: if env['HAVE_SDL_MAIN']: main = 'int SDL_main(int argc, char ** argv)' except KeyError: pass ret = context.TryLink(""" #include <vorbis/vorbisfile.h> #include <stdio.h> %(main)s { OggVorbis_File ovf; FILE * f; ov_open_callbacks(f, &ovf, 0, 0, OV_CALLBACKS_DEFAULT); return 0; } """ % {'main' : main}, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkStaticPng(context): context.Message("Checking for static png... ") tmp = context.env.Clone() env = context.env try: utils.safeParseConfig(env, 'libpng-config --cflags') libdir = utils.readExec('libpng-config --libdir') # Hack to hardcode these libraries png = env.Install('misc', '%s/libpng.a' % libdir) env.Append(LIBS=[png]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 except Exception, e: print e context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0
def checkStaticPng(context): context.Message("Checking for static png... ") tmp = context.env.Clone() env = context.env try: utils.safeParseConfig(env, 'libpng-config --cflags') libdir = utils.readExec('libpng-config --libdir') # Hack to hardcode these libraries png = env.Install('misc', '%s/libpng.a' % libdir) env.Append(LIBS = [png]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 except Exception, e: print e context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0
def checkPython(context): import distutils.sysconfig import utils context.Message("Checking if python is embeddable... ") include_path = distutils.sysconfig.get_config_var('INCLUDEPY') link_stuff = distutils.sysconfig.get_config_var('LINKFORSHARED') # libs = distutils.sysconfig.get_config_var('LDLIBRARY') libs = distutils.sysconfig.get_config_var('LIBRARY') lib_path = distutils.sysconfig.get_config_var('LIBP') # hacks for windows because distutils is broken if libs == None and isWindows(): libs = ['python26'] if lib_path == None and isWindows(): import os lib_path = os.path.join(os.path.dirname(include_path), 'libs') # hacks for osx because distutils doesn't quote things if utils.isOSX() or utils.isOSX104(): import re f = re.compile( '(-framework System Python.framework/Versions/.*/Python)') link_stuff = re.sub(f, r"'\1'", link_stuff) tmp = context.env.Clone() env = context.env if include_path != None: env.Append(CPPPATH=[include_path]) if link_stuff != None: env.Append(LINKFLAGS=link_stuff.split(' ')) if lib_path != None: env.Append(LIBPATH=[lib_path]) new_libs = [] if libs != None: new_libs = libs old_libs = env['LIBS'] env.Replace(LIBS=new_libs) env.Append(CPPDEFINES=['HAVE_PYTHON']) ret = context.TryLink( """ #include <Python.h> int main(int argc, char *argv[]) { Py_Initialize(); return 0; } """, ".c") env.Append(LIBS=old_libs) if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkRTTI(context): global rtti_counter rtti_counter += 1 context.Message("Checking if we need rtti... ") tmp = context.env.Clone() env = context.env env.Append(CXXFLAGS=['-fno-rtti']) ret = context.TryCompile( """ #include <exception> int main(int argc, char ** argv){ extern void foo(); try{ foo(); } catch (const std::exception & e){ return 1; } return 0; } """, ".cpp") s1 = context.lastTarget ret = context.TryCompile( """ #include <exception> void foo(){ throw std::exception(); } """, ".cpp") s2 = context.lastTarget result = None spawn = context.sconf.env['SPAWN'] try: context.sconf.env['SPAWN'] = context.sconf.pspawn_wrapper nodes = env.Program( context.sconf.confdir.File('rtti%d' % rtti_counter), [s1, s2]) result = context.sconf.BuildNodes(nodes) except Exception: result = False context.sconf.env['SPAWN'] = spawn foo = 0 if not result: context.sconf.env = tmp foo = 1 context.Result(utils.colorResult(foo)) return foo
def checkPython(context): import distutils.sysconfig import utils context.Message("Checking if python is embeddable... ") include_path = distutils.sysconfig.get_config_var('INCLUDEPY') link_stuff = distutils.sysconfig.get_config_var('LINKFORSHARED') # libs = distutils.sysconfig.get_config_var('LDLIBRARY') libs = distutils.sysconfig.get_config_var('LIBRARY') lib_path = distutils.sysconfig.get_config_var('LIBP') # hacks for windows because distutils is broken if libs == None and isWindows(): libs = ['python26'] if lib_path == None and isWindows(): import os lib_path = os.path.join(os.path.dirname(include_path),'libs') # hacks for osx because distutils doesn't quote things if utils.isOSX() or utils.isOSX104(): import re f = re.compile('(-framework System Python.framework/Versions/.*/Python)') link_stuff = re.sub(f, r"'\1'", link_stuff) tmp = context.env.Clone() env = context.env if include_path != None: env.Append(CPPPATH = [include_path]) if link_stuff != None: env.Append(LINKFLAGS = link_stuff.split(' ')) if lib_path != None: env.Append(LIBPATH = [lib_path]) new_libs = [] if libs != None: new_libs = libs old_libs = env['LIBS'] env.Replace(LIBS = new_libs) env.Append(CPPDEFINES = ['HAVE_PYTHON']) ret = context.TryLink(""" #include <Python.h> int main(int argc, char *argv[]) { Py_Initialize(); return 0; } """, ".c"); env.Append(LIBS = old_libs) if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkAllegro5(context): context.Message("Checking for Allegro 5 ... ") tmp = context.env.Clone() env = context.env def find(version): context.Message(str(version)) try: def make(name): return '%s-%s' % (name, version) libraries = [ make('allegro'), make('allegro_ttf'), make('allegro_memfile'), make('allegro_image'), make('allegro_primitives'), make('allegro_audio'), make('allegro_acodec') ] utils.safeParseConfig( env, 'pkg-config %s --cflags --libs' % ' '.join(libraries)) env.Append(CPPDEFINES=['USE_ALLEGRO5']) context.Message('found version %s' % version) return True except Exception: return False try: ok = 0 # if find(5.1) or find(5.0): if find(5.1): ok = 1 context.Result(utils.colorResult(ok)) return ok except: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0
def checkNativeOgg(context): context.Message("Checking for ogg and vorbis... ") tmp = context.env.Clone() env = context.env env['HAVE_OGG'] = True env.Append(CPPDEFINES=['HAVE_OGG']) (ok, stuff) = context.TryAction(env.Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'pkg-config vorbisfile --libs --cflags') except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 main = 'int main(int argc, char ** argv)' try: if env['HAVE_SDL_MAIN']: main = 'int SDL_main(int argc, char ** argv)' except KeyError: pass ret = context.TryLink( """ #include <vorbis/vorbisfile.h> #include <stdio.h> %(main)s { OggVorbis_File ovf; FILE * f; ov_open_callbacks(f, &ovf, 0, 0, OV_CALLBACKS_DEFAULT); return 0; } """ % {'main': main}, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkNativeOgg(context): context.Message("Checking for ogg and vorbis... ") tmp = context.env.Clone() env = context.env env['HAVE_OGG'] = True env.Append(CPPDEFINES = ['HAVE_OGG']) (ok, stuff) = context.TryAction(env.Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'pkg-config vorbisfile --libs --cflags') except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 main = 'int main(int argc, char ** argv)' try: if env['HAVE_SDL_MAIN']: main = 'int SDL_main(int argc, char ** argv)' except KeyError: pass ret = context.TryLink(""" #include <vorbis/vorbisfile.h> #include <stdio.h> %(main)s { OggVorbis_File ovf; FILE * f; ov_open_callbacks(f, &ovf, 0, 0, OV_CALLBACKS_DEFAULT); return 0; } """ % {'main' : main}, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkStaticFreetype(context): context.Message("Checking for static freetype... ") tmp = context.env.Clone() env = context.env (ok, stuff) = context.TryAction(Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'freetype-config --cflags') # Strip off the -L part libdir = findLibDir(utils.readExec('freetype-config --libs')) # Hack to hardcode these libraries freetype = env.Install('misc', '%s/libfreetype.a' % libdir) env.Append(LIBS=[freetype]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 except Exception, e: print e context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0
def checkStaticFreetype(context): context.Message("Checking for static freetype... ") tmp = context.env.Clone() env = context.env (ok, stuff) = context.TryAction(Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'freetype-config --cflags') # Strip off the -L part libdir = findLibDir(utils.readExec('freetype-config --libs')) # Hack to hardcode these libraries freetype = env.Install('misc', '%s/libfreetype.a' % libdir) env.Append(LIBS = [freetype]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 except Exception, e: print e context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0
def checkRTTI(context): global rtti_counter rtti_counter += 1 context.Message("Checking if we need rtti... ") tmp = context.env.Clone() env = context.env env.Append(CXXFLAGS = ['-fno-rtti']) ret = context.TryCompile(""" #include <exception> int main(int argc, char ** argv){ extern void foo(); try{ foo(); } catch (const std::exception & e){ return 1; } return 0; } """, ".cpp") s1 = context.lastTarget ret = context.TryCompile(""" #include <exception> void foo(){ throw std::exception(); } """, ".cpp") s2 = context.lastTarget result = None spawn = context.sconf.env['SPAWN'] try: context.sconf.env['SPAWN'] = context.sconf.pspawn_wrapper nodes = env.Program(context.sconf.confdir.File('rtti%d' % rtti_counter), [s1,s2]) result = context.sconf.BuildNodes(nodes) except Exception: result = False context.sconf.env['SPAWN'] = spawn foo = 0 if not result: context.sconf.env = tmp foo = 1 context.Result(utils.colorResult(foo)) return foo
def checkStaticMpg123(context): context.Message("Checking for static libmpg123... ") tmp = context.env.Clone() env = context.env env['HAVE_MP3_MPG123'] = True env.Append(CPPDEFINES=['HAVE_MP3_MPG123']) (ok, stuff) = context.TryAction(Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'pkg-config libmpg123 --cflags') # Strip off the -L part libdir = utils.readExec( 'pkg-config libmpg123 --libs-only-L')[2:].rstrip() # Hack to hardcode these libraries mpg123 = env.Install('misc', "%s/libmpg123.a" % libdir) env.Append(LIBS=[mpg123]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 ret = context.TryLink( """ #include <mpg123.h> int main(int argc, char ** argv){ int err = mpg123_init(); if (err == MPG123_OK){ return 0; } return 1; } """, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkStaticMpg123(context): context.Message("Checking for static libmpg123... ") tmp = context.env.Clone() env = context.env env['HAVE_MP3_MPG123'] = True env.Append(CPPDEFINES = ['HAVE_MP3_MPG123']) (ok, stuff) = context.TryAction(Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env,'pkg-config libmpg123 --cflags') # Strip off the -L part libdir = utils.readExec('pkg-config libmpg123 --libs-only-L')[2:].rstrip() # Hack to hardcode these libraries mpg123 = env.Install('misc', "%s/libmpg123.a" % libdir) env.Append(LIBS = [mpg123]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0)) return 0 ret = context.TryLink(""" #include <mpg123.h> int main(int argc, char ** argv){ int err = mpg123_init(); if (err == MPG123_OK){ return 0; } return 1; } """, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def prefix(env): # Check install prefix context.Message('Checking if install prefix set ... ') ok = False try: import os if os.environ['PREFIX'] == '': raise KeyError elif os.environ['PREFIX']: env.installPrefix = os.environ['PREFIX'] context.Message('set to [{0}]'.format(env.installPrefix)) ok = True except KeyError: env.installPrefix = '/usr/local' context.Message('defaulting to [{0}]'.format(env.installPrefix)) context.Result(utils.colorResult(ok))
def checkMad(context): context.Message("Checking for libmad... ") tmp = context.env.Clone() env = context.env env['HAVE_MP3_MAD'] = True env.Append(CPPDEFINES=['HAVE_MP3_MAD']) def tryPkgConfig(): (ok, stuff) = context.TryAction(env.Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'pkg-config mad --libs --cflags') return True except OSError: # context.sconf.env = tmp # context.Result(utils.colorResult(0)) return False return False def tryLib(): env.Append(LIBS=['mad']) tryPkgConfig() or tryLib() ret = context.TryLink( """ #include <mad.h> int main(int argc, char ** argv){ struct mad_stream stream; mad_stream_init(&stream); return 0; } """, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkMad(context): context.Message("Checking for libmad... ") tmp = context.env.Clone() env = context.env env['HAVE_MP3_MAD'] = True env.Append(CPPDEFINES = ['HAVE_MP3_MAD']) def tryPkgConfig(): (ok, stuff) = context.TryAction(env.Action("pkg-config --version")) if ok: try: utils.safeParseConfig(env, 'pkg-config mad --libs --cflags') return True except OSError: # context.sconf.env = tmp # context.Result(utils.colorResult(0)) return False return False def tryLib(): env.Append(LIBS = ['mad']) tryPkgConfig() or tryLib() ret = context.TryLink(""" #include <mad.h> int main(int argc, char ** argv){ struct mad_stream stream; mad_stream_init(&stream); return 0; } """, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret
def checkAllegro4(context): context.Message("Checking for Allegro4... ") def testAllegro(context): return context.TryLink( """ #include <allegro.h> int main(int argc, char ** argv){ install_allegro(0, NULL, NULL); return 0; } END_OF_MAIN() """, ".c") # use pkg-config def allegro44(context): tmp = context.env.Clone() env = context.env ok = 1 try: utils.safeParseConfig(env, 'pkg-config allegro --cflags --libs') env.Append(CPPDEFINES=['USE_ALLEGRO']) ok = testAllegro(context) except OSError: ok = 0 if not ok: context.sconf.env = tmp else: context.Message('found 4.4') return ok # use allegro-config def allegro42(context): tmp = context.env.Clone() env = context.env ok = 1 try: def enableAllegro(env2): utils.safeParseConfig(env2, 'allegro-config --cflags --libs') env2.Append(CPPDEFINES=['USE_ALLEGRO']) utils.safeParseConfig(env, 'allegro-config --cflags --libs') env['paintown_enableAllegro'] = enableAllegro env.Append(CPPDEFINES=['USE_ALLEGRO']) ok = testAllegro(context) except OSError: ok = 0 if not ok: context.sconf.env = tmp else: context.Message('found 4.2') return ok ok = allegro44(context) or allegro42(context) context.Result(utils.colorResult(ok)) return ok
env = context.env env.Append(FRAMEWORKS = ['SDL', 'Cocoa']) env.Append(CPPDEFINES = ['USE_SDL']) env.Append(CPPPATH = ['/Library/Frameworks/SDL.framework/Headers', '/System/Library/Frameworks/Foundation.framework/Headers']) main = env.StaticLibrary('src/util/graphics/sdl/SDLMain.m') env.Append(LIBS = [main]) m = build('c') if m: return True else: context.sconf.env = tmp return False ok = int(tryNormal() or tryMoveLibs() or tryFramework()) context.Result(utils.colorResult(ok)) return ok def checkSDLMain(context): context.Message("Checking for SDL main... ") tmp = context.env.Clone() env = context.env env['HAVE_SDL_MAIN'] = False ok = False if utils.useAndroid(): ok = True else: ok = context.TryLink(""" #include <SDL.h>
return 0 # FIXME: write proper test ret = context.TryLink( """ #include <stdio.h> int main(int argc, char ** argv){ return 0; } """, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret def checkStaticPng(context): context.Message("Checking for static png... ") tmp = context.env.Clone() env = context.env try: utils.safeParseConfig(env, 'libpng-config --cflags') libdir = utils.readExec('libpng-config --libdir') # Hack to hardcode these libraries png = env.Install('misc', '%s/libpng.a' % libdir) env.Append(LIBS=[png]) except OSError: context.sconf.env = tmp
context.Result(utils.colorResult(0)) return 0 # FIXME: write proper test ret = context.TryLink(""" #include <stdio.h> int main(int argc, char ** argv){ return 0; } """, ".c") if not ret: context.sconf.env = tmp context.Result(utils.colorResult(ret)) return ret def checkStaticPng(context): context.Message("Checking for static png... ") tmp = context.env.Clone() env = context.env try: utils.safeParseConfig(env, 'libpng-config --cflags') libdir = utils.readExec('libpng-config --libdir') # Hack to hardcode these libraries png = env.Install('misc', '%s/libpng.a' % libdir) env.Append(LIBS = [png]) except OSError: context.sconf.env = tmp context.Result(utils.colorResult(0))