authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-12-04 23:38:36-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-03-17 18:57:07+01:00
logb483ec28e389130af63a6924276db6eef8ea4020
treed0cbd6f671b1a6de458c67033d655b6490ecad15
parent47d2e5de90faec1221f61255c36e2be81c9e3db3

tools: better detect '=' in clang options


2 files changed, 54 insertions(+), 13 deletions(-)

src/clang_options_data.zig+53-12
...@@ -1372,7 +1372,7 @@ flagpsl("MT"),...@@ -1372,7 +1372,7 @@ flagpsl("MT"),
1372.{1372.{
1373 .name = "fsanitize=address",1373 .name = "fsanitize=address",
1374 .syntax = .flag,1374 .syntax = .flag,
1375 .zig_equivalent = .other,1375 .zig_equivalent = .sanitize,
1376 .pd1 = true,1376 .pd1 = true,
1377 .pd2 = false,1377 .pd2 = false,
1378 .psl = true,1378 .psl = true,
...@@ -2214,8 +2214,22 @@ flagpd1("nocudalib"),...@@ -2214,8 +2214,22 @@ flagpd1("nocudalib"),
2214 .pd2 = true,2214 .pd2 = true,
2215 .psl = false,2215 .psl = false,
2216},2216},
2217flagpd1("mcpu=help"),2217.{
2218flagpd1("mtune=help"),2218 .name = "mcpu=help",
2219 .syntax = .flag,
2220 .zig_equivalent = .mcpu,
2221 .pd1 = true,
2222 .pd2 = false,
2223 .psl = false,
2224},
2225.{
2226 .name = "mtune=help",
2227 .syntax = .flag,
2228 .zig_equivalent = .mcpu,
2229 .pd1 = true,
2230 .pd2 = false,
2231 .psl = false,
2232},
2219flagpd1("integrated-as"),2233flagpd1("integrated-as"),
2220flagpd1("no-integrated-as"),2234flagpd1("no-integrated-as"),
2221flagpd1("fopenmp-is-device"),2235flagpd1("fopenmp-is-device"),
...@@ -2365,12 +2379,12 @@ flagpd1("fno-cuda-approx-transcendentals"),...@@ -2365,12 +2379,12 @@ flagpd1("fno-cuda-approx-transcendentals"),
2365 .pd2 = false,2379 .pd2 = false,
2366 .psl = true,2380 .psl = true,
2367},2381},
2382flagpd1("shared-libasan"),
2368sepd1("Xmicrosoft-visualc-tools-root"),2383sepd1("Xmicrosoft-visualc-tools-root"),
2369sepd1("Xmicrosoft-visualc-tools-version"),2384sepd1("Xmicrosoft-visualc-tools-version"),
2370sepd1("Xmicrosoft-windows-sdk-root"),2385sepd1("Xmicrosoft-windows-sdk-root"),
2371sepd1("Xmicrosoft-windows-sdk-version"),2386sepd1("Xmicrosoft-windows-sdk-version"),
2372sepd1("Xmicrosoft-windows-sys-root"),2387sepd1("Xmicrosoft-windows-sys-root"),
2373flagpd1("shared-libasan"),
2374.{2388.{
2375 .name = "Qembed_debug",2389 .name = "Qembed_debug",
2376 .syntax = .flag,2390 .syntax = .flag,
...@@ -3204,6 +3218,7 @@ flagpd1("flang-experimental-hlfir"),...@@ -3204,6 +3218,7 @@ flagpd1("flang-experimental-hlfir"),
3204flagpd1("flarge-sizes"),3218flagpd1("flarge-sizes"),
3205flagpd1("flat_namespace"),3219flagpd1("flat_namespace"),
3206flagpd1("flax-vector-conversions"),3220flagpd1("flax-vector-conversions"),
3221flagpd1("fexperimental-lifetime-safety"),
3207flagpd1("flimit-debug-info"),3222flagpd1("flimit-debug-info"),
3208flagpd1("flogical-abbreviations"),3223flagpd1("flogical-abbreviations"),
3209flagpd1("floop-interchange"),3224flagpd1("floop-interchange"),
...@@ -3216,8 +3231,22 @@ flagpd1("fversion-loops-for-stride"),...@@ -3216,8 +3231,22 @@ flagpd1("fversion-loops-for-stride"),
3216 .pd2 = false,3231 .pd2 = false,
3217 .psl = false,3232 .psl = false,
3218},3233},
3219flagpd1("flto=auto"),3234.{
3220flagpd1("flto=jobserver"),3235 .name = "flto=auto",
3236 .syntax = .flag,
3237 .zig_equivalent = .lto,
3238 .pd1 = true,
3239 .pd2 = false,
3240 .psl = false,
3241},
3242.{
3243 .name = "flto=jobserver",
3244 .syntax = .flag,
3245 .zig_equivalent = .lto,
3246 .pd1 = true,
3247 .pd2 = false,
3248 .psl = false,
3249},
3221flagpd1("flto-unit"),3250flagpd1("flto-unit"),
3222flagpd1("flto-visibility-public-std"),3251flagpd1("flto-visibility-public-std"),
3223flagpd1("fmath-errno"),3252flagpd1("fmath-errno"),
...@@ -3519,6 +3548,7 @@ flagpd1("fno-keep-static-consts"),...@@ -3519,6 +3548,7 @@ flagpd1("fno-keep-static-consts"),
3519flagpd1("fno-keep-system-includes"),3548flagpd1("fno-keep-system-includes"),
3520flagpd1("fno-knr-functions"),3549flagpd1("fno-knr-functions"),
3521flagpd1("fno-lax-vector-conversions"),3550flagpd1("fno-lax-vector-conversions"),
3551flagpd1("fno-experimental-lifetime-safety"),
3522flagpd1("fno-limit-debug-info"),3552flagpd1("fno-limit-debug-info"),
3523flagpd1("fno-logical-abbreviations"),3553flagpd1("fno-logical-abbreviations"),
3524flagpd1("fno-loop-interchange"),3554flagpd1("fno-loop-interchange"),
...@@ -3651,6 +3681,7 @@ flagpd1("fno-profile-values"),...@@ -3651,6 +3681,7 @@ flagpd1("fno-profile-values"),
3651flagpd1("fno-protect-parens"),3681flagpd1("fno-protect-parens"),
3652flagpd1("fno-pseudo-probe-for-profiling"),3682flagpd1("fno-pseudo-probe-for-profiling"),
3653flagpd1("fno-ptrauth-auth-traps"),3683flagpd1("fno-ptrauth-auth-traps"),
3684flagpd1("fno-ptrauth-block-descriptor-pointers"),
3654flagpd1("fno-ptrauth-calls"),3685flagpd1("fno-ptrauth-calls"),
3655flagpd1("fno-ptrauth-elf-got"),3686flagpd1("fno-ptrauth-elf-got"),
3656flagpd1("fno-ptrauth-function-pointer-type-discrimination"),3687flagpd1("fno-ptrauth-function-pointer-type-discrimination"),
...@@ -3972,6 +4003,7 @@ flagpd1("fprofile-values"),...@@ -3972,6 +4003,7 @@ flagpd1("fprofile-values"),
3972flagpd1("fprotect-parens"),4003flagpd1("fprotect-parens"),
3973flagpd1("fpseudo-probe-for-profiling"),4004flagpd1("fpseudo-probe-for-profiling"),
3974flagpd1("fptrauth-auth-traps"),4005flagpd1("fptrauth-auth-traps"),
4006flagpd1("fptrauth-block-descriptor-pointers"),
3975flagpd1("fptrauth-calls"),4007flagpd1("fptrauth-calls"),
3976flagpd1("fptrauth-elf-got"),4008flagpd1("fptrauth-elf-got"),
3977flagpd1("fptrauth-function-pointer-type-discrimination"),4009flagpd1("fptrauth-function-pointer-type-discrimination"),
...@@ -4503,9 +4535,9 @@ m("maes"),...@@ -4503,9 +4535,9 @@ m("maes"),
4503sepd1("main-file-name"),4535sepd1("main-file-name"),
4504flagpd1("maix32"),4536flagpd1("maix32"),
4505flagpd1("maix64"),4537flagpd1("maix64"),
4506m("maix-shared-lib-tls-model-opt"),4538flagpd1("maix-shared-lib-tls-model-opt"),
4507m("maix-small-local-dynamic-tls"),4539flagpd1("maix-small-local-dynamic-tls"),
4508m("maix-small-local-exec-tls"),4540flagpd1("maix-small-local-exec-tls"),
4509flagpd1("maix-struct-return"),4541flagpd1("maix-struct-return"),
4510flagpd1("malign-double"),4542flagpd1("malign-double"),
4511m("maltivec"),4543m("maltivec"),
...@@ -4530,10 +4562,10 @@ flagpd1("massembler-no-warn"),...@@ -4530,10 +4562,10 @@ flagpd1("massembler-no-warn"),
4530m("matomics"),4562m("matomics"),
4531m("mavx"),4563m("mavx"),
4532flagpd1("mavx10.1"),4564flagpd1("mavx10.1"),
4533m("mavx10.1-256"),4565flagpd1("mavx10.1-256"),
4534m("mavx10.1-512"),4566m("mavx10.1-512"),
4535flagpd1("mavx10.2"),4567flagpd1("mavx10.2"),
4536m("mavx10.2-256"),4568flagpd1("mavx10.2-256"),
4537m("mavx10.2-512"),4569m("mavx10.2-512"),
4538m("mavx2"),4570m("mavx2"),
4539m("mavx512bf16"),4571m("mavx512bf16"),
...@@ -4750,7 +4782,7 @@ flagpd1("mno-apxf"),...@@ -4750,7 +4782,7 @@ flagpd1("mno-apxf"),
4750m("mno-atomics"),4782m("mno-atomics"),
4751m("mno-avx"),4783m("mno-avx"),
4752flagpd1("mno-avx10.1"),4784flagpd1("mno-avx10.1"),
4753m("mno-avx10.1-256"),4785flagpd1("mno-avx10.1-256"),
4754m("mno-avx10.1-512"),4786m("mno-avx10.1-512"),
4755flagpd1("mno-avx10.2"),4787flagpd1("mno-avx10.2"),
4756m("mno-avx2"),4788m("mno-avx2"),
...@@ -6544,6 +6576,14 @@ joinpd1("msmall-data-threshold="),...@@ -6544,6 +6576,14 @@ joinpd1("msmall-data-threshold="),
6544joinpd1("mvscale-streaming-max="),6576joinpd1("mvscale-streaming-max="),
6545joinpd1("mvscale-streaming-min="),6577joinpd1("mvscale-streaming-min="),
6546joinpd1("Wlarge-by-value-copy="),6578joinpd1("Wlarge-by-value-copy="),
6579.{
6580 .name = "Xthinlto-distributor=",
6581 .syntax = .comma_joined,
6582 .zig_equivalent = .other,
6583 .pd1 = true,
6584 .pd2 = false,
6585 .psl = false,
6586},
6547joinpd1("analyzer-constraints="),6587joinpd1("analyzer-constraints="),
6548joinpd1("analyzer-dump-egraph="),6588joinpd1("analyzer-dump-egraph="),
6549jspd1("compatibility_version"),6589jspd1("compatibility_version"),
...@@ -6562,6 +6602,7 @@ joinpd1("fmodules-prune-after="),...@@ -6562,6 +6602,7 @@ joinpd1("fmodules-prune-after="),
6562},6602},
6563joinpd1("fopenmp-target-debug="),6603joinpd1("fopenmp-target-debug="),
6564joinpd1("fsanitize-ignorelist="),6604joinpd1("fsanitize-ignorelist="),
6605joinpd1("fthinlto-distributor="),
6565joinpd1("fzero-call-used-regs="),6606joinpd1("fzero-call-used-regs="),
6566jspd1("iframeworkwithsysroot"),6607jspd1("iframeworkwithsysroot"),
6567joinpd1("mcode-object-version="),6608joinpd1("mcode-object-version="),
tools/update_clang_options.zig+1-1
...@@ -593,7 +593,7 @@ const known_options = [_]KnownOpt{...@@ -593,7 +593,7 @@ const known_options = [_]KnownOpt{
593const blacklisted_options = [_][]const u8{};593const blacklisted_options = [_][]const u8{};
594594
595fn knownOption(name: []const u8) ?[]const u8 {595fn knownOption(name: []const u8) ?[]const u8 {
596 const chopped_name = if (std.mem.endsWith(u8, name, "=")) name[0 .. name.len - 1] else name;596 const chopped_name = if (std.mem.indexOfScalar(u8, name, '=')) |idx| name[0..idx] else name;
597 for (known_options) |item| {597 for (known_options) |item| {
598 if (std.mem.eql(u8, chopped_name, item.name)) {598 if (std.mem.eql(u8, chopped_name, item.name)) {
599 return item.ident;599 return item.ident;