From c34a33169670568526fb0f34c252ca5bf641d8ec Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 24 Nov 2021 22:20:18 +0000 Subject: Add `-extra-assembler-flags` --- src/build_settings.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/build_settings.cpp') diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 4fa07c808..1012fc1c0 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -196,6 +196,7 @@ struct BuildContext { bool has_resource; String link_flags; String extra_linker_flags; + String extra_assembler_flags; String microarch; BuildModeKind build_mode; bool generate_docs; -- cgit v1.2.3 From 27106dd9aec67ebf9e3c53572513051e8bc973c6 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 26 Nov 2021 22:25:07 +0000 Subject: Allow `.asm`, `.s`, and `.S` as valid assembly file extensions --- src/build_settings.cpp | 12 ++++++++++++ src/checker.cpp | 3 +-- src/main.cpp | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) (limited to 'src/build_settings.cpp') diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 1012fc1c0..29abd441c 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -822,6 +822,18 @@ bool show_error_line(void) { return build_context.show_error_line; } +bool has_asm_extension(String const &path) { + String ext = path_extension(path); + if (ext == ".asm") { + return true; + } else if (ext == ".s") { + return true; + } else if (ext == ".S") { + return true; + } + return false; +} + void init_build_context(TargetMetrics *cross_target) { BuildContext *bc = &build_context; diff --git a/src/checker.cpp b/src/checker.cpp index 3301e2bf4..e32adedde 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -4121,8 +4121,7 @@ void check_add_foreign_import_decl(CheckerContext *ctx, Ast *decl) { add_entity_use(ctx, nullptr, e); } - String ext = path_extension(fullpath); - if (ext == ".asm") { + if (has_asm_extension(fullpath)) { if (build_context.metrics.arch != TargetArch_amd64 || build_context.metrics.os != TargetOs_windows) { error(decl, "Assembly files are not yet supported on this platform: %.*s_%.*s", diff --git a/src/main.cpp b/src/main.cpp index 1abe0f42d..7b4bc92ee 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -225,7 +225,7 @@ i32 linker_stage(lbGenerator *gen) { lbModule *m = gen->modules.entries[j].value; for_array(i, m->foreign_library_paths) { String lib = m->foreign_library_paths[i]; - if (string_ends_with(lib, str_lit(".asm"))) { + if (has_asm_extension(lib)) { string_set_add(&asm_files, lib); } else { string_set_add(&libs, lib); @@ -235,7 +235,7 @@ i32 linker_stage(lbGenerator *gen) { for_array(i, gen->default_module.foreign_library_paths) { String lib = gen->default_module.foreign_library_paths[i]; - if (string_ends_with(lib, str_lit(".asm"))) { + if (has_asm_extension(lib)) { string_set_add(&asm_files, lib); } else { string_set_add(&libs, lib); -- cgit v1.2.3