Move argument processing to table form
This commit is contained in:
parent
336bd53960
commit
d4b06ad757
89
SConstruct
89
SConstruct
|
@ -70,7 +70,6 @@ class DXXCommon(LazyObjectConstructor):
|
||||||
# Paths for the Videocore libs/includes on the Raspberry Pi
|
# Paths for the Videocore libs/includes on the Raspberry Pi
|
||||||
RPI_DEFAULT_VC_PATH='/opt/vc'
|
RPI_DEFAULT_VC_PATH='/opt/vc'
|
||||||
default_OGLES_LIB = 'GLES_CM'
|
default_OGLES_LIB = 'GLES_CM'
|
||||||
@property
|
|
||||||
def default_builddir(self):
|
def default_builddir(self):
|
||||||
builddir_prefix = self.__arguments.get('builddir_prefix')
|
builddir_prefix = self.__arguments.get('builddir_prefix')
|
||||||
builddir_suffix = self.__arguments.get('builddir_suffix')
|
builddir_suffix = self.__arguments.get('builddir_suffix')
|
||||||
|
@ -94,37 +93,80 @@ class DXXCommon(LazyObjectConstructor):
|
||||||
default_builddir += builddir_prefix
|
default_builddir += builddir_prefix
|
||||||
return default_builddir
|
return default_builddir
|
||||||
# automatic setup for raspberrypi
|
# automatic setup for raspberrypi
|
||||||
@property
|
|
||||||
def default_opengles(self):
|
def default_opengles(self):
|
||||||
if self.raspberrypi:
|
if self.raspberrypi:
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
@property
|
|
||||||
def selected_OGLES_LIB(self):
|
def selected_OGLES_LIB(self):
|
||||||
if self.raspberrypi:
|
if self.raspberrypi:
|
||||||
return 'GLESv2'
|
return 'GLESv2'
|
||||||
return self.default_OGLES_LIB
|
return self.default_OGLES_LIB
|
||||||
|
options = (
|
||||||
|
{
|
||||||
|
# Process this early since it influences later checks.
|
||||||
|
'type': int,
|
||||||
|
'arguments': (
|
||||||
|
('raspberrypi', 0),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'type': int,
|
||||||
|
'arguments': (
|
||||||
|
('debug', 0),
|
||||||
|
('profiler', 0),
|
||||||
|
('opengl', 1),
|
||||||
|
('asm', 0),
|
||||||
|
('editor', 0),
|
||||||
|
('sdlmixer', 1),
|
||||||
|
('ipv6', 0),
|
||||||
|
('use_udp', 1),
|
||||||
|
('use_tracker', 1),
|
||||||
|
('verbosebuild', 0),
|
||||||
|
('opengles', default_opengles),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'type': str,
|
||||||
|
'arguments': (
|
||||||
|
('rpi_vc_path', RPI_DEFAULT_VC_PATH),
|
||||||
|
('opengles_lib', selected_OGLES_LIB),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'type': None,
|
||||||
|
'arguments': (
|
||||||
|
('extra_version',),
|
||||||
|
('host_platform',),
|
||||||
|
# This must be last so that default_builddir will
|
||||||
|
# have access to other properties.
|
||||||
|
('builddir', default_builddir),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
)
|
||||||
def __init__(self,ARGUMENTS):
|
def __init__(self,ARGUMENTS):
|
||||||
self.__arguments = ARGUMENTS
|
self.__arguments = ARGUMENTS
|
||||||
self.debug = int(ARGUMENTS.get('debug', 0))
|
if ARGUMENTS is None:
|
||||||
self.profiler = int(ARGUMENTS.get('profiler', 0))
|
return
|
||||||
self.opengl = int(ARGUMENTS.get('opengl', 1))
|
for grp in self.options:
|
||||||
self.asm = int(ARGUMENTS.get('asm', 0))
|
wanted_type = grp.get('type')
|
||||||
self.editor = int(ARGUMENTS.get('editor', 0))
|
for o in grp['arguments']:
|
||||||
self.extra_version = ARGUMENTS.get('extra_version', None)
|
name = o[0]
|
||||||
self.sdlmixer = int(ARGUMENTS.get('sdlmixer', 1))
|
value = ARGUMENTS.get(*o)
|
||||||
self.ipv6 = int(ARGUMENTS.get('ipv6', 0))
|
if callable(value):
|
||||||
self.host_platform = ARGUMENTS.get('host_platform', None)
|
value = value(self)
|
||||||
self.use_udp = int(ARGUMENTS.get('use_udp', 1))
|
if wanted_type is not None:
|
||||||
self.use_tracker = int(ARGUMENTS.get('use_tracker', 1))
|
value = wanted_type(value)
|
||||||
self.verbosebuild = int(ARGUMENTS.get('verbosebuild', 0))
|
setattr(self, name, value)
|
||||||
self.raspberrypi = int(ARGUMENTS.get('raspberrypi', 0))
|
|
||||||
self.rpi_vc_path = str(ARGUMENTS.get('rpi_vc_path', self.RPI_DEFAULT_VC_PATH))
|
|
||||||
self.opengles = int(ARGUMENTS.get('opengles', self.default_opengles))
|
|
||||||
self.opengles_lib = str(ARGUMENTS.get('opengles_lib', self.default_OGLES_LIB))
|
|
||||||
self.builddir = ARGUMENTS.get('builddir', self.default_builddir)
|
|
||||||
if self.builddir != '' and self.builddir[-1:] != '/':
|
if self.builddir != '' and self.builddir[-1:] != '/':
|
||||||
self.builddir += '/'
|
self.builddir += '/'
|
||||||
|
def clone(self):
|
||||||
|
clone = DXXCommon.UserBuildSettings(None)
|
||||||
|
for grp in self.options:
|
||||||
|
for o in grp['arguments']:
|
||||||
|
name = o[0]
|
||||||
|
value = getattr(self, name)
|
||||||
|
setattr(clone, name, value)
|
||||||
|
return clone
|
||||||
class UserInstallSettings:
|
class UserInstallSettings:
|
||||||
def __init__(self,ARGUMENTS):
|
def __init__(self,ARGUMENTS):
|
||||||
self.DESTDIR = ARGUMENTS.get('DESTDIR')
|
self.DESTDIR = ARGUMENTS.get('DESTDIR')
|
||||||
|
@ -414,11 +456,10 @@ class DXXArchive(DXXCommon):
|
||||||
def objects_common(self):
|
def objects_common(self):
|
||||||
objects_common = self.__objects_common
|
objects_common = self.__objects_common
|
||||||
return objects_common + self.platform_settings.platform_objects
|
return objects_common + self.platform_settings.platform_objects
|
||||||
def __init__(self,builddir):
|
def __init__(self,user_settings):
|
||||||
self.PROGRAM_NAME = 'DXX-Archive'
|
self.PROGRAM_NAME = 'DXX-Archive'
|
||||||
DXXCommon.__init__(self)
|
DXXCommon.__init__(self)
|
||||||
self.user_settings = self.UserSettings(ARGUMENTS)
|
self.user_settings = user_settings.clone()
|
||||||
self.user_settings.builddir = builddir
|
|
||||||
self.check_platform()
|
self.check_platform()
|
||||||
self.prepare_environment()
|
self.prepare_environment()
|
||||||
self.check_endian()
|
self.check_endian()
|
||||||
|
@ -609,7 +650,7 @@ class DXXProgram(DXXCommon):
|
||||||
self.banner()
|
self.banner()
|
||||||
self.user_settings = self.UserSettings(self.ARGUMENTS, self.target)
|
self.user_settings = self.UserSettings(self.ARGUMENTS, self.target)
|
||||||
if not DXXProgram.static_archive_construction.has_key(self.user_settings.builddir):
|
if not DXXProgram.static_archive_construction.has_key(self.user_settings.builddir):
|
||||||
DXXProgram.static_archive_construction[self.user_settings.builddir] = DXXArchive(self.user_settings.builddir)
|
DXXProgram.static_archive_construction[self.user_settings.builddir] = DXXArchive(self.user_settings)
|
||||||
self.check_platform()
|
self.check_platform()
|
||||||
self.prepare_environment()
|
self.prepare_environment()
|
||||||
self.check_endian()
|
self.check_endian()
|
||||||
|
|
Loading…
Reference in a new issue