diff --git a/src/clang_options_data.zig b/src/clang_options_data.zig index 6f636e90a37fc03d712cf34fe0b0291c6360f967..0431b155bd331def857c524d9bb51ab8967d0c31 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 3c02f8964cb9c5ae4e7f19867b02cd0daaa19cd8..09dfe7a0163b09dc2c631ef3555bfbd6c387ba73 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 5b8d5ae4f7750f39b16fcdec7051a457726b43b0..ed5acf13acfeb004557095d26d48bf4bbb6912df 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{};