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