From 7936ee6775445f180ed490d380efdc919fc41cc4 Mon Sep 17 00:00:00 2001 From: Russel Winder Date: Tue, 28 Jul 2009 16:31:51 +0100 Subject: [PATCH] Add in creation of the c libraries. --- SConstruct | 40 ++++++++++++++++++++++++++++++++++++++++ libs/c/SConscript | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 SConstruct create mode 100644 libs/c/SConscript diff --git a/SConstruct b/SConstruct new file mode 100644 index 0000000..25accdd --- /dev/null +++ b/SConstruct @@ -0,0 +1,40 @@ +# -*- mode: python; coding: utf-8 -*- + +# Codezero -- a microkernel for embedded systems. +# +# Copyright © 2009 Russel Winder +# +# 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 + +import os + +arch = 'arm' +platform = 'pb926' + +environment = Environment ( + CC = 'arm-none-linux-gnueabi-gcc', + CCFLAGS = [ '-g' , '-nostdinc' , '-nostdlib' , '-ffreestanding' ] , + LINKFLAGS = [ '-nostdlib' ] , + ENV = { 'PATH' : os.environ['PATH'] } , + LIBS = 'gcc' , + ARCH = arch , + PLATFORM = platform ) + +Export ( 'environment' ) + +libs = { } +crts = { } +for variant in [ 'baremetal' , 'userspace' ] : + ( libs[variant] , crts[variant] ) = SConscript ( 'libs/c/SConscript' , variant_dir = 'build/lib/c/' + variant , duplicate = 0 , exports = { 'variant' : variant } ) + diff --git a/libs/c/SConscript b/libs/c/SConscript new file mode 100644 index 0000000..846a798 --- /dev/null +++ b/libs/c/SConscript @@ -0,0 +1,35 @@ +# -*- mode: python; coding: utf-8 -*- + +# Codezero -- a microkernel for embedded systems. +# +# Copyright © 2009 Russel Winder +# +# 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 + +Import ( 'environment' , 'variant' ) + +source = \ + Glob ( 'src/*.c' ) + \ + Glob ( 'src/sys-' + variant + '/*.c' ) + \ + Glob ( 'src/sys-' + variant + '/arch-' + environment['ARCH'] + '/*.c' ) + \ + Glob ( 'src/sys-' + variant + '/arch-' + environment['ARCH'] + '/plat-' + environment['PLATFORM'] + '/*.c' ) + \ + Glob ( 'src/arch-' + environment['ARCH'] + '/*.c' ) + \ + Glob ( 'src/arch-' + environment['ARCH'] + '/*.S' ) + +result = ( + environment.StaticLibrary ( 'c-' + variant , source , CPPPATH = [ 'include' , 'include/sys-' + variant + '/arch-' + environment['ARCH'] ] ) , + environment.StaticObject ( 'crt/sys-' + variant + '/arch-' + environment['ARCH'] + '/crt0.S' ) + ) + +Return ( 'result' )