Add ODIN_BUILD_MODE

This commit is contained in:
gingerBill
2021-11-04 12:49:39 +00:00
parent 1ec2f8d537
commit b2a2aa15c2
4 changed files with 40 additions and 18 deletions
+19
View File
@@ -166,6 +166,7 @@ struct BuildContext {
String ODIN_VENDOR; // compiler vendor
String ODIN_VERSION; // compiler version
String ODIN_ROOT; // Odin ROOT
String ODIN_BUILD_MODE;
bool ODIN_DEBUG; // Odin in debug mode
bool ODIN_DISABLE_ASSERT; // Whether the default 'assert' et al is disabled in code or not
bool ODIN_DEFAULT_TO_NIL_ALLOCATOR; // Whether the default allocator is a "nil" allocator or not (i.e. it does nothing)
@@ -815,6 +816,24 @@ void init_build_context(TargetMetrics *cross_target) {
bc->ODIN_VENDOR = str_lit("odin");
bc->ODIN_VERSION = ODIN_VERSION;
bc->ODIN_ROOT = odin_root_dir();
switch (bc->build_mode) {
default:
case BuildMode_Executable:
bc->ODIN_BUILD_MODE = str_lit("executable");
break;
case BuildMode_DynamicLibrary:
bc->ODIN_BUILD_MODE = str_lit("dynamic");
break;
case BuildMode_Object:
bc->ODIN_BUILD_MODE = str_lit("object");
break;
case BuildMode_Assembly:
bc->ODIN_BUILD_MODE = str_lit("assembly");
break;
case BuildMode_LLVM_IR:
bc->ODIN_BUILD_MODE = str_lit("llvm-ir");
break;
}
bc->copy_file_contents = true;
+2
View File
@@ -778,6 +778,8 @@ void init_universal(void) {
add_global_string_constant("ODIN_VENDOR", bc->ODIN_VENDOR);
add_global_string_constant("ODIN_VERSION", bc->ODIN_VERSION);
add_global_string_constant("ODIN_ROOT", bc->ODIN_ROOT);
add_global_string_constant("ODIN_BUILD_MODE", bc->ODIN_BUILD_MODE);
add_global_bool_constant("ODIN_DEBUG", bc->ODIN_DEBUG);
add_global_bool_constant("ODIN_DISABLE_ASSERT", bc->ODIN_DISABLE_ASSERT);
add_global_bool_constant("ODIN_DEFAULT_TO_NIL_ALLOCATOR", bc->ODIN_DEFAULT_TO_NIL_ALLOCATOR);
+1 -1
View File
@@ -1185,7 +1185,7 @@ bool parse_build_flags(Array<String> args) {
break;
}
if (str == "dll" || str == "shared") {
if (str == "dll" || str == "shared" || str == "dynamic") {
build_context.build_mode = BuildMode_DynamicLibrary;
} else if (str == "obj" || str == "object") {
build_context.build_mode = BuildMode_Object;