authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-05-20 12:41:33-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-05-25 18:54:36-07:00
log940b9bccc2cba5df617112415fa745fde7002891
tree5c0282778eb48fffd5ad0e80a1ddcee914dec876
parentb991b868ae2d6719dbe2e36f95c6d2cb799d8810

Configuration: fix Cpu.Arch enum mismatch


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

lib/compiler/Maker/Step/Compile.zig+2-2
...@@ -1289,9 +1289,9 @@ fn appendModuleFlags(...@@ -1289,9 +1289,9 @@ fn appendModuleFlags(
1289 }1289 }
1290 }1290 }
12911291
1292 if (m.resolved_target.get(conf)) |target| {1292 if (m.resolved_target.get(conf)) |resolved_target| {
1293 // Communicate the query via CLI since it's more compact.1293 // Communicate the query via CLI since it's more compact.
1294 if (target.query.get(conf)) |compact_query| {1294 if (resolved_target.query.get(conf)) |compact_query| {
1295 try zig_args.ensureUnusedCapacity(gpa, 6);1295 try zig_args.ensureUnusedCapacity(gpa, 6);
12961296
1297 const query = compact_query.unwrap(conf);1297 const query = compact_query.unwrap(conf);
lib/std/Build/Configuration.zig+189-11
...@@ -2178,6 +2178,7 @@ pub const TargetQuery = struct {...@@ -2178,6 +2178,7 @@ pub const TargetQuery = struct {
2178 };2178 };
2179 }2179 }
2180 };2180 };
2181
2181 pub const Abi = enum(u5) {2182 pub const Abi = enum(u5) {
2182 none,2183 none,
2183 gnu,2184 gnu,
...@@ -2210,16 +2211,71 @@ pub const TargetQuery = struct {...@@ -2210,16 +2211,71 @@ pub const TargetQuery = struct {
2210 default,2211 default,
22112212
2212 pub fn init(x: ?std.Target.Abi) @This() {2213 pub fn init(x: ?std.Target.Abi) @This() {
2213 // TODO comptime assert the enums match2214 return switch (x orelse return .default) {
2214 return @enumFromInt(@intFromEnum(x orelse return .default));2215 .none => .none,
2216 .gnu => .gnu,
2217 .gnuabin32 => .gnuabin32,
2218 .gnuabi64 => .gnuabi64,
2219 .gnueabi => .gnueabi,
2220 .gnueabihf => .gnueabihf,
2221 .gnuf32 => .gnuf32,
2222 .gnusf => .gnusf,
2223 .gnux32 => .gnux32,
2224 .eabi => .eabi,
2225 .eabihf => .eabihf,
2226 .ilp32 => .ilp32,
2227 .android => .android,
2228 .androideabi => .androideabi,
2229 .musl => .musl,
2230 .muslabin32 => .muslabin32,
2231 .muslabi64 => .muslabi64,
2232 .musleabi => .musleabi,
2233 .musleabihf => .musleabihf,
2234 .muslf32 => .muslf32,
2235 .muslsf => .muslsf,
2236 .muslx32 => .muslx32,
2237 .msvc => .msvc,
2238 .itanium => .itanium,
2239 .simulator => .simulator,
2240 .ohos => .ohos,
2241 .ohoseabi => .ohoseabi,
2242 };
2215 }2243 }
22162244
2217 pub fn unwrap(this: @This()) ?std.Target.Abi {2245 pub fn unwrap(this: @This()) ?std.Target.Abi {
2218 // TODO comptime assert the enums match2246 return switch (this) {
2219 if (this == .default) return null;2247 .none => .none,
2220 return @enumFromInt(@intFromEnum(this));2248 .gnu => .gnu,
2249 .gnuabin32 => .gnuabin32,
2250 .gnuabi64 => .gnuabi64,
2251 .gnueabi => .gnueabi,
2252 .gnueabihf => .gnueabihf,
2253 .gnuf32 => .gnuf32,
2254 .gnusf => .gnusf,
2255 .gnux32 => .gnux32,
2256 .eabi => .eabi,
2257 .eabihf => .eabihf,
2258 .ilp32 => .ilp32,
2259 .android => .android,
2260 .androideabi => .androideabi,
2261 .musl => .musl,
2262 .muslabin32 => .muslabin32,
2263 .muslabi64 => .muslabi64,
2264 .musleabi => .musleabi,
2265 .musleabihf => .musleabihf,
2266 .muslf32 => .muslf32,
2267 .muslsf => .muslsf,
2268 .muslx32 => .muslx32,
2269 .msvc => .msvc,
2270 .itanium => .itanium,
2271 .simulator => .simulator,
2272 .ohos => .ohos,
2273 .ohoseabi => .ohoseabi,
2274 .default => null,
2275 };
2221 }2276 }
2222 };2277 };
2278
2223 pub const CpuArch = enum(u6) {2279 pub const CpuArch = enum(u6) {
2224 aarch64,2280 aarch64,
2225 aarch64_be,2281 aarch64_be,
...@@ -2233,6 +2289,7 @@ pub const TargetQuery = struct {...@@ -2233,6 +2289,7 @@ pub const TargetQuery = struct {
2233 bpfeb,2289 bpfeb,
2234 bpfel,2290 bpfel,
2235 csky,2291 csky,
2292 ez80,
2236 hexagon,2293 hexagon,
2237 hppa,2294 hppa,
2238 hppa64,2295 hppa64,
...@@ -2283,16 +2340,136 @@ pub const TargetQuery = struct {...@@ -2283,16 +2340,136 @@ pub const TargetQuery = struct {
2283 default,2340 default,
22842341
2285 pub fn init(x: ?std.Target.Cpu.Arch) @This() {2342 pub fn init(x: ?std.Target.Cpu.Arch) @This() {
2286 // TODO comptime assert the enums match2343 return switch (x orelse return .default) {
2287 return @enumFromInt(@intFromEnum(x orelse return .default));2344 .aarch64 => .aarch64,
2345 .aarch64_be => .aarch64_be,
2346 .alpha => .alpha,
2347 .amdgcn => .amdgcn,
2348 .arc => .arc,
2349 .arceb => .arceb,
2350 .arm => .arm,
2351 .armeb => .armeb,
2352 .avr => .avr,
2353 .bpfeb => .bpfeb,
2354 .bpfel => .bpfel,
2355 .csky => .csky,
2356 .ez80 => .ez80,
2357 .hexagon => .hexagon,
2358 .hppa => .hppa,
2359 .hppa64 => .hppa64,
2360 .kalimba => .kalimba,
2361 .kvx => .kvx,
2362 .lanai => .lanai,
2363 .loongarch32 => .loongarch32,
2364 .loongarch64 => .loongarch64,
2365 .m68k => .m68k,
2366 .microblaze => .microblaze,
2367 .microblazeel => .microblazeel,
2368 .mips => .mips,
2369 .mipsel => .mipsel,
2370 .mips64 => .mips64,
2371 .mips64el => .mips64el,
2372 .msp430 => .msp430,
2373 .nvptx => .nvptx,
2374 .nvptx64 => .nvptx64,
2375 .or1k => .or1k,
2376 .powerpc => .powerpc,
2377 .powerpcle => .powerpcle,
2378 .powerpc64 => .powerpc64,
2379 .powerpc64le => .powerpc64le,
2380 .propeller => .propeller,
2381 .riscv32 => .riscv32,
2382 .riscv32be => .riscv32be,
2383 .riscv64 => .riscv64,
2384 .riscv64be => .riscv64be,
2385 .s390x => .s390x,
2386 .sh => .sh,
2387 .sheb => .sheb,
2388 .sparc => .sparc,
2389 .sparc64 => .sparc64,
2390 .spirv32 => .spirv32,
2391 .spirv64 => .spirv64,
2392 .thumb => .thumb,
2393 .thumbeb => .thumbeb,
2394 .ve => .ve,
2395 .wasm32 => .wasm32,
2396 .wasm64 => .wasm64,
2397 .x86_16 => .x86_16,
2398 .x86 => .x86,
2399 .x86_64 => .x86_64,
2400 .xcore => .xcore,
2401 .xtensa => .xtensa,
2402 .xtensaeb => .xtensaeb,
2403 };
2288 }2404 }
22892405
2290 pub fn unwrap(this: @This()) ?std.Target.Cpu.Arch {2406 pub fn unwrap(this: @This()) ?std.Target.Cpu.Arch {
2291 // TODO comptime assert the enums match2407 return switch (this) {
2292 if (this == .default) return null;2408 .aarch64 => .aarch64,
2293 return @enumFromInt(@intFromEnum(this));2409 .aarch64_be => .aarch64_be,
2410 .alpha => .alpha,
2411 .amdgcn => .amdgcn,
2412 .arc => .arc,
2413 .arceb => .arceb,
2414 .arm => .arm,
2415 .armeb => .armeb,
2416 .avr => .avr,
2417 .bpfeb => .bpfeb,
2418 .bpfel => .bpfel,
2419 .csky => .csky,
2420 .ez80 => .ez80,
2421 .hexagon => .hexagon,
2422 .hppa => .hppa,
2423 .hppa64 => .hppa64,
2424 .kalimba => .kalimba,
2425 .kvx => .kvx,
2426 .lanai => .lanai,
2427 .loongarch32 => .loongarch32,
2428 .loongarch64 => .loongarch64,
2429 .m68k => .m68k,
2430 .microblaze => .microblaze,
2431 .microblazeel => .microblazeel,
2432 .mips => .mips,
2433 .mipsel => .mipsel,
2434 .mips64 => .mips64,
2435 .mips64el => .mips64el,
2436 .msp430 => .msp430,
2437 .nvptx => .nvptx,
2438 .nvptx64 => .nvptx64,
2439 .or1k => .or1k,
2440 .powerpc => .powerpc,
2441 .powerpcle => .powerpcle,
2442 .powerpc64 => .powerpc64,
2443 .powerpc64le => .powerpc64le,
2444 .propeller => .propeller,
2445 .riscv32 => .riscv32,
2446 .riscv32be => .riscv32be,
2447 .riscv64 => .riscv64,
2448 .riscv64be => .riscv64be,
2449 .s390x => .s390x,
2450 .sh => .sh,
2451 .sheb => .sheb,
2452 .sparc => .sparc,
2453 .sparc64 => .sparc64,
2454 .spirv32 => .spirv32,
2455 .spirv64 => .spirv64,
2456 .thumb => .thumb,
2457 .thumbeb => .thumbeb,
2458 .ve => .ve,
2459 .wasm32 => .wasm32,
2460 .wasm64 => .wasm64,
2461 .x86_16 => .x86_16,
2462 .x86 => .x86,
2463 .x86_64 => .x86_64,
2464 .xcore => .xcore,
2465 .xtensa => .xtensa,
2466 .xtensaeb => .xtensaeb,
2467
2468 .default => null,
2469 };
2294 }2470 }
2295 };2471 };
2472
2296 pub const OsTag = enum(u6) {2473 pub const OsTag = enum(u6) {
2297 freestanding,2474 freestanding,
2298 other,2475 other,
...@@ -2390,7 +2567,6 @@ pub const TargetQuery = struct {...@@ -2390,7 +2567,6 @@ pub const TargetQuery = struct {
23902567
2391 pub fn unwrap(this: @This()) ?std.Target.Os.Tag {2568 pub fn unwrap(this: @This()) ?std.Target.Os.Tag {
2392 return switch (this) {2569 return switch (this) {
2393 .default => null,
2394 .freestanding => .freestanding,2570 .freestanding => .freestanding,
2395 .other => .other,2571 .other => .other,
2396 .contiki => .contiki,2572 .contiki => .contiki,
...@@ -2434,6 +2610,8 @@ pub const TargetQuery = struct {...@@ -2434,6 +2610,8 @@ pub const TargetQuery = struct {
2434 .opengl => .opengl,2610 .opengl => .opengl,
2435 .vulkan => .vulkan,2611 .vulkan => .vulkan,
2436 .tios => .tios,2612 .tios => .tios,
2613
2614 .default => null,
2437 };2615 };
2438 }2616 }
2439 };2617 };