From b979fd4c439f8b9eb30d800dec92a0a669617981 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 4 Apr 2024 16:14:05 +0100 Subject: Remove consecutive linking libraries --- src/linker.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/linker.cpp') 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`. -- cgit v1.2.3