mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 02:43:15 +01:00
77 lines
2.9 KiB
Python
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)
|