Improved SCons script for building the userspace stdlib.

This commit is contained in:
2024-02-02 22:16:02 +01:00
parent a096458bdb
commit 3cd4fe9537
7 changed files with 18 additions and 18 deletions

View File

@@ -1,16 +1,20 @@
Import('env')
shared_sources = Split('''
env['CRTI_PATH'] = env.File(f'src/crti.{env["TARGET_ARCH"]}.s').abspath
env['CRTN_PATH'] = env.File(f'src/crtn.{env["TARGET_ARCH"]}.s').abspath
env['CRT0_PATH'] = env.File(f'src/crt0.{env["TARGET_ARCH"]}.s').abspath
stdlib_sources = Split(f'''
src/assert.cpp
src/stdio.cpp
src/stdlib.cpp
src/string.cpp
src/memory.{env['TARGET_ARCH']}.s
''')
kernel_sources = shared_sources
env.Append(KERNEL_SOURCES = [env.File(f) for f in kernel_sources])
env.Append(KERNEL_SOURCES = [env.File(f) for f in stdlib_sources])
### Stdlib
stdlib_env = env.Clone()
@@ -18,20 +22,17 @@ stdlib_env['AS'] = 'x86_64-baos-elf-as'
stdlib_env['CC'] = 'x86_64-baos-elf-gcc'
stdlib_env['CXX'] = 'x86_64-baos-elf-g++'
stdlib_env['LD'] = 'x86_64-baos-elf-g++'
stdlib_env['OBJSUFFIX'] = f'.baos{stdlib_env["OBJSUFFIX"]}'
stdlib_env.Append(CXXFLAGS = ['-fno-exceptions', '-fno-rtti', '-std=c++20'])
stdlib_env.Append(CPPPATH = ['#targets/_any/bastl/include', '#targets/_any/stdlib/include', '#targets/_any/kernel/include'])
stdlib_sources = Split('''
src/crt0.s
''')
for src in shared_sources:
new_src = stdlib_env.File(f'#.stdlib_variant/{stdlib_env.File(src).name}').abspath
stdlib_env.Command(new_src, src, Copy("$TARGET", "$SOURCE"))
stdlib_sources.append(new_src)
lib_stdlib = stdlib_env.StaticLibrary(
target = stdlib_env.File('#stdlib.a'),
target = stdlib_env.File('#stdlib/stdlib.a'),
source = stdlib_sources
)
stdlib_env.Default(lib_stdlib)
crti_o = stdlib_env.Object(target = '#stdlib/crti.o', source = stdlib_env['CRTI_PATH'])
crtn_o = stdlib_env.Object(target = '#stdlib/crtn.o', source = stdlib_env['CRTN_PATH'])
crt0_o = stdlib_env.Object(target = '#stdlib/crt0.o', source = stdlib_env['CRT0_PATH'])
stdlib_env.Default([lib_stdlib, crti_o, crtn_o, crt0_o])
Return('env')