42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
|
|
Import('env')
|
|
|
|
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
|
|
|
|
../bastl/src/exception.cpp
|
|
../bastl/src/new.cpp
|
|
|
|
src/memory.{env['TARGET_ARCH']}.s
|
|
''')
|
|
|
|
env.Append(KERNEL_SOURCES = [env.File(f) for f in stdlib_sources])
|
|
|
|
### Stdlib
|
|
stdlib_env = env.Clone()
|
|
stdlib_env['AS'] = 'x86_64-elf-baos-as'
|
|
stdlib_env['CC'] = 'x86_64-elf-baos-gcc'
|
|
stdlib_env['CXX'] = 'x86_64-elf-baos-g++'
|
|
stdlib_env['LD'] = 'x86_64-elf-baos-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'])
|
|
|
|
lib_stdlib = stdlib_env.StaticLibrary(
|
|
target = stdlib_env.File('#stdlib/libc.a'),
|
|
source = stdlib_sources
|
|
)
|
|
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.Alias('stdlib', [lib_stdlib, crti_o, crtn_o, crt0_o])
|
|
|
|
Return('env')
|