diff -up boswars/SConstruct.orig boswars/SConstruct --- boswars/SConstruct.orig 2019-02-18 13:24:41.686792985 +0100 +++ boswars/SConstruct 2019-02-18 13:25:32.790212451 +0100 @@ -81,63 +81,6 @@ def buildSourcesList(builddir): return sources sourcesEngine = buildSourcesList('build') -def ParseConfig(env, command, function=None): - import subprocess - - """ - Copied from the scons, copyright 2001-2004 The SCons Foundation. - Adapted by Francois Beerten to use the exit value of pkg-config. - """ - # the default parse function - def parse_conf(env, output): - flags = { - 'ASFLAGS' : [], - 'CCFLAGS' : [], - 'CPPFLAGS' : [], - 'CPPPATH' : [], - 'LIBPATH' : [], - 'LIBS' : [], - 'LINKFLAGS' : [], - } - static_libs = [] - - params = output.split() - for arg in params: - if arg[0] != '-': - static_libs.append(arg) - elif arg[:2] == '-L': - flags['LIBPATH'].append(arg[2:]) - elif arg[:2] == '-l': - flags['LIBS'].append(arg[2:]) - elif arg[:2] == '-I': - flags['CPPPATH'].append(arg[2:]) - elif arg[:4] == '-Wa,': - flags['ASFLAGS'].append(arg) - elif arg[:4] == '-Wl,': - flags['LINKFLAGS'].append(arg) - elif arg[:4] == '-Wp,': - flags['CPPFLAGS'].append(arg) - elif arg == '-pthread': - flags['CCFLAGS'].append(arg) - flags['LINKFLAGS'].append(arg) - else: - flags['CCFLAGS'].append(arg) - apply(env.Append, (), flags) - return static_libs - - if function is None: - function = parse_conf - if type(command) is type(""): - command = [env.subst(i) for i in command.split()] - p = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - read,_ = p.communicate() - exitcode = p.wait() - if exitcode == 0: - return (0, function(env, read)) - else: - return (exitcode, []) - def CheckOpenGL(env, conf): opengl = {} opengl['linux'] = { @@ -169,12 +169,7 @@ def CheckOpenGL(env, conf): return True def CheckLuaLib(env, conf): - if not 'USE_WIN32' in env['CPPDEFINES']: - if env.WhereIs('pkg-config'): - for packagename in ['lua-5.1', 'lua51', 'lua']: - exitcode,_ = ParseConfig(env, 'pkg-config --cflags --libs ' + packagename) - if exitcode == 0: - break + env.ParseConfig('pkg-config --cflags --libs lua-5.1') if conf.CheckLibWithHeader('lua-5.1', 'lua.h', 'c'): return 1 if conf.CheckLibWithHeader('lua5.1', 'lua.h', 'c'): @@ -185,22 +127,34 @@ def CheckLuaLib(env, conf): def AutoConfigure(env): conf = Configure(env) + ## Ensure all these are in the env dict, to avoid key errors later + flags = { + 'ASFLAGS' : [], + 'CCFLAGS' : [], + 'CPPFLAGS' : [], + 'CPPPATH' : [], + 'LIBPATH' : [], + 'LIBS' : [], + 'LINKFLAGS' : [], + } + env.Append(*(), **flags) + ## check for required libs ## if not conf.CheckLibWithHeader('png', 'png.h', 'c'): - print 'Did not find png library or headers, exiting!' + print('Did not find png library or headers, exiting!') Exit(1) if not conf.CheckLibWithHeader('z', 'zlib.h', 'c'): - print 'Did not find the zlib library or headers, exiting!' + print('Did not find the zlib library or headers, exiting!') Exit(1) if not 'USE_WIN32' in env['CPPDEFINES'] and not sys.platform.startswith('freebsd'): if not conf.CheckLib('dl'): - print 'Did not find dl library or header which is needed on some systems for lua. Exiting!' + print('Did not find dl library or header which is needed on some systems for lua. Exiting!') Exit(1) if not CheckLuaLib(env, conf): - print 'Did not find required lua library. Exiting!' + print('Did not find required lua library. Exiting!') Exit(1) if not CheckOpenGL(env, conf): - print 'Did not find required OpenGL library. Exiting!' + print('Did not find required OpenGL library. Exiting!') Exit(1) # Check for optional libraries # @@ -232,7 +232,7 @@ def AutoConfigure(env): env.ParseConfig('sdl-config --libs') if sys.platform != "darwin" and not '-Dmain=SDL_main' in env['CCFLAGS']: if not conf.CheckLibWithHeader('SDL', 'SDL.h', 'c'): - print 'Did not find SDL library or headers, exiting!' + print('Did not find SDL library or headers, exiting!') Exit(1) env = conf.Finish() @@ -245,14 +245,14 @@ def AutoConfigureIfNeeded(env, name): # Remove outdated cache file os.remove(cachename) if optionsChanged or not os.path.exists(cachename): - print cachename + " doesn't exist or out of date." - print "Generating new build config cache ..." + print(cachename + " doesn't exist or out of date.") + print("Generating new build config cache ...") cache = DefineOptions(cachename, {}) AutoConfigure(env) cache.Save(cachename, env) else: cache = DefineOptions(cachename, {}) - print "Using " + cachename + print("Using " + cachename) cache.Update(env) AutoConfigureIfNeeded(env, '') @@ -262,7 +262,7 @@ if sys.platform.startswith('linux') or s def DefineVariant(venv, v, vv = None): if vv == None: vv = '-' + v - BuildDir('build/' + v, engineSourceDir, duplicate = 0) + VariantDir('build/' + v, engineSourceDir, duplicate = 0) r = venv.Program('build/boswars' + vv, buildSourcesList('build/' + v)) Alias(v, 'boswars' + vv) return r