Support building multiple DXX configurations at once

This commit is contained in:
Kp 2013-05-05 23:12:52 +00:00
parent 3ea05cf282
commit 1fb458fcf5

View file

@ -10,7 +10,12 @@ class argumentIndirection:
self.prefix = prefix
self.ARGUMENTS = ARGUMENTS
def get(self,name,value=None):
return self.ARGUMENTS.get('%s_%s' % (self.prefix, name), self.ARGUMENTS.get(name,value))
for p in self.prefix:
try:
return self.ARGUMENTS['%s_%s' % (p, name)]
except KeyError:
pass
return self.ARGUMENTS.get(name,value)
# endianess-checker
def checkEndian():
@ -307,7 +312,7 @@ class DXXArchive(DXXCommon):
target = 'dxx-common'
# Use a prefix of "common" since that is the source directory
# governed by these arguments.
ARGUMENTS = argumentIndirection('common')
ARGUMENTS = argumentIndirection(['common'])
__objects_common = DXXCommon.create_lazy_object_property([os.path.join(srcdir, f) for f in [
'2d/2dsline.c',
'2d/bitblt.c',
@ -677,7 +682,9 @@ class D1XProgram(DXXProgram):
PROGRAM_NAME = 'D1X-Rebirth'
target = 'd1x-rebirth'
srcdir = 'd1x-rebirth'
ARGUMENTS = argumentIndirection('d1x')
def __init__(self,prefix):
self.ARGUMENTS = argumentIndirection(prefix)
DXXProgram.__init__(self)
def prepare_environment(self):
DXXProgram.prepare_environment(self)
# Flags and stuff for all platforms...
@ -771,7 +778,9 @@ class D2XProgram(DXXProgram):
PROGRAM_NAME = 'D2X-Rebirth'
target = 'd2x-rebirth'
srcdir = 'd2x-rebirth'
ARGUMENTS = argumentIndirection('d2x')
def __init__(self,prefix):
self.ARGUMENTS = argumentIndirection(prefix)
DXXProgram.__init__(self)
def prepare_environment(self):
DXXProgram.prepare_environment(self)
# Flags and stuff for all platforms...
@ -868,12 +877,21 @@ class D2XProgram(DXXProgram):
def register_program(self):
self._register_program('d2x')
program_d1x = None
program_d2x = None
if int(ARGUMENTS.get('d1x', 1)):
program_d1x = D1XProgram()
if int(ARGUMENTS.get('d2x', 1)):
program_d2x = D2XProgram()
def register_program(s,program):
l = [v for (k,v) in ARGLIST if k == s] or [1]
# Fallback case: build the regular configuration.
if len(l) == 1:
try:
if int(l[0]):
program([s])
return
except ValueError:
# If not an integer, treat this as a configuration profile.
pass
for e in l:
program(e.split(','))
register_program('d1x', D1XProgram)
register_program('d2x', D2XProgram)
# show some help when running scons -h
Help('DXX-Rebirth, SConstruct file help:' +