aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMotiejus Jakštys <motiejus@uber.com>2023-04-06 10:32:05 +0300
committerMotiejus Jakštys <motiejus@uber.com>2023-04-16 23:55:51 +0300
commit7abc3738a2f0e024bee12e2046054a62fb8aa3e0 (patch)
tree9a8af11e11e1ba2d31b56239faa23111c07fe171
parent7fad555e5e16e6cb71554981394387a0622093b0 (diff)
downloadzig-7abc3738a2f0e024bee12e2046054a62fb8aa3e0.tar.gz
zig-7abc3738a2f0e024bee12e2046054a62fb8aa3e0.zip
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.
-rw-r--r--CMakeLists.txt4
-rw-r--r--build.zig9
-rwxr-xr-xci/aarch64-macos.sh2
-rwxr-xr-xci/x86_64-linux-release.sh2
-rwxr-xr-xci/x86_64-macos-release.sh2
5 files changed, 9 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a6f2fa986a..7c63bff6e0 100644
--- 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
index 1385409ec3..537b5a6284 100644
--- 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
index a4c2b9a748..c5ce361722 100755
--- 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
index f8b94addcc..98a41c1557 100755
--- 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
index 17a5e43bb0..f2e230a53f 100755
--- 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 \