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 3c02f8964c..09dfe7a016 100644 --- a/src/main.zig +++ b/src/main.zig @@ -2338,6 +2338,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. @@ -5954,6 +5964,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{};