diff --git a/src/clang_options_data.zig b/src/clang_options_data.zig index 6f636e90a3..0431b155bd 100644 --- 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 index 98807cb73c..8899354cd7 100644 --- 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 index 5b8d5ae4f7..ed5acf13ac 100644 --- 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{};