Commit a38042e3ac
Changed files (3)
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"
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 => {
build.zig
@@ -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);