Files
codezero/libs/c/SConstruct
Bahadir Balban e2b791a3d8 Initial commit
2008-01-13 13:53:52 +00:00

77 lines
2.9 KiB
Python

Import("*")
import os
import glob
from os.path import join
arch = "arm"
platform = "pb926"
variant1 = "userspace"
variant2 = "baremetal"
builddir_var1 = join("build", variant1)
builddir_var2 = join("build", variant2)
crt0bdir_var1 = join("build", "crt")
crt0bdir_var2 = join("build", "crt")
BuildDir(builddir_var1, "src")
BuildDir(builddir_var2, "src")
BuildDir(crt0bdir_var1, "crt")
BuildDir(crt0bdir_var2, "crt")
headers_var1 = ["#include", "#include/sys-%s/arch-%s" % (variant1, arch)]
headers_var2 = ["#include", "#include/sys-%s/arch-%s" % (variant2, arch)]
env_var1 = Environment(CC = 'arm-none-linux-gnueabi-gcc',
CCFLAGS = ['-g', '-nostdinc', '-nostdlib', '-ffreestanding'],
LINKFLAGS = ['-nostdlib'],
ENV = {'PATH' : os.environ['PATH']},
LIBS = 'gcc',
CPPPATH = headers_var1)
env_var2 = Environment(CC = 'arm-none-linux-gnueabi-gcc',
CCFLAGS = ['-g', '-nostdinc', '-nostdlib', '-ffreestanding'],
LINKFLAGS = ['-nostdlib'],
ENV = {'PATH' : os.environ['PATH']},
LIBS = 'gcc',
CPPPATH = headers_var2)
def src_glob(src_base, src_paths, builddir):
"""Src glob is used to find source files easily e.g: src_glob("src/*.c"),
the reason we can't just use glob is due to the way SCons handles out
of directory builds."""
search = os.path.join(src_base, src_paths)
dir = os.path.dirname(search)
if dir != "":
dir = dir + os.sep
src_path = Dir('.').srcnode().abspath
files = glob.glob(src_path + os.sep + search)
files = map(os.path.basename, files)
ret_files = []
for file in files:
ret_files.append(builddir + dir[len(src_base):] + file)
return ret_files
src_var1 = src_glob("src", "*.c", builddir_var1) + \
src_glob("src", "sys-%s/*.c" % variant1, builddir_var1) + \
src_glob("src", "sys-%s/arch-%s/*.c" % (variant1, arch), builddir_var1) + \
src_glob("src", "sys-%s/arch-%s/plat-%s/*.c" % (variant1, arch, platform), builddir_var1) + \
src_glob("src", "arch-%s/*.S" % arch, builddir_var1) + \
src_glob("src", "arch-%s/*.c" % arch, builddir_var1)
src_var2 = src_glob("src", "*.c", builddir_var2) + \
src_glob("src", "sys-%s/*.c" % variant2, builddir_var2) + \
src_glob("src", "sys-%s/arch-%s/*.c" % (variant2, arch), builddir_var2) + \
src_glob("src", "sys-%s/arch-%s/plat-%s/*.c" % (variant2, arch, platform), builddir_var2) + \
src_glob("src", "arch-%s/*.S" % arch, builddir_var2) + \
src_glob("src", "arch-%s/*.c" % arch, builddir_var2)
crt_var1 = env_var1.StaticObject(src_glob("crt", \
"sys-%s/arch-%s/crt0.S" % (variant1, arch), crt0bdir_var1), ASFLAGS=env_var1["CCFLAGS"])
crt_var2 = env_var2.StaticObject(src_glob("crt", \
"sys-%s/arch-%s/crt0.S" % (variant2, arch), crt0bdir_var2), ASFLAGS=env_var2["CCFLAGS"])
libc_var1 = env_var1.StaticLibrary(join("build",variant1) + "/c-" + variant1, src_var1)
libc_var2 = env_var2.StaticLibrary(join("build",variant2) + "/c-" + variant2, src_var2)