commit 99a79f98ecfe79fc3d043662448f1a6b44d52c5c (tree)
parent 573d9aab5e8b5eb21f5dfd21fc92f16985ff7e05
Author: Alex Rønne Petersen <alex@alexrp.com>
Date: Sat, 26 Apr 2025 15:05:18 +0200
Merge pull request #23572 from alexrp/zig-cc-static-dynamic
Diffstat:
3 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/src/clang_options_data.zig b/src/clang_options_data.zig
@@ -2610,7 +2610,14 @@ flagpd1("dwarf-ext-refs"),
},
sepd1("dylib_file"),
flagpd1("dylinker"),
-flagpd1("dynamic"),
+.{
+ .name = "dynamic",
+ .syntax = .flag,
+ .zig_equivalent = .dynamic,
+ .pd1 = true,
+ .pd2 = false,
+ .psl = false,
+},
.{
.name = "dynamiclib",
.syntax = .flag,
@@ -5698,7 +5705,7 @@ flagpd1("startfiles"),
.{
.name = "static",
.syntax = .flag,
- .zig_equivalent = .other,
+ .zig_equivalent = .static,
.pd1 = true,
.pd2 = true,
.psl = false,
diff --git a/src/main.zig b/src/main.zig
@@ -2348,6 +2348,16 @@ fn buildOutputType(
fatal("unsupported -rtlib option '{s}'", .{it.only_arg});
}
},
+ .static => {
+ create_module.opts.link_mode = .static;
+ lib_preferred_mode = .static;
+ lib_search_strategy = .no_fallback;
+ },
+ .dynamic => {
+ create_module.opts.link_mode = .dynamic;
+ lib_preferred_mode = .dynamic;
+ lib_search_strategy = .mode_first;
+ },
}
}
// Parse linker args.
@@ -4111,7 +4121,6 @@ fn createModule(
color,
) catch |err| fatal("failed to resolve link inputs: {s}", .{@errorName(err)});
- if (create_module.windows_libs.count() != 0) create_module.opts.any_dyn_libs = true;
if (!create_module.opts.any_dyn_libs) for (create_module.link_inputs.items) |item| switch (item) {
.dso, .dso_exact => {
create_module.opts.any_dyn_libs = true;
@@ -5978,6 +5987,8 @@ pub const ClangArgIterator = struct {
san_cov,
no_san_cov,
rtlib,
+ static,
+ dynamic,
};
const Args = struct {
diff --git a/tools/update_clang_options.zig b/tools/update_clang_options.zig
@@ -572,6 +572,14 @@ const known_options = [_]KnownOpt{
.name = "rtlib=",
.ident = "rtlib",
},
+ .{
+ .name = "static",
+ .ident = "static",
+ },
+ .{
+ .name = "dynamic",
+ .ident = "dynamic",
+ },
};
const blacklisted_options = [_][]const u8{};