aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorFeoramund <161657516+Feoramund@users.noreply.github.com>2025-05-30 07:55:40 -0400
committerFeoramund <161657516+Feoramund@users.noreply.github.com>2025-05-30 08:01:23 -0400
commit598c1a1f1987ebaea4833b23d3c48f842c71f589 (patch)
tree7f9cca43a3d5d3f7d71edefd57a2d2a3a93210e4 /src/llvm_backend.cpp
parent73866b6b3d1c1e8d7f4f57ee966efbafbc0e5185 (diff)
Allow overriding object extension in `-build-mode:obj`
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp35
1 files changed, 6 insertions, 29 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 801da52a3..3cf77256b 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -2527,38 +2527,15 @@ gb_internal String lb_filepath_obj_for_module(lbModule *m) {
String ext = {};
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 {
- if (is_arch_wasm()) {
- 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;
- }
- }
+ ext = infer_object_extension_from_build_context();
}
+ path = gb_string_append_length(path, ".", 1);
path = gb_string_append_length(path, ext.text, ext.len);
return make_string(cast(u8 *)path, gb_string_length(path));