diff options
| author | gingerBill <bill@gingerbill.org> | 2024-04-04 16:14:05 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2024-04-04 16:14:05 +0100 |
| commit | b979fd4c439f8b9eb30d800dec92a0a669617981 (patch) | |
| tree | 9718f1221643860fcba67ff4470c427fd400ab79 /src/linker.cpp | |
| parent | 0e5a482c42f28c58da18213b2b3257304f357476 (diff) | |
Remove consecutive linking libraries
Diffstat (limited to 'src/linker.cpp')
| -rw-r--r-- | src/linker.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/linker.cpp b/src/linker.cpp index 2ff7ad0f4..aa36b3278 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -143,6 +143,8 @@ gb_internal i32 linker_stage(LinkerData *gen) { string_set_init(&min_libs_set, 64); defer (string_set_destroy(&min_libs_set)); + String prev_lib = {}; + StringSet asm_files = {}; string_set_init(&asm_files, 64); defer (string_set_destroy(&asm_files)); @@ -191,7 +193,10 @@ gb_internal i32 linker_stage(LinkerData *gen) { } } else if (!string_set_update(&min_libs_set, lib) || !build_context.min_link_libs) { - lib_str = gb_string_append_fmt(lib_str, " \"%.*s\"", LIT(lib)); + if (prev_lib != lib) { + lib_str = gb_string_append_fmt(lib_str, " \"%.*s\"", LIT(lib)); + } + prev_lib = lib; } } } @@ -317,6 +322,8 @@ gb_internal i32 linker_stage(LinkerData *gen) { StringSet min_libs_set = {}; string_set_init(&min_libs_set, 64); defer (string_set_destroy(&min_libs_set)); + + String prev_lib = {}; for (Entity *e : gen->foreign_libraries) { GB_ASSERT(e->kind == Entity_LibraryName); @@ -388,6 +395,11 @@ gb_internal i32 linker_stage(LinkerData *gen) { continue; } + if (prev_lib == lib) { + continue; + } + prev_lib = lib; + // Do not add libc again, this is added later already, and omitted with // the `-no-crt` flag, not skipping here would cause duplicate library // warnings when linking on darwin and might link libc silently even with `-no-crt`. |