mirror of
https://github.com/drasko/codezero.git
synced 2026-03-21 19:41:52 +01:00
First pass at processing the CML2 configuration.
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,5 @@
|
|||||||
build
|
build
|
||||||
*~
|
*~
|
||||||
.sconsign.dblite
|
.sconsign.dblite
|
||||||
|
*.pyc
|
||||||
|
config.log
|
||||||
|
|||||||
44
SConstruct
44
SConstruct
@@ -19,10 +19,23 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
includeDirectory = 'include'
|
||||||
|
toolsDirectory = 'tools'
|
||||||
|
cml2ToolsDirectory = toolsDirectory + '/cml2-tools'
|
||||||
|
|
||||||
|
buildDirectory = 'build'
|
||||||
|
|
||||||
|
environment = Environment ( )
|
||||||
|
|
||||||
|
configuration = Configure ( environment , config_h = 'config.h' )
|
||||||
|
environment = configuration.Finish ( )
|
||||||
|
|
||||||
arch = 'arm'
|
arch = 'arm'
|
||||||
platform = 'pb926'
|
platform = 'pb926'
|
||||||
|
|
||||||
environment = Environment (
|
linkerScript = includeDirectory + '/l4/arch/' + arch + '/mylinks.lds'
|
||||||
|
|
||||||
|
libraryEnvironment = environment.Clone (
|
||||||
CC = 'arm-none-linux-gnueabi-gcc',
|
CC = 'arm-none-linux-gnueabi-gcc',
|
||||||
CCFLAGS = [ '-g' , '-nostdinc' , '-nostdlib' , '-ffreestanding' ] ,
|
CCFLAGS = [ '-g' , '-nostdinc' , '-nostdlib' , '-ffreestanding' ] ,
|
||||||
LINKFLAGS = [ '-nostdlib' ] ,
|
LINKFLAGS = [ '-nostdlib' ] ,
|
||||||
@@ -31,11 +44,32 @@ environment = Environment (
|
|||||||
ARCH = arch ,
|
ARCH = arch ,
|
||||||
PLATFORM = platform )
|
PLATFORM = platform )
|
||||||
|
|
||||||
Export ( 'environment' )
|
|
||||||
|
|
||||||
libs = { }
|
libs = { }
|
||||||
crts = { }
|
crts = { }
|
||||||
for variant in [ 'baremetal' , 'userspace' ] :
|
for variant in [ 'baremetal' , 'userspace' ] :
|
||||||
( libs[variant] , crts[variant] ) = SConscript ( 'libs/c/SConscript' , variant_dir = 'build/lib/c/' + variant , duplicate = 0 , exports = { 'variant' : variant } )
|
( libs[variant] , crts[variant] ) = SConscript ( 'libs/c/SConscript' , variant_dir = buildDirectory + '/lib/c/' + variant , duplicate = 0 , exports = { 'environment' : libraryEnvironment , 'variant' : variant } )
|
||||||
|
|
||||||
libelf = SConscript ( 'libs/elf/SConscript' , variant_dir = 'build/lib/elf' , duplicate = 0 , exports = { 'lib' : libs['baremetal'] } )
|
libelf = SConscript ( 'libs/elf/SConscript' , variant_dir = buildDirectory + '/lib/elf' , duplicate = 0 , exports = { 'environment' : libraryEnvironment , 'lib' : libs['baremetal'] } )
|
||||||
|
|
||||||
|
cmlCompiledRules = Command ( '#' + buildDirectory + '/rules.out' , '#configs/' + arch + '.cml' , cml2ToolsDirectory + '/cmlcompile.py -o $TARGET $SOURCE' )
|
||||||
|
cmlConfiguredRules = Command ( '#' + buildDirectory + '/config.out' , cmlCompiledRules , cml2ToolsDirectory + '/cmlconfigure.py -c -o $TARGET $SOURCE' )
|
||||||
|
cmlConfigHeader = Command ( '#' + buildDirectory + '/config.h' , cmlConfiguredRules , toolsDirectory + '/cml2header.py -o $TARGET -i $SOURCE' )
|
||||||
|
|
||||||
|
Alias ( 'configure' , cmlConfigHeader )
|
||||||
|
if 'configure' in COMMAND_LINE_TARGETS:
|
||||||
|
AlwaysBuild ( cmlConfiguredRules )
|
||||||
|
|
||||||
|
kernelEnvironment = environment.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 = [ '-g' , '-mcpu=arm926ej-s' , '-nostdlib' , '-ffreestanding' , '-std=gnu99' , '-Wall' , '-Werror' ] ,
|
||||||
|
LINKFLAGS = [ '-nostdlib' , '-T' + linkerScript ] ,
|
||||||
|
ASFLAGS = [ '-D__ASSEMBLY__' ] ,
|
||||||
|
PROGSUFFIX = '.axf' ,
|
||||||
|
ENV = { 'PATH' : os.environ['PATH'] } ,
|
||||||
|
LIBS = 'gcc' , # libgcc.a is required for the division routines.
|
||||||
|
CPPPATH = includeDirectory ,
|
||||||
|
CPPFLAGS = [ '-include l4/config.h' , '-include l4/macros.h' , '-include l4/types.h' , '-D__KERNEL__' ] )
|
||||||
|
|
||||||
|
Clean ( '.' , [ buildDirectory ] )
|
||||||
|
|||||||
Reference in New Issue
Block a user