mirror of
https://github.com/drasko/codezero.git
synced 2026-01-14 11:53:15 +01:00
Make the coding style more consistent with PEP-8.
This commit is contained in:
214
SConstruct
214
SConstruct
@@ -45,39 +45,39 @@ cml2ConfigHeaderFile = buildDirectory + '/cml2Config.h'
|
||||
|
||||
if 'configure' in COMMAND_LINE_TARGETS :
|
||||
|
||||
def performCML2Configuration ( target , source , env ) :
|
||||
if not os.path.isdir ( buildDirectory ) : os.mkdir ( buildDirectory )
|
||||
os.system ( cml2ToolsDirectory + '/cmlcompile.py -o ' + cml2CompileRulesFile + ' ' + source[0].path )
|
||||
os.system ( cml2ToolsDirectory + '/cmlconfigure.py -c -o ' + cml2ConfigPropertiesFile + ' ' + cml2CompileRulesFile )
|
||||
os.system ( toolsDirectory + '/cml2header.py -o ' + cml2ConfigHeaderFile + ' -i ' + cml2ConfigPropertiesFile )
|
||||
def performCML2Configuration(target, source, env):
|
||||
if not os.path.isdir(buildDirectory) : os.mkdir(buildDirectory)
|
||||
os.system(cml2ToolsDirectory + '/cmlcompile.py -o ' + cml2CompileRulesFile + ' ' + source[0].path)
|
||||
os.system(cml2ToolsDirectory + '/cmlconfigure.py -c -o ' + cml2ConfigPropertiesFile + ' ' + cml2CompileRulesFile)
|
||||
os.system(toolsDirectory + '/cml2header.py -o ' + cml2ConfigHeaderFile + ' -i ' + cml2ConfigPropertiesFile)
|
||||
|
||||
if len ( COMMAND_LINE_TARGETS ) != 1 :
|
||||
if len ( COMMAND_LINE_TARGETS ) != 1:
|
||||
print '#### Warning####: configure is part of the command line, all the other targets are being ignored as this is a configure step.'
|
||||
Command ( 'configure' , [ '#configs/arm.cml' ] , performCML2Configuration )
|
||||
Clean ( 'configure' , buildDirectory )
|
||||
Command('configure', ['#configs/arm.cml'], performCML2Configuration)
|
||||
Clean('configure', buildDirectory)
|
||||
|
||||
else :
|
||||
|
||||
if not os.path.exists ( cml2ConfigPropertiesFile ) :
|
||||
if not os.path.exists(cml2ConfigPropertiesFile):
|
||||
print "####\n#### Configuration has not been undertaken, please run 'scons configure'.\n####"
|
||||
Exit ( )
|
||||
Exit()
|
||||
|
||||
########## Create the base environment and process the configuration ########################
|
||||
|
||||
def processCML2Config ( ) :
|
||||
configItems = { }
|
||||
with file ( cml2ConfigPropertiesFile ) as configFile :
|
||||
for line in configFile :
|
||||
item = line.split ( '=' )
|
||||
if len ( item ) == 2 :
|
||||
configItems[item[0].strip ( )] = ( item[1].strip ( ) == 'y' )
|
||||
def processCML2Config():
|
||||
configItems = {}
|
||||
with file(cml2ConfigPropertiesFile) as configFile:
|
||||
for line in configFile:
|
||||
item = line.split('=')
|
||||
if len(item) == 2:
|
||||
configItems[item[0].strip()] = (item[1].strip() == 'y')
|
||||
return configItems
|
||||
|
||||
baseEnvironment = Environment ( tools = [ 'gnulink' , 'gcc' , 'gas' , 'ar' ] ,
|
||||
ENV = { 'PATH' : os.environ['PATH'] } ,
|
||||
configFiles = ( '#' + cml2CompileRulesFile , '#' + cml2ConfigPropertiesFile , '#' + cml2ConfigHeaderFile ) )
|
||||
baseEnvironment = Environment(tools = ['gnulink', 'gcc', 'gas', 'ar'],
|
||||
ENV = {'PATH': os.environ['PATH']},
|
||||
configFiles = ('#' + cml2CompileRulesFile, '#' + cml2ConfigPropertiesFile, '#' + cml2ConfigHeaderFile))
|
||||
|
||||
kernelSConscriptPaths = [ 'generic' , 'api' , 'lib' ]
|
||||
kernelSConscriptPaths = ['generic', 'api', 'lib']
|
||||
|
||||
# It is assumed that the C code is assuming that the configuration file will be found at l4/config.h so create it there.
|
||||
#
|
||||
@@ -85,137 +85,137 @@ else :
|
||||
#
|
||||
# TODO: Decide if this is an issue or not.
|
||||
|
||||
configuration = Configure ( baseEnvironment , config_h = buildDirectory + '/l4/config.h' )
|
||||
configData = processCML2Config ( )
|
||||
configuration = Configure(baseEnvironment, config_h = buildDirectory + '/l4/config.h')
|
||||
configData = processCML2Config()
|
||||
arch = None
|
||||
platform = None
|
||||
subarch = None
|
||||
for key , value in configData.items ( ) :
|
||||
if value :
|
||||
items = key.split ( '_' )
|
||||
if items[0] == 'ARCH' :
|
||||
arch = items[1].lower ( )
|
||||
for key , value in configData.items ( ) :
|
||||
if value :
|
||||
items = key.split ( '_' )
|
||||
if items[0] == arch.upper ( ) :
|
||||
if items[1] == 'PLATFORM' :
|
||||
platform = items[2].lower ( )
|
||||
if items[1] == 'SUBARCH' :
|
||||
subarch = items[2].lower ( )
|
||||
if items[0] == 'DRIVER' :
|
||||
kernelSConscriptPaths.append ( 'drivers/' + ( 'irq' if items[1] == 'IRQCTRL' else items[1].lower ( ) ) + '/' + items[2].lower ( ) )
|
||||
configuration.Define ( '__ARCH__' , arch )
|
||||
configuration.Define ( '__PLATFORM__' , platform )
|
||||
configuration.Define ( '__SUBARCH__' , subarch )
|
||||
for key, value in configData.items():
|
||||
if value:
|
||||
items = key.split('_')
|
||||
if items[0] == 'ARCH':
|
||||
arch = items[1].lower()
|
||||
for key, value in configData.items():
|
||||
if value:
|
||||
items = key.split('_')
|
||||
if items[0] == arch.upper():
|
||||
if items[1] == 'PLATFORM':
|
||||
platform = items[2].lower()
|
||||
if items[1] == 'SUBARCH':
|
||||
subarch = items[2].lower()
|
||||
if items[0] == 'DRIVER':
|
||||
kernelSConscriptPaths.append('drivers/' + ('irq' if items[1] == 'IRQCTRL' else items[1].lower()) + '/' + items[2].lower())
|
||||
configuration.Define('__ARCH__', arch)
|
||||
configuration.Define('__PLATFORM__', platform)
|
||||
configuration.Define('__SUBARCH__', subarch)
|
||||
kernelSConscriptPaths += [
|
||||
'arch/' + arch ,
|
||||
'glue/' + arch ,
|
||||
'platform/' + platform ,
|
||||
'arch/' + arch + '/' + subarch ]
|
||||
'arch/' + arch,
|
||||
'glue/' + arch,
|
||||
'platform/' + platform,
|
||||
'arch/' + arch + '/' + subarch]
|
||||
configuration.env['ARCH'] = arch
|
||||
configuration.env['PLATFORM'] = platform
|
||||
configuration.env['SUBARCH'] = subarch
|
||||
baseEnvironment = configuration.Finish ( )
|
||||
baseEnvironment = configuration.Finish()
|
||||
|
||||
########## Build the libraries ########################
|
||||
|
||||
libraryEnvironment = baseEnvironment.Clone (
|
||||
CC = 'arm-none-linux-gnueabi-gcc' ,
|
||||
CCFLAGS = [ '-g' , '-nostdinc' , '-nostdlib' , '-ffreestanding' , '-std=gnu99' , '-Wall' , '-Werror' ] ,
|
||||
LINKFLAGS = [ '-nostdlib' ] ,
|
||||
LIBS = 'gcc' ,
|
||||
ARCH = arch ,
|
||||
PLATFORM = platform )
|
||||
libraryEnvironment = baseEnvironment.Clone(
|
||||
CC = 'arm-none-linux-gnueabi-gcc',
|
||||
CCFLAGS = ['-g', '-nostdinc', '-nostdlib', '-ffreestanding', '-std=gnu99', '-Wall', '-Werror'],
|
||||
LINKFLAGS = ['-nostdlib'],
|
||||
LIBS = ['gcc'],
|
||||
ARCH = arch,
|
||||
PLATFORM = platform)
|
||||
|
||||
libs = { }
|
||||
crts = { }
|
||||
for variant in [ 'baremetal' , 'userspace' ] :
|
||||
( libs[variant] , crts[variant] ) = SConscript ( 'libs/c/SConscript' , variant_dir = buildDirectory + '/lib/c/' + variant , duplicate = 0 , exports = { 'environment' : libraryEnvironment , 'variant' : variant } )
|
||||
Depends ( ( libs[variant] , crts[variant] ) , libraryEnvironment['configFiles'] )
|
||||
libs = {}
|
||||
crts = {}
|
||||
for variant in ['baremetal', 'userspace']:
|
||||
(libs[variant], crts[variant]) = SConscript('libs/c/SConscript', variant_dir = buildDirectory + '/lib/c/' + variant, duplicate = 0, exports = {'environment': libraryEnvironment, 'variant': variant})
|
||||
Depends((libs[variant], crts[variant]), libraryEnvironment['configFiles'])
|
||||
|
||||
baseEnvironment['libc'] = libs['userspace']
|
||||
baseEnvironment['crt0'] = crts['userspace']
|
||||
|
||||
libelf = SConscript ( 'libs/elf/SConscript' , variant_dir = buildDirectory + '/lib/elf' , duplicate = 0 , exports = { 'environment' : libraryEnvironment } )
|
||||
Depends ( libelf , libraryEnvironment['configFiles'] )
|
||||
libelf = SConscript('libs/elf/SConscript', variant_dir = buildDirectory + '/lib/elf', duplicate = 0, exports = {'environment': libraryEnvironment})
|
||||
Depends(libelf, libraryEnvironment['configFiles'])
|
||||
|
||||
Alias ( 'libs' , crts.values ( ) + libs.values ( ) + [ libelf ] )
|
||||
Alias('libs', crts.values() + libs.values() + [libelf])
|
||||
|
||||
########## Build the kernel ########################
|
||||
|
||||
kernelEnvironment = baseEnvironment.Clone (
|
||||
CC = 'arm-none-eabi-gcc' ,
|
||||
kernelEnvironment = baseEnvironment.Clone(
|
||||
CC = 'arm-none-eabi-gcc',
|
||||
# We don't use -nostdinc because sometimes we need standard headers, such as stdarg.h e.g. for variable
|
||||
# args, as in printk().
|
||||
CCFLAGS = [ '-mcpu=arm926ej-s' , '-g' , '-nostdlib' , '-ffreestanding' , '-std=gnu99' , '-Wall' , '-Werror' ] ,
|
||||
LINKFLAGS = [ '-nostdlib' , '-T' + includeDirectory + '/l4/arch/' + arch + '/mylink.lds' ] ,
|
||||
ASFLAGS = [ '-D__ASSEMBLY__' ] ,
|
||||
PROGSUFFIX = '.axf' ,
|
||||
LIBS = 'gcc' ,
|
||||
CPPPATH = [ '#' + buildDirectory , '#' + buildDirectory + '/l4' , '#' + includeDirectory , '#' + includeDirectory + '/l4' ] ,
|
||||
CCFLAGS = ['-mcpu=arm926ej-s', '-g', '-nostdlib', '-ffreestanding', '-std=gnu99', '-Wall', '-Werror'],
|
||||
LINKFLAGS = ['-nostdlib', '-T' + includeDirectory + '/l4/arch/' + arch + '/mylink.lds'],
|
||||
ASFLAGS = ['-D__ASSEMBLY__'],
|
||||
PROGSUFFIX = '.axf',
|
||||
LIBS = ['gcc'],
|
||||
CPPPATH = ['#' + buildDirectory, '#' + buildDirectory + '/l4', '#' + includeDirectory, '#' + includeDirectory + '/l4'],
|
||||
|
||||
####
|
||||
#### TODO: Why are these files forcibly included, why not just leave it up to the C code to include things?
|
||||
####
|
||||
|
||||
CPPFLAGS = [ '-include' , 'config.h' , '-include' , 'cml2Config.h' , '-include' , 'macros.h' , '-include' , 'types.h' , '-D__KERNEL__' ] )
|
||||
CPPFLAGS = ['-include', 'config.h', '-include', 'cml2Config.h', '-include', 'macros.h', '-include', 'types.h', '-D__KERNEL__'])
|
||||
|
||||
kernelComponents = [ ]
|
||||
for scriptPath in [ 'src/' + path for path in kernelSConscriptPaths ] :
|
||||
kernelComponents.append ( SConscript ( scriptPath + '/SConscript' , variant_dir = buildDirectory + '/' + scriptPath , duplicate = 0 , exports = { 'environment' : kernelEnvironment } ) )
|
||||
startAxf = kernelEnvironment.Program ( buildDirectory + '/start.axf' , kernelComponents )
|
||||
Depends ( kernelComponents + [ startAxf ] , kernelEnvironment['configFiles'] )
|
||||
kernelComponents = []
|
||||
for scriptPath in ['src/' + path for path in kernelSConscriptPaths]:
|
||||
kernelComponents.append(SConscript(scriptPath + '/SConscript', variant_dir = buildDirectory + '/' + scriptPath, duplicate = 0, exports = {'environment': kernelEnvironment}))
|
||||
startAxf = kernelEnvironment.Program(buildDirectory + '/start.axf', kernelComponents)
|
||||
Depends(kernelComponents + [startAxf], kernelEnvironment['configFiles'])
|
||||
|
||||
Alias ( 'kernel' , startAxf )
|
||||
Alias('kernel', startAxf)
|
||||
|
||||
########## Build the tasks ########################
|
||||
|
||||
taskSupportLibraryEnvironment = baseEnvironment.Clone (
|
||||
CC = 'arm-none-linux-gnueabi-gcc' ,
|
||||
CCFLAGS = [ '-g' , '-nostdlib' , '-ffreestanding' , '-std=gnu99' , '-Wall' , '-Werror' ] ,
|
||||
LINKFLAGS = [ '-nostdlib' ] ,
|
||||
ASFLAGS = [ '-D__ASSEMBLY__' ] ,
|
||||
LIBS = 'gcc' ,
|
||||
CPPPATH = [ '#' + buildDirectory , '#' + buildDirectory + '/l4' , '#' + includeDirectory ] )
|
||||
taskSupportLibraryEnvironment = baseEnvironment.Clone(
|
||||
CC = 'arm-none-linux-gnueabi-gcc',
|
||||
CCFLAGS = ['-g', '-nostdlib', '-ffreestanding', '-std=gnu99', '-Wall', '-Werror'],
|
||||
LINKFLAGS = ['-nostdlib'],
|
||||
ASFLAGS = ['-D__ASSEMBLY__'],
|
||||
LIBS = ['gcc'],
|
||||
CPPPATH = ['#' + buildDirectory, '#' + buildDirectory + '/l4', '#' + includeDirectory])
|
||||
|
||||
taskLibraryNames = [ f.name for f in Glob ( 'tasks/lib*' ) ]
|
||||
taskLibraryNames = [f.name for f in Glob('tasks/lib*')]
|
||||
|
||||
taskLibraries = [ ]
|
||||
for library in taskLibraryNames :
|
||||
taskLibraries.append ( SConscript ( 'tasks/' + library + '/SConscript' , variant_dir = buildDirectory + '/tasks/' + library , duplicate = 0 , exports = { 'environment' : taskSupportLibraryEnvironment } ) )
|
||||
taskLibraries = []
|
||||
for library in taskLibraryNames:
|
||||
taskLibraries.append(SConscript('tasks/' + library + '/SConscript', variant_dir = buildDirectory + '/tasks/' + library, duplicate = 0, exports = {'environment': taskSupportLibraryEnvironment}))
|
||||
|
||||
Depends ( taskLibraries , taskSupportLibraryEnvironment['configFiles'] )
|
||||
Depends(taskLibraries, taskSupportLibraryEnvironment['configFiles'])
|
||||
|
||||
Alias ( 'tasklibs' , taskLibraries )
|
||||
Alias ('tasklibs', taskLibraries)
|
||||
|
||||
tasksEnvironment = baseEnvironment.Clone (
|
||||
CC = 'arm-none-linux-gnueabi-gcc' ,
|
||||
CCFLAGS = [ '-g' , '-nostdlib' , '-ffreestanding' , '-std=gnu99' , '-Wall' , '-Werror' ] ,
|
||||
LINKFLAGS = [ '-nostdlib' ] ,
|
||||
ASFLAGS = [ '-D__ASSEMBLY__' ] ,
|
||||
LIBS = taskLibraries + [ 'gcc' , libs['userspace'] ] ,
|
||||
PROGSUFFIX = '.axf' ,
|
||||
CPPDEFINES = [ '__USERSPACE__' ] ,
|
||||
CPPPATH = [ '#' + buildDirectory , '#' + buildDirectory + '/l4' , '#' + includeDirectory , 'include' , '#tasks/libl4/include' , '#tasks/libmem' , '#tasks/libposix/include'] )
|
||||
tasksEnvironment = baseEnvironment.Clone(
|
||||
CC = 'arm-none-linux-gnueabi-gcc',
|
||||
CCFLAGS = ['-g', '-nostdlib', '-ffreestanding', '-std=gnu99', '-Wall', '-Werror'],
|
||||
LINKFLAGS = ['-nostdlib'],
|
||||
ASFLAGS = ['-D__ASSEMBLY__'],
|
||||
LIBS = taskLibraries + ['gcc', libs['userspace']],
|
||||
PROGSUFFIX = '.axf',
|
||||
CPPDEFINES = ['__USERSPACE__'],
|
||||
CPPPATH = ['#' + buildDirectory, '#' + buildDirectory + '/l4', '#' + includeDirectory, 'include', '#tasks/libl4/include', '#tasks/libmem', '#tasks/libposix/include'])
|
||||
|
||||
tasks = [ ]
|
||||
for task in [ f.name for f in Glob ( 'tasks/*' ) if f.name not in taskLibraryNames + [ 'bootdesc' ] ] :
|
||||
tasks.append ( SConscript ( 'tasks/' + task + '/SConscript' , variant_dir = buildDirectory + '/tasks/' + task , duplicate = 0 , exports = { 'environment' : tasksEnvironment } ) )
|
||||
tasks = []
|
||||
for task in [f.name for f in Glob('tasks/*') if f.name not in taskLibraryNames + ['bootdesc']]:
|
||||
tasks.append(SConscript('tasks/' + task + '/SConscript', variant_dir = buildDirectory + '/tasks/' + task, duplicate = 0, exports = {'environment': tasksEnvironment}))
|
||||
|
||||
Depends ( tasks , tasksEnvironment['configFiles'] )
|
||||
Depends(tasks, tasksEnvironment['configFiles'])
|
||||
|
||||
Alias ( 'tasks' , tasks )
|
||||
Alias ('tasks', tasks)
|
||||
|
||||
########## Other rules. ########################
|
||||
|
||||
Default ( crts.values ( ) + libs.values ( ) + [ libelf , startAxf ] + tasks )
|
||||
Default(crts.values() + libs.values() + [libelf, startAxf] + tasks)
|
||||
|
||||
Clean ( '.' , [ buildDirectory ] )
|
||||
Clean('.', [buildDirectory])
|
||||
|
||||
########## Be helpful ########################
|
||||
|
||||
Help ( '''
|
||||
Help('''
|
||||
Explicit targets are:
|
||||
|
||||
configure -- configure the build area ready for a build.
|
||||
@@ -228,4 +228,4 @@ Explicit targets are:
|
||||
The default target is to compile everything and to do a final link.
|
||||
|
||||
Compilation can only be undertaken after a configuration.
|
||||
''' )
|
||||
''')
|
||||
|
||||
Reference in New Issue
Block a user