mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Merge pull request #5241 from Feoramund/fix-obj-output
Fix output of object names
This commit is contained in:
+35
-7
@@ -2023,6 +2023,39 @@ gb_internal bool check_target_feature_is_superset_of(String const &superset, Str
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gb_internal String infer_object_extension_from_build_context() {
|
||||||
|
String output_extension = {};
|
||||||
|
if (is_arch_wasm()) {
|
||||||
|
output_extension = STR_LIT("wasm.o");
|
||||||
|
} else {
|
||||||
|
switch (build_context.metrics.os) {
|
||||||
|
case TargetOs_windows:
|
||||||
|
output_extension = STR_LIT("obj");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
case TargetOs_darwin:
|
||||||
|
case TargetOs_linux:
|
||||||
|
case TargetOs_essence:
|
||||||
|
output_extension = STR_LIT("o");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TargetOs_freestanding:
|
||||||
|
switch (build_context.metrics.abi) {
|
||||||
|
default:
|
||||||
|
case TargetABI_Default:
|
||||||
|
case TargetABI_SysV:
|
||||||
|
output_extension = STR_LIT("o");
|
||||||
|
break;
|
||||||
|
case TargetABI_Win64:
|
||||||
|
output_extension = STR_LIT("obj");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output_extension;
|
||||||
|
}
|
||||||
|
|
||||||
// NOTE(Jeroen): Set/create the output and other paths and report an error as appropriate.
|
// NOTE(Jeroen): Set/create the output and other paths and report an error as appropriate.
|
||||||
// We've previously called `parse_build_flags`, so `out_filepath` should be set.
|
// We've previously called `parse_build_flags`, so `out_filepath` should be set.
|
||||||
gb_internal bool init_build_paths(String init_filename) {
|
gb_internal bool init_build_paths(String init_filename) {
|
||||||
@@ -2155,13 +2188,8 @@ gb_internal bool init_build_paths(String init_filename) {
|
|||||||
if (build_context.metrics.os == TargetOs_windows) {
|
if (build_context.metrics.os == TargetOs_windows) {
|
||||||
output_extension = STR_LIT("lib");
|
output_extension = STR_LIT("lib");
|
||||||
}
|
}
|
||||||
}else if (build_context.build_mode == BuildMode_Object) {
|
} else if (build_context.build_mode == BuildMode_Object) {
|
||||||
// By default use a .o object extension.
|
output_extension = infer_object_extension_from_build_context();
|
||||||
output_extension = STR_LIT("o");
|
|
||||||
|
|
||||||
if (build_context.metrics.os == TargetOs_windows) {
|
|
||||||
output_extension = STR_LIT("obj");
|
|
||||||
}
|
|
||||||
} else if (build_context.build_mode == BuildMode_Assembly) {
|
} else if (build_context.build_mode == BuildMode_Assembly) {
|
||||||
// By default use a .S asm extension.
|
// By default use a .S asm extension.
|
||||||
output_extension = STR_LIT("S");
|
output_extension = STR_LIT("S");
|
||||||
|
|||||||
+8
-30
@@ -2504,7 +2504,6 @@ gb_internal String lb_filepath_obj_for_module(lbModule *m) {
|
|||||||
|
|
||||||
gbString path = gb_string_make_length(heap_allocator(), basename.text, basename.len);
|
gbString path = gb_string_make_length(heap_allocator(), basename.text, basename.len);
|
||||||
path = gb_string_appendc(path, "/");
|
path = gb_string_appendc(path, "/");
|
||||||
path = gb_string_append_length(path, name.text, name.len);
|
|
||||||
|
|
||||||
if (USE_SEPARATE_MODULES) {
|
if (USE_SEPARATE_MODULES) {
|
||||||
GB_ASSERT(m->module_name != nullptr);
|
GB_ASSERT(m->module_name != nullptr);
|
||||||
@@ -2516,6 +2515,8 @@ gb_internal String lb_filepath_obj_for_module(lbModule *m) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
path = gb_string_append_length(path, s.text, s.len);
|
path = gb_string_append_length(path, s.text, s.len);
|
||||||
|
} else {
|
||||||
|
path = gb_string_append_length(path, name.text, name.len);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_temporary_directory) {
|
if (use_temporary_directory) {
|
||||||
@@ -2526,38 +2527,15 @@ gb_internal String lb_filepath_obj_for_module(lbModule *m) {
|
|||||||
String ext = {};
|
String ext = {};
|
||||||
|
|
||||||
if (build_context.build_mode == BuildMode_Assembly) {
|
if (build_context.build_mode == BuildMode_Assembly) {
|
||||||
ext = STR_LIT(".S");
|
ext = STR_LIT("S");
|
||||||
|
} else if (build_context.build_mode == BuildMode_Object) {
|
||||||
|
// Allow a user override for the object extension.
|
||||||
|
ext = build_context.build_paths[BuildPath_Output].ext;
|
||||||
} else {
|
} else {
|
||||||
if (is_arch_wasm()) {
|
ext = infer_object_extension_from_build_context();
|
||||||
ext = STR_LIT(".wasm.o");
|
|
||||||
} else {
|
|
||||||
switch (build_context.metrics.os) {
|
|
||||||
case TargetOs_windows:
|
|
||||||
ext = STR_LIT(".obj");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
case TargetOs_darwin:
|
|
||||||
case TargetOs_linux:
|
|
||||||
case TargetOs_essence:
|
|
||||||
ext = STR_LIT(".o");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TargetOs_freestanding:
|
|
||||||
switch (build_context.metrics.abi) {
|
|
||||||
default:
|
|
||||||
case TargetABI_Default:
|
|
||||||
case TargetABI_SysV:
|
|
||||||
ext = STR_LIT(".o");
|
|
||||||
break;
|
|
||||||
case TargetABI_Win64:
|
|
||||||
ext = STR_LIT(".obj");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
path = gb_string_append_length(path, ".", 1);
|
||||||
path = gb_string_append_length(path, ext.text, ext.len);
|
path = gb_string_append_length(path, ext.text, ext.len);
|
||||||
|
|
||||||
return make_string(cast(u8 *)path, gb_string_length(path));
|
return make_string(cast(u8 *)path, gb_string_length(path));
|
||||||
|
|||||||
Reference in New Issue
Block a user