From debbd09b6de58c9f821ba6d2c9dd3fbc60a319a1 Mon Sep 17 00:00:00 2001 From: Patrick Wuttke Date: Sat, 3 Feb 2024 00:38:47 +0100 Subject: [PATCH] Added --target option to compile either os or stdlib. And renamed previous --target to --arch. --- SConstruct | 25 ++++++++++++++---------- targets/_any/stdlib/SConscript | 35 +++++++++++++++++----------------- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/SConstruct b/SConstruct index 2b3791a..0466346 100644 --- a/SConstruct +++ b/SConstruct @@ -3,8 +3,8 @@ import os import subprocess AddOption( - '--target', - dest = 'target', + '--arch', + dest = 'arch', type = 'choice', choices = ('i686', 'x86_64'), nargs = 1, @@ -12,24 +12,29 @@ AddOption( default = 'x86_64' ) AddOption( - '--stdlib', - dest = 'stdlib', - action = 'store_true' + '--target', + dest = 'target', + type = 'choice', + choices = ('os', 'stdlib'), + nargs = 1, + action = 'store', + default = 'os' ) -target = GetOption('target') -stdlib = GetOption('stdlib') +arch = GetOption('arch') +target = GetOption('target') env = Environment(tools = ['default', 'compilation_db'], ENV = os.environ) # TODO inheriting the environment is not a best practice env.Append(CCFLAGS = ['-g', '-O0', '-fno-stack-protector']) env.Append(CPPDEFINES = ['BASTL_EXTENSIONS=1']) -env['TARGET_ARCH'] = target +env['BUILD_TARGET'] = target +env['TARGET_ARCH'] = arch # env.Append(CCFLAGS = ['-O2']) env['ISO_FILES'] = [] env = SConscript('targets/_any/SConscript', exports = 'env') -if not stdlib: - env = SConscript(f'targets/{target}/SConscript', exports = 'env') +if env['BUILD_TARGET'] == 'os': + env = SConscript(f'targets/{arch}/SConscript', exports = 'env') comp_db = env.CompilationDatabase(target = '#compile_commands.json') env.Default(comp_db) diff --git a/targets/_any/stdlib/SConscript b/targets/_any/stdlib/SConscript index f06e07d..c240239 100644 --- a/targets/_any/stdlib/SConscript +++ b/targets/_any/stdlib/SConscript @@ -16,23 +16,24 @@ stdlib_sources = Split(f''' env.Append(KERNEL_SOURCES = [env.File(f) for f in stdlib_sources]) -### Stdlib -stdlib_env = env.Clone() -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']) +if env['BUILD_TARGET'] == 'stdlib': + ### 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/stdlib.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.Default([lib_stdlib, crti_o, crtn_o, crt0_o]) + lib_stdlib = stdlib_env.StaticLibrary( + target = stdlib_env.File('#stdlib/stdlib.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.Default([lib_stdlib, crti_o, crtn_o, crt0_o]) Return('env')