From da977cf1e6bf3fbd3e7331d19a2b09801dfe0656 Mon Sep 17 00:00:00 2001 From: Platin21 Date: Tue, 2 Jan 2024 20:55:15 +0100 Subject: Adds new flag for linker to know if it should link the system library or not --- src/linker.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/linker.cpp') diff --git a/src/linker.cpp b/src/linker.cpp index 6ef6c0386..5c458f035 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -7,10 +7,19 @@ struct LinkerData { Array output_temp_paths; String output_base; String output_name; +#if defined(GB_SYSTEM_OSX) + b8 needs_system_library_linked; +#endif }; gb_internal i32 system_exec_command_line_app(char const *name, char const *fmt, ...); +#if defined(GB_SYSTEM_OSX) +gb_internal void linker_enable_system_library_linking(LinkerData *ld) { + ld->needs_system_library_linked = 1; +} +#endif + gb_internal void linker_data_init(LinkerData *ld, CheckerInfo *info, String const &init_fullpath) { gbAllocator ha = heap_allocator(); array_init(&ld->output_object_paths, ha); @@ -18,6 +27,10 @@ gb_internal void linker_data_init(LinkerData *ld, CheckerInfo *info, String cons array_init(&ld->foreign_libraries, ha, 0, 1024); ptr_set_init(&ld->foreign_libraries_set, 1024); +#if defined(GB_SYSTEM_OSX) + ld->needs_system_library_linked = 0; +#endif + if (build_context.out_filepath.len == 0) { ld->output_name = remove_directory_from_path(init_fullpath); ld->output_name = remove_extension_from_path(ld->output_name); @@ -470,7 +483,10 @@ gb_internal i32 linker_stage(LinkerData *gen) { gbString platform_lib_str = gb_string_make(heap_allocator(), ""); defer (gb_string_free(platform_lib_str)); if (build_context.metrics.os == TargetOs_darwin) { - platform_lib_str = gb_string_appendc(platform_lib_str, "-lSystem -lm -Wl,-syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -L/usr/local/lib"); + platform_lib_str = gb_string_appendc(platform_lib_str, "-lm -Wl,-syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -L/usr/local/lib"); + if(gen->needs_system_library_linked) { + platform_lib_str = gb_string_appendc(platform_lib_str, "-lSystem"); + } } else { platform_lib_str = gb_string_appendc(platform_lib_str, "-lc -lm"); } -- cgit v1.2.3 From 3850be2e117b732129e0f40f765f76d2a1d344a8 Mon Sep 17 00:00:00 2001 From: Platin21 Date: Tue, 2 Jan 2024 21:04:03 +0100 Subject: Fixed git issue.. --- src/linker.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/linker.cpp') diff --git a/src/linker.cpp b/src/linker.cpp index 5c458f035..bdda3a7ef 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -484,9 +484,11 @@ gb_internal i32 linker_stage(LinkerData *gen) { defer (gb_string_free(platform_lib_str)); if (build_context.metrics.os == TargetOs_darwin) { platform_lib_str = gb_string_appendc(platform_lib_str, "-lm -Wl,-syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -L/usr/local/lib"); + #if defined(GB_SYSTEM_OSX) if(gen->needs_system_library_linked) { platform_lib_str = gb_string_appendc(platform_lib_str, "-lSystem"); } + #endif } else { platform_lib_str = gb_string_appendc(platform_lib_str, "-lc -lm"); } -- cgit v1.2.3 From 4626cd03daf8f877ece596cc254ee97b092999b9 Mon Sep 17 00:00:00 2001 From: Platin21 Date: Tue, 2 Jan 2024 21:04:44 +0100 Subject: Adds missing space --- src/linker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/linker.cpp') diff --git a/src/linker.cpp b/src/linker.cpp index bdda3a7ef..fa7461ec4 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -486,7 +486,7 @@ gb_internal i32 linker_stage(LinkerData *gen) { platform_lib_str = gb_string_appendc(platform_lib_str, "-lm -Wl,-syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -L/usr/local/lib"); #if defined(GB_SYSTEM_OSX) if(gen->needs_system_library_linked) { - platform_lib_str = gb_string_appendc(platform_lib_str, "-lSystem"); + platform_lib_str = gb_string_appendc(platform_lib_str, " -lSystem "); } #endif } else { -- cgit v1.2.3 From 37c2e9bec39be9f5e38baaa9648e9f4c357db7f3 Mon Sep 17 00:00:00 2001 From: Platin21 Date: Tue, 2 Jan 2024 21:14:17 +0100 Subject: Fixed Typo / Added check for 1 --- src/linker.cpp | 2 +- src/llvm_backend_general.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/linker.cpp') diff --git a/src/linker.cpp b/src/linker.cpp index fa7461ec4..ef9fa8e59 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -485,7 +485,7 @@ gb_internal i32 linker_stage(LinkerData *gen) { if (build_context.metrics.os == TargetOs_darwin) { platform_lib_str = gb_string_appendc(platform_lib_str, "-lm -Wl,-syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -L/usr/local/lib"); #if defined(GB_SYSTEM_OSX) - if(gen->needs_system_library_linked) { + if(gen->needs_system_library_linked == 1) { platform_lib_str = gb_string_appendc(platform_lib_str, " -lSystem "); } #endif diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 15e33b5eb..54327cc54 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -107,7 +107,7 @@ gb_internal bool lb_init_generator(lbGenerator *gen, Checker *c) { String init_fullpath = c->parser->init_fullpath; linker_data_init(gen, &c->info, init_fullpath); - #if defined(GB_SYSTEM_OSX) && (LLVM_MAJOR_VERSION < 14) + #if defined(GB_SYSTEM_OSX) && (LLVM_VERSION_MAJOR < 14) linker_enable_system_library_linking(gen); #endif -- cgit v1.2.3