diff options
| -rw-r--r-- | build.zig | 5 | ||||
| -rw-r--r-- | ci/azure/windows_script | 4 | ||||
| -rw-r--r-- | lib/std/build.zig | 8 |
3 files changed, 11 insertions, 6 deletions
@@ -55,6 +55,7 @@ pub fn build(b: *Builder) !void { const only_install_lib_files = b.option(bool, "lib-files-only", "Only install library files") orelse false; const is_stage1 = b.option(bool, "stage1", "Build the stage1 compiler, put stage2 behind a feature flag") orelse false; + const omit_stage2 = b.option(bool, "omit-stage2", "Do not include stage2 behind a feature flag inside stage1") orelse false; const static_llvm = b.option(bool, "static-llvm", "Disable integration with system-installed LLVM, Clang, LLD, and libc++") orelse false; const enable_llvm = b.option(bool, "enable-llvm", "Build self-hosted compiler with LLVM backend enabled") orelse (is_stage1 or static_llvm); const config_h_path_option = b.option([]const u8, "config_h", "Path to the generated config.h"); @@ -196,7 +197,7 @@ pub fn build(b: *Builder) !void { exe.addBuildOption(bool, "enable_logging", enable_logging); exe.addBuildOption(bool, "enable_tracy", tracy != null); exe.addBuildOption(bool, "is_stage1", is_stage1); - exe.addBuildOption(bool, "omit_stage2", false); + exe.addBuildOption(bool, "omit_stage2", omit_stage2); if (tracy) |tracy_path| { const client_cpp = fs.path.join( b.allocator, @@ -219,7 +220,7 @@ pub fn build(b: *Builder) !void { test_stage2.addBuildOption(bool, "skip_non_native", skip_non_native); test_stage2.addBuildOption(bool, "is_stage1", is_stage1); - test_stage2.addBuildOption(bool, "omit_stage2", false); + test_stage2.addBuildOption(bool, "omit_stage2", omit_stage2); test_stage2.addBuildOption(bool, "have_llvm", enable_llvm); test_stage2.addBuildOption(bool, "enable_qemu", is_qemu_enabled); test_stage2.addBuildOption(bool, "enable_wine", is_wine_enabled); diff --git a/ci/azure/windows_script b/ci/azure/windows_script index fd3605a70a..5e342fff96 100644 --- a/ci/azure/windows_script +++ b/ci/azure/windows_script @@ -27,7 +27,9 @@ git fetch --tags mkdir build cd build -"$ZIG" build -Dstage1 -Dtarget=x86_64-windows-gnu \ +"$ZIG" build -Dstage1 -Domit-stage2 -Drelease \ + -Dtarget=x86_64-windows-gnu \ + -Dcpu=x86_64_v2 \ --search-prefix "$PREFIX" \ --override-lib-dir "$ZIGDIR/lib" \ --prefix "$(pwd)/dist" diff --git a/lib/std/build.zig b/lib/std/build.zig index a652de9c12..05871efba8 100644 --- a/lib/std/build.zig +++ b/lib/std/build.zig @@ -675,17 +675,19 @@ pub const Builder = struct { /// Exposes standard `zig build` options for choosing a target. pub fn standardTargetOptions(self: *Builder, args: StandardTargetOptionsArgs) CrossTarget { - const triple = self.option( + const maybe_triple = self.option( []const u8, "target", "The CPU architecture, OS, and ABI to build for", - ) orelse return args.default_target; + ); + const mcpu = self.option([]const u8, "cpu", "Target CPU"); - // TODO add cpu and features as part of the target triple + const triple = maybe_triple orelse return args.default_target; var diags: CrossTarget.ParseOptions.Diagnostics = .{}; const selected_target = CrossTarget.parse(.{ .arch_os_abi = triple, + .cpu_features = mcpu, .diagnostics = &diags, }) catch |err| switch (err) { error.UnknownCpuModel => { |
