zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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:
Msrc/clang_options_data.zig | 11+++++++++--
Msrc/main.zig | 13++++++++++++-
Mtools/update_clang_options.zig | 8++++++++
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{};