From 399f1d530d4a00bc113009d99f0855d0b9b888d4 Mon Sep 17 00:00:00 2001 From: Russel Winder Date: Sun, 30 Aug 2009 13:47:16 +0100 Subject: [PATCH] Pull out the toolchains specification as a separate file and extend to cover the new options in the configuration file. --- SConstruct | 16 ++++++++-------- src/SConscript | 2 +- toolchains.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 toolchains.py diff --git a/SConstruct b/SConstruct index 062353c..061325e 100644 --- a/SConstruct +++ b/SConstruct @@ -93,6 +93,11 @@ configuration data. 'scons -h' will then print the project help. configItems[item[0].strip()] = (item[1].strip() == 'y') return configItems + # Read in the toolchains data. This defines the variable toolchains which is a dictionary of + # dictionaries. + + execfile('toolchains.py') + baseEnvironment = Environment(tools = ['gnulink', 'gcc', 'gas', 'ar'], ENV = {'PATH': os.environ['PATH']}, configFiles = ('#' + cml2CompileRulesFile, '#' + cml2ConfigPropertiesFile, '#' + cml2ConfigHeaderFile), @@ -100,12 +105,7 @@ configuration data. 'scons -h' will then print the project help. ASFLAGS = ['-D__ASSEMBLY__'], LINKFLAGS = ['-nostdlib'], PROGSUFFIX = '.axf', - toolChains = { - 'arm926': { - 'mainCompiler': 'arm-none-linux-gnueabi-gcc', - 'kernelCompiler': 'arm-none-eabi-gcc', - 'cpuOption': 'arm926ej-s'} - }, + toolchains = toolchains, includeDirectory = includeDirectory, containersDirectory = containersDirectory, toolsDirectory = toolsDirectory, @@ -146,11 +146,11 @@ configuration data. 'scons -h' will then print the project help. configuration.Define('__SUBARCH__', configuration.env['SUBARCH']) baseEnvironment = configuration.Finish() baseEnvironment.Append(configFiles = ('#' + configHPath,)) - baseEnvironment['CC'] = baseEnvironment['toolChains'][configuration.env['CPU']]['mainCompiler'] + baseEnvironment['CC'] = baseEnvironment['toolchains'][configuration.env['ARCH']][configuration.env['CPU']]['mainCompiler'] ## ## Using the cpu option changes the behaviour of the test execution, it generates an illegal instruction exception :-( ## - #baseEnvironment.Append(CCFLAGS = ['-mcpu=' + baseEnvironment['toolChains'][baseEnvironment['CPU']]['cpuOption']]) + #baseEnvironment.Append(CCFLAGS = ['-mcpu=' + baseEnvironment['toolchains'][configuration.env['ARCH']][baseEnvironment['CPU']]['cpuOption']]) ########## Build the libraries ######################## diff --git a/src/SConscript b/src/SConscript index 40f0a01..e194020 100644 --- a/src/SConscript +++ b/src/SConscript @@ -22,7 +22,7 @@ import os.path Import('environment') e = environment.Clone() -e['CC'] = e['toolChains'][e['CPU']]['kernelCompiler'] +e['CC'] = e['toolchains'][e['ARCH']][e['CPU']]['kernelCompiler'] e.Append(CPPPATH = ['#' + e['buildDirectory'], '#' + e['buildDirectory'] + '/l4', '#' + e['includeDirectory'], '#' + e['includeDirectory'] + '/l4']) e.Append(LINKFLAGS = ['-T' + e['includeDirectory'] + '/l4/arch/' + e['ARCH'] + '/linker.lds']) #### diff --git a/toolchains.py b/toolchains.py new file mode 100644 index 0000000..23703b9 --- /dev/null +++ b/toolchains.py @@ -0,0 +1,46 @@ +# -*- mode: python; coding: utf-8; -*- + +# Codezero -- a microkernel for embedded systems. +# +# Copyright © 2009 B Labs Ltd +# +# This program is free software: you can redistribute it and/or modify it under the terms of the GNU +# General Public License as published by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even +# the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +# License for more details. +# +# You should have received a copy of the GNU General Public License along with this program. If not, see +# . +# +# Author: Russel Winder + +# This dictionary, specifies all the toolchain properties. There must be an entry in this dictionary for +# each and every processor type specified in configs/arm.cml. + +toolchains = { + 'arm' : { + 'arm1136': { + 'mainCompiler': 'arm-none-linux-gnueabi-gcc', + 'kernelCompiler': 'arm-none-eabi-gcc', + 'cpuOption': 'arm1136j-s', # What about arm1136jf-s ??? + }, + 'arm11mpcore': { + 'mainCompiler': 'arm-none-linux-gnueabi-gcc', + 'kernelCompiler': 'arm-none-eabi-gcc', + 'cpuOption': 'mpcore' + }, + 'arm926': { + 'mainCompiler': 'arm-none-linux-gnueabi-gcc', + 'kernelCompiler': 'arm-none-eabi-gcc', + 'cpuOption': 'arm926ej-s' + }, + 'cortexa8': { + 'mainCompiler': 'arm-none-linux-gnueabi-gcc', + 'kernelCompiler': 'arm-none-eabi-gcc', + 'cpuOption': 'cortex-a8' + }, + }, + }