Pull out the toolchains specification as a separate file and extend to cover the new options in the configuration file.

This commit is contained in:
Russel Winder
2009-08-30 13:47:16 +01:00
parent 34d691794c
commit 399f1d530d
3 changed files with 55 additions and 9 deletions

View File

@@ -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 ########################

View File

@@ -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'])
####

46
toolchains.py Normal file
View File

@@ -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
# <http://www.gnu.org/licenses/>.
#
# 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'
},
},
}