zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 7abc3738a2f0e024bee12e2046054a62fb8aa3e0 (tree)
parent 7fad555e5e16e6cb71554981394387a0622093b0
Author: Motiejus Jakštys <motiejus@uber.com>
Date:   Thu,  6 Apr 2023 10:32:05 +0300

zig build: change "-Drelease" to "-Doptimize"

I find myself quite often creating ReleaseSafe builds and putting them
to production for certain experiments:
- Debug info are for stack traces. An ongoing example where those would
  help is #14815.
- Safety checks would have saved a couple of mine and @kubkon's hours in
  #15098.

This is a breaking change for scripts that make Zig releases -- I will
submit another PR to zig-bootstrap and release-cutter after this is
merged.

Diffstat:
MCMakeLists.txt | 4++--
Mbuild.zig | 9++++-----
Mci/aarch64-macos.sh | 2+-
Mci/x86_64-linux-release.sh | 2+-
Mci/x86_64-macos-release.sh | 2+-
5 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt @@ -813,9 +813,9 @@ endif() if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") set(ZIG_RELEASE_ARG "") elseif("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") - set(ZIG_RELEASE_ARG -Drelease) + set(ZIG_RELEASE_ARG -Doptimize=ReleaseFast) else() - set(ZIG_RELEASE_ARG -Drelease -Dstrip) + set(ZIG_RELEASE_ARG -Doptimize=ReleaseFast -Dstrip) endif() if(ZIG_NO_LIB) set(ZIG_NO_LIB_ARG "-Dno-lib") diff --git a/build.zig b/build.zig @@ -13,7 +13,6 @@ const zig_version = std.builtin.Version{ .major = 0, .minor = 11, .patch = 0 }; const stack_size = 32 * 1024 * 1024; pub fn build(b: *std.Build) !void { - const release = b.option(bool, "release", "Build in release mode") orelse false; const only_c = b.option(bool, "only-c", "Translate the Zig compiler to C code, with only the C backend enabled") orelse false; const target = t: { var default_target: std.zig.CrossTarget = .{}; @@ -22,10 +21,10 @@ pub fn build(b: *std.Build) !void { } break :t b.standardTargetOptions(.{ .default_target = default_target }); }; - const optimize: std.builtin.OptimizeMode = if (release) switch (target.getCpuArch()) { - .wasm32 => .ReleaseSmall, - else => .ReleaseFast, - } else .Debug; + + // TODO remove type annotation with ziglang/zig#13749 + const optimize: std.builtin.Mode = b.option(std.builtin.Mode, "optimize", "Prioritize performance, safety, or binary size (-O flag)") orelse + if (target.getCpuArch() == .wasm32) .ReleaseSmall else .Debug; const single_threaded = b.option(bool, "single-threaded", "Build artifacts that run in single threaded mode"); const use_zig_libcxx = b.option(bool, "use-zig-libcxx", "If libc++ is needed, use zig's bundled version, don't try to integrate with the system") orelse false; diff --git a/ci/aarch64-macos.sh b/ci/aarch64-macos.sh @@ -58,7 +58,7 @@ stage3-release/bin/zig build \ --prefix stage4-release \ -Denable-llvm \ -Dno-lib \ - -Drelease \ + -Doptimize=ReleaseFast \ -Dstrip \ -Dtarget=$TARGET \ -Duse-zig-libcxx \ diff --git a/ci/x86_64-linux-release.sh b/ci/x86_64-linux-release.sh @@ -77,7 +77,7 @@ stage3-release/bin/zig build \ --prefix stage4-release \ -Denable-llvm \ -Dno-lib \ - -Drelease \ + -Doptimize=ReleaseFast \ -Dstrip \ -Dtarget=$TARGET \ -Duse-zig-libcxx \ diff --git a/ci/x86_64-macos-release.sh b/ci/x86_64-macos-release.sh @@ -61,7 +61,7 @@ stage3/bin/zig build \ --prefix stage4 \ -Denable-llvm \ -Dno-lib \ - -Drelease \ + -Doptimize=ReleaseFast \ -Dstrip \ -Dtarget=$TARGET \ -Duse-zig-libcxx \