From f6476e9caeadea0c0c6b18841dffcf72bffdd582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 3 May 2025 06:31:51 +0200 Subject: [PATCH] compiler: Allow linking native glibc statically. This is generally ill-advised, but can be useful in some niche situations where the caveats don't apply. It might also be useful when providing a libc.txt that points to Eyra. --- src/Compilation/Config.zig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Compilation/Config.zig b/src/Compilation/Config.zig index 5019f47ebf..1de0d83aa7 100644 --- a/src/Compilation/Config.zig +++ b/src/Compilation/Config.zig @@ -352,7 +352,7 @@ pub fn resolve(options: Options) ResolveError!Config { break :b .static; } if (explicitly_exe_or_dyn_lib and link_libc and - (target.isGnuLibC() or target_util.osRequiresLibC(target))) + (target_util.osRequiresLibC(target) or (target.isGnuLibC() and !options.resolved_target.is_native_abi))) { if (options.link_mode == .static) return error.LibCRequiresDynamicLinking; break :b .dynamic; @@ -367,11 +367,11 @@ pub fn resolve(options: Options) ResolveError!Config { if (options.link_mode) |link_mode| break :b link_mode; - if (explicitly_exe_or_dyn_lib and link_libc and - options.resolved_target.is_native_abi and target.abi.isMusl()) + if (explicitly_exe_or_dyn_lib and link_libc and options.resolved_target.is_native_abi and + (target.isGnuLibC() or target.isMuslLibC())) { // If targeting the system's native ABI and the system's libc is - // musl, link dynamically by default. + // glibc or musl, link dynamically by default. break :b .dynamic; }