Exemplo n.º 1
0
def defineBuildEnvironment():
    """ create a custom build environment,
        define the basic compiler and linker flags,
        define locations in source and target tree,
        parse the commandline and pick up options
    """
    EnsureSConsVersion(2,0)
    EnsurePythonVersion(2,6)
    Decider('MD5-timestamp')  # detect changed files by timestamp, then do a MD5
    
    buildVars = Variables([OPTCACHE, CUSTOPTFILE])
    Options.defineCmdlineVariables(buildVars)
    env = LumieraEnvironment(buildSetup, buildVars)
    
    env.Replace( CPPPATH   =["#src"]    # used to find includes, "#" means always absolute to build-root
               , CPPDEFINES=['LUMIERA_VERSION='+VERSION ]    # note: it's a list to append further defines
               , CCFLAGS='-Wall -Wextra -Wformat-security'
               , CXXFLAGS='-std=gnu++14 -Wno-enum-compare -Wno-noexcept-type'
               , CFLAGS='-std=gnu99' 
               )
    env.Append(LINKFLAGS='-Wl,--no-undefined')  # require every dependency is given on link, in the right order
    env.Append(LINKFLAGS='-Wl,--as-needed')     # by default only link against dependencies actually needed to resolve symbols 
    handleVerboseMessages(env)
    handleNoBugSwitches(env)
    
    env.Append(CPPDEFINES = '_GNU_SOURCE')
    appendCppDefine(env,'DEBUG','DEBUG', 'NDEBUG')
#   appendCppDefine(env,'OPENGL','USE_OPENGL')
    appendVal(env,'ARCHFLAGS','CCFLAGS')   # for both C and C++
    appendVal(env,'OPTIMIZE', 'CCFLAGS',   val=' -O3')
    appendVal(env,'DEBUG',    'CCFLAGS',   val=' -ggdb')
    
    # setup search path for Lumiera plugins
    appendCppDefine(env,'PKGLIBDIR','LUMIERA_PLUGIN_PATH=\\"$PKGLIBDIR/:ORIGIN/modules\\"'
                                   ,'LUMIERA_PLUGIN_PATH=\\"ORIGIN/modules\\"') 
    appendCppDefine(env,'PKGDATADIR','LUMIERA_CONFIG_PATH=\\"$PKGLIBDIR/:.\\"'
                                    ,'LUMIERA_CONFIG_PATH=\\"$DESTDIR/share/lumiera/:.\\"') 
    
    Options.prepareOptionsHelp(buildVars,env)
    buildVars.Save(OPTCACHE, env)
    return env