diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-11-30 16:35:00 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-11-30 16:35:00 -0700 |
| commit | ff9798eb265b02d572ecbced675efcd7c763aea9 (patch) | |
| tree | a76c48fca7b7458f41c4dca14f9ec9eb30325818 /lib/std | |
| parent | 2fae28b6afc0e5411c9a9a9def43eeb59fba840f (diff) | |
| download | zig-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.zig | 11 |
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"); |
