aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-11-30 16:35:00 -0700
committerAndrew Kelley <andrew@ziglang.org>2020-11-30 16:35:00 -0700
commitff9798eb265b02d572ecbced675efcd7c763aea9 (patch)
treea76c48fca7b7458f41c4dca14f9ec9eb30325818 /lib/std
parent2fae28b6afc0e5411c9a9a9def43eeb59fba840f (diff)
downloadzig-ff9798eb265b02d572ecbced675efcd7c763aea9.tar.gz
zig-ff9798eb265b02d572ecbced675efcd7c763aea9.zip
rework the bundle compiler-rt feature
* it is now -fcompiler-rt and -fno-compiler-rt to override the (quite reasonable) default of bundling compiler-rt only for executables and dynamic libraries. - the build.zig API is still called bundle_compiler_rt however it is now an optional bool instead of a bool. leaving it as `null` means to use the compiler default. * renamed some internal identifiers to make the source more readable * additionally support -fcompiler-rt when doing build-obj for ELF files since that target already supports linking multiple objects into one. - includes an error message when attempting this for non-ELF. in the future this could additionally be supported with a more advanced implementation that does not rely on the linker. * properly populate the linker cache hash
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/build.zig11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/std/build.zig b/lib/std/build.zig
index 69af052e2a..c8439ca20a 100644
--- a/lib/std/build.zig
+++ b/lib/std/build.zig
@@ -1216,7 +1216,7 @@ pub const LibExeObjStep = struct {
emit_bin: bool = true,
emit_docs: bool = false,
emit_h: bool = false,
- bundle_compiler_rt: bool,
+ bundle_compiler_rt: ?bool = null,
disable_stack_probing: bool,
disable_sanitize_c: bool,
rdynamic: bool,
@@ -1395,7 +1395,6 @@ pub const LibExeObjStep = struct {
.exec_cmd_args = null,
.name_prefix = "",
.filter = null,
- .bundle_compiler_rt = false,
.disable_stack_probing = false,
.disable_sanitize_c = false,
.rdynamic = false,
@@ -2120,8 +2119,12 @@ pub const LibExeObjStep = struct {
if (self.is_dynamic) {
try zig_args.append("-dynamic");
}
- if (self.bundle_compiler_rt) {
- try zig_args.append("--bundle-compiler-rt");
+ if (self.bundle_compiler_rt) |x| {
+ if (x) {
+ try zig_args.append("-fcompiler-rt");
+ } else {
+ try zig_args.append("-fno-compiler-rt");
+ }
}
if (self.disable_stack_probing) {
try zig_args.append("-fno-stack-check");