From 1e8cdace7ad324a42228aeb5cd6eb8dd15429413 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Tue, 21 Sep 2021 21:06:10 +0200 Subject: [PATCH] std.build: fix handling of -Dcpu Currently -Dcpu is completely ignored if -Dtarget isn't passed as well. Further, -Dcpu=baseline is ignored even if -Dtarget=native is passed. This patch fixes these 2 issues, always respecting the -Dcpu option if present. --- lib/std/build.zig | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/std/build.zig b/lib/std/build.zig index 9b7ebb1f4..e398529f9 100644 --- a/lib/std/build.zig +++ b/lib/std/build.zig @@ -685,7 +685,11 @@ pub const Builder = struct { ); const mcpu = self.option([]const u8, "cpu", "Target CPU"); - const triple = maybe_triple orelse return args.default_target; + if (maybe_triple == null and mcpu == null) { + return args.default_target; + } + + const triple = maybe_triple orelse "native"; var diags: CrossTarget.ParseOptions.Diagnostics = .{}; const selected_target = CrossTarget.parse(.{ @@ -2451,11 +2455,8 @@ pub const LibExeObjStep = struct { if (populated_cpu_features.eql(cross.cpu.features)) { // The CPU name alone is sufficient. - // If it is the baseline CPU, no command line args are required. - if (cross.cpu.model != std.Target.Cpu.baseline(cross.cpu.arch).model) { - try zig_args.append("-mcpu"); - try zig_args.append(cross.cpu.model.name); - } + try zig_args.append("-mcpu"); + try zig_args.append(cross.cpu.model.name); } else { var mcpu_buffer = std.ArrayList(u8).init(builder.allocator); -- 2.33.1