From 33dc12a61aa2040d5cd82c8a20e3d9ed82a8c9a3 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 26 Nov 2021 14:46:03 +0000 Subject: Add supported check for `.asm` files --- src/checker.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/checker.cpp') diff --git a/src/checker.cpp b/src/checker.cpp index c0a15905b..3301e2bf4 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -4120,6 +4120,15 @@ void check_add_foreign_import_decl(CheckerContext *ctx, Ast *decl) { mpmc_enqueue(&ctx->info->required_foreign_imports_through_force_queue, e); add_entity_use(ctx, nullptr, e); } + + String ext = path_extension(fullpath); + if (ext == ".asm") { + 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", + LIT(target_os_names[build_context.metrics.os]), LIT(target_arch_names[build_context.metrics.arch])); + } + } } // Returns true if a new package is present -- 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/checker.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