mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-22 17:31:04 +03:00
21 lines
946 B
Diff
21 lines
946 B
Diff
--- a/lib/Driver/ToolChains.cpp
|
|
+++ b/lib/Driver/ToolChains.cpp
|
|
@@ -1475,7 +1475,17 @@ const char *ToolChain::getClangLinkerDriver(
|
|
|
|
// If there is a linker driver in the toolchain folder, use that instead.
|
|
if (auto tool = llvm::sys::findProgramByName(LinkerDriver, {toolchainPath}))
|
|
- LinkerDriver = Args.MakeArgString(tool.get());
|
|
+ return Args.MakeArgString(tool.get());
|
|
+ }
|
|
+
|
|
+ // For Nix, prefer linking using the wrapped system clang, instead of using
|
|
+ // the unwrapped clang packaged with swift. The latter is unable to link, but
|
|
+ // we still want to use it for other purposes (clang importer).
|
|
+ if (auto nixCC = llvm::sys::Process::GetEnv("NIX_CC")) {
|
|
+ llvm::SmallString<128> binDir(nixCC.getValue());
|
|
+ llvm::sys::path::append(binDir, "bin");
|
|
+ if (auto tool = llvm::sys::findProgramByName(LinkerDriver, {binDir.str()}))
|
|
+ return Args.MakeArgString(tool.get());
|
|
}
|
|
|
|
return LinkerDriver;
|