Beispiel #1
0
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
Beispiel #2
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
Beispiel #3
0
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
Beispiel #4
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
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
Beispiel #13
0
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
Beispiel #14
0
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
Beispiel #15
0
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
Beispiel #16
0
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
Beispiel #17
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
Beispiel #18
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
Beispiel #19
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
Beispiel #20
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
Beispiel #21
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
Beispiel #22
0
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
Beispiel #23
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
Beispiel #24
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
Beispiel #25
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
Beispiel #26
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
Beispiel #27
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
Beispiel #28
0
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
Beispiel #29
0
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
Beispiel #30
0
 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))
Beispiel #31
0
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
Beispiel #32
0
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
Beispiel #33
0
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
Beispiel #34
0
        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>
Beispiel #35
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
Beispiel #36
0
            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))