mirror of
https://github.com/drasko/codezero.git
synced 2026-04-17 17:29:04 +02:00
Top-level SConsctruct can now retrive shelved configuration
By moving shelve retrieval details to configuration_retrieve() into configuration.py, the top-level SConstruct can now get full configuration object from shelve.
This commit is contained in:
17
SConstruct
17
SConstruct
@@ -7,6 +7,7 @@
|
|||||||
import os, shelve
|
import os, shelve
|
||||||
import configure
|
import configure
|
||||||
from configure import *
|
from configure import *
|
||||||
|
from os.path import *
|
||||||
|
|
||||||
env = Environment(CC = 'arm-none-eabi-gcc',
|
env = Environment(CC = 'arm-none-eabi-gcc',
|
||||||
# We don't use -nostdinc because sometimes we need standard headers,
|
# We don't use -nostdinc because sometimes we need standard headers,
|
||||||
@@ -21,12 +22,12 @@ env = Environment(CC = 'arm-none-eabi-gcc',
|
|||||||
CPPPATH = "#include",
|
CPPPATH = "#include",
|
||||||
CPPFLAGS = '-include l4/config.h -include l4/macros.h -include l4/types.h -D__KERNEL__')
|
CPPFLAGS = '-include l4/config.h -include l4/macros.h -include l4/types.h -D__KERNEL__')
|
||||||
|
|
||||||
config_shelve = shelve.open(CONFIG_SHELVE)
|
|
||||||
#symbols = config_shelve["config_symbols"]
|
config = configuration_retrieve()
|
||||||
arch = config_shelve["arch"]
|
arch = config.arch
|
||||||
subarch = config_shelve["subarch"]
|
subarch = config.subarch
|
||||||
platform = config_shelve["platform"]
|
platform = config.platform
|
||||||
all_syms = config_shelve["all_symbols"]
|
all_syms = config.all
|
||||||
|
|
||||||
objects = []
|
objects = []
|
||||||
objects += SConscript('src/drivers/SConscript', exports = {'symbols' : all_syms, 'env' : env})
|
objects += SConscript('src/drivers/SConscript', exports = {'symbols' : all_syms, 'env' : env})
|
||||||
@@ -40,4 +41,6 @@ objects += SConscript('src/api/SConscript', exports = {'symbols' : all_syms, 'en
|
|||||||
|
|
||||||
kernel_elf = env.Program(BUILDDIR + '/kernel.elf', objects)
|
kernel_elf = env.Program(BUILDDIR + '/kernel.elf', objects)
|
||||||
|
|
||||||
|
#libl4 = SConscript('conts/libl4/SConscript', \
|
||||||
|
# exports = { 'arch' : arch }, duplicate = 0, \
|
||||||
|
# variant_dir = join(BUILDDIR, os.path.relpath('conts/libl4', PROJROOT)))
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ class Container:
|
|||||||
class configuration:
|
class configuration:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.containers = []
|
|
||||||
self.arch = None
|
self.arch = None
|
||||||
self.subarch = None
|
self.subarch = None
|
||||||
self.platform = None
|
self.platform = None
|
||||||
self.all = []
|
self.all = []
|
||||||
|
self.containers = []
|
||||||
|
|
||||||
# Get all name value symbols
|
# Get all name value symbols
|
||||||
def get_all(self, name, val):
|
def get_all(self, name, val):
|
||||||
@@ -115,14 +115,10 @@ def configuration_save(config):
|
|||||||
config_shelve = shelve.open(CONFIG_SHELVE)
|
config_shelve = shelve.open(CONFIG_SHELVE)
|
||||||
config_shelve["configuration"] = config
|
config_shelve["configuration"] = config
|
||||||
|
|
||||||
# Save containers explicitly
|
config_shelve["arch"] = config.arch
|
||||||
# for i, c in zip(range(len(config.containers)), config.containers):
|
config_shelve["subarch"] = config.subarch
|
||||||
# config_shelve["container" + str(i)] = c
|
config_shelve["platform"] = config.platform
|
||||||
|
config_shelve["all_symbols"] = config.all
|
||||||
# config_shelve["arch"] = configuration.arch
|
|
||||||
# config_shelve["subarch"] = configuration.subarch
|
|
||||||
# config_shelve["platform"] = configuration.platform
|
|
||||||
# config_shelve["all_symbols"] = configuration.all
|
|
||||||
config_shelve.close()
|
config_shelve.close()
|
||||||
|
|
||||||
|
|
||||||
@@ -130,12 +126,4 @@ def configuration_retrieve():
|
|||||||
# Get configuration information
|
# Get configuration information
|
||||||
config_shelve = shelve.open(CONFIG_SHELVE)
|
config_shelve = shelve.open(CONFIG_SHELVE)
|
||||||
config = config_shelve["configuration"]
|
config = config_shelve["configuration"]
|
||||||
|
|
||||||
# Retrieve and append containers explicitly
|
|
||||||
# for i in range(int(config.ncontainers)):
|
|
||||||
# config.containers.append(config_shelve["container" + str(i)])
|
|
||||||
|
|
||||||
#config.containers.sort()
|
|
||||||
|
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|||||||
@@ -44,11 +44,6 @@ def configure_kernel(cml_file):
|
|||||||
cml2_header_to_symbols(CML2_CONFIG_H, config)
|
cml2_header_to_symbols(CML2_CONFIG_H, config)
|
||||||
cml2_update_config_h(CONFIG_H, config)
|
cml2_update_config_h(CONFIG_H, config)
|
||||||
configuration_save(config)
|
configuration_save(config)
|
||||||
# config2 = configuration_retrieve()
|
|
||||||
# print "containers: " + config2.ncontainers
|
|
||||||
# for c in config2.containers:
|
|
||||||
# print c.type
|
|
||||||
# print c.id
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
configure_kernel(join(CML2_CONFIG_SRCDIR, "arm.cml"))
|
configure_kernel(join(CML2_CONFIG_SRCDIR, "arm.cml"))
|
||||||
|
|||||||
@@ -17,16 +17,33 @@
|
|||||||
#
|
#
|
||||||
# Author: Russel Winder
|
# Author: Russel Winder
|
||||||
|
|
||||||
Import('environment')
|
import os, sys
|
||||||
|
|
||||||
e = environment.Clone()
|
PROJRELROOT = '../..'
|
||||||
e.Append(CPPPATH = ['include'])
|
|
||||||
|
sys.path.append(PROJRELROOT)
|
||||||
|
|
||||||
|
from config.projpaths import *
|
||||||
|
|
||||||
|
Import('arch')
|
||||||
|
|
||||||
|
env = Environment(CC = 'arm-none-linux-gnueabi-gcc',
|
||||||
|
CCFLAGS = ['-g', '-nostdlib', '-ffreestanding'],
|
||||||
|
LINKFLAGS = ['-nostdlib'],
|
||||||
|
ASFLAGS = ['-D__ASSEMBLY__'],
|
||||||
|
ENV = {'PATH' : os.environ['PATH']},
|
||||||
|
LIBS = 'gcc',
|
||||||
|
CPPPATH = ['#include', '#include/l4lib/arch', join(PROJROOT,'include') ])
|
||||||
|
|
||||||
|
|
||||||
|
def create_symlinks(arch):
|
||||||
|
if not os.path.exists("include/l4lib/arch"):
|
||||||
|
os.system("ln -s %s %s" % ("arch-" + arch, "include/l4lib/arch"))
|
||||||
|
|
||||||
# TODO: There are errors in this code that -Werror gives problems with.
|
# TODO: There are errors in this code that -Werror gives problems with.
|
||||||
|
|
||||||
e['CCFLAGS'] = ['-g', '-nostdlib', '-Wall', '-ffreestanding', '-std=gnu99']
|
create_symlinks(arch)
|
||||||
|
objects = env.StaticObject(Glob('src/*.c') + Glob('src/' + arch + '/*.[cS]'))
|
||||||
objects = e.StaticObject(Glob('src/*.c') + Glob('src/' + e['ARCH'] + '/*.[cS]'))
|
library = env.StaticLibrary('l4', objects)
|
||||||
library = e.StaticLibrary('l4', objects)
|
|
||||||
|
|
||||||
Return('library')
|
Return('library')
|
||||||
|
|||||||
Reference in New Issue
Block a user