commit e5a3a10a5a255cc01f3b9944a09a76753e32a8b7 (tree)
parent a154d8da8e39e5d0ed180b4a1e5150349699e5df
Author: David Rubin <daviru007@icloud.com>
Date: Mon, 29 Apr 2024 13:37:47 -0700
add error message for `-fno-llvm` `-flld`
We plan to remove all dependency on LLD either way, so this will not be a supported usecase.
Diffstat:
2 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/src/Compilation/Config.zig b/src/Compilation/Config.zig
@@ -119,6 +119,7 @@ pub const ResolveError = error{
ZigLacksTargetSupport,
EmittingBinaryRequiresLlvmLibrary,
LldIncompatibleObjectFormat,
+ LldCannotIncrementallyLink,
LtoRequiresLld,
SanitizeThreadRequiresLibCpp,
LibCppRequiresLibUnwind,
@@ -257,6 +258,11 @@ pub fn resolve(options: Options) ResolveError!Config {
break :b true;
}
+ if (options.use_llvm == false) {
+ if (options.use_lld == true) return error.LldCannotIncrementallyLink;
+ break :b false;
+ }
+
if (options.use_lld) |x| break :b x;
break :b true;
};
diff --git a/src/main.zig b/src/main.zig
@@ -3949,6 +3949,7 @@ fn createModule(
error.ZigLacksTargetSupport => fatal("compiler backend unavailable for the specified target", .{}),
error.EmittingBinaryRequiresLlvmLibrary => fatal("producing machine code via LLVM requires using the LLVM library", .{}),
error.LldIncompatibleObjectFormat => fatal("using LLD to link {s} files is unsupported", .{@tagName(target.ofmt)}),
+ error.LldCannotIncrementallyLink => fatal("self-hosted backends do not support linking with LLD", .{}),
error.LtoRequiresLld => fatal("LTO requires using LLD", .{}),
error.SanitizeThreadRequiresLibCpp => fatal("thread sanitization is (for now) implemented in C++, so it requires linking libc++", .{}),
error.LibCppRequiresLibUnwind => fatal("libc++ requires linking libunwind", .{}),