summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Ericson <git@JohnEricson.me>2020-09-07 15:08:11 -0400
committerJohn Ericson <git@JohnEricson.me>2020-09-07 15:08:11 -0400
commit204dc3a88b69e64a4882852c4cf69405f7f6bc21 (patch)
tree2be6cd3ac53e796fbecba508503ed250150e3cb4
parente6cbcc2ac1f042e13d36a5c8f5c89777dad128b5 (diff)
cc-wrapper: Fix for prebuilt android
We don't want to use Nix-built GCC's libs with prebuilt clang in this case.
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix12
1 files changed, 9 insertions, 3 deletions
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index bfb15f2f7836..0e4e76d72843 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -61,6 +61,12 @@ let
then import ../expand-response-params { inherit (buildPackages) stdenv; }
else "";
+ useGccForLibs = isClang
+ && libcxx == null
+ && !(stdenv.targetPlatform.useLLVM or false)
+ && !(stdenv.targetPlatform.useAndroidPrebuilt or false)
+ && gccForLibs != null;
+
# older compilers (for example bootstrap's GCC 5) fail with -march=too-modern-cpu
isGccArchSupported = arch:
if isGNU then
@@ -272,7 +278,7 @@ stdenv.mkDerivation {
##
## GCC libs for non-GCC support
##
- + optionalString (isClang && libcxx == null && !(stdenv.targetPlatform.useLLVM or false) && gccForLibs != null) ''
+ + optionalString useGccForLibs ''
echo "-B${gccForLibs}/lib/gcc/${targetPlatform.config}/${gccForLibs.version}" >> $out/nix-support/cc-cflags
echo "-L${gccForLibs}/lib/gcc/${targetPlatform.config}/${gccForLibs.version}" >> $out/nix-support/cc-ldflags
@@ -316,11 +322,11 @@ stdenv.mkDerivation {
# We have a libc++ directly, we have one via "smuggled" GCC, or we have one
# bundled with the C compiler because it is GCC
- + optionalString (libcxx != null || (isClang && !(stdenv.targetPlatform.useLLVM or false) && gccForLibs.langCC or false) || (isGNU && cc.langCC or false)) ''
+ + optionalString (libcxx != null || (useGccForLibs && gccForLibs.langCC or false) || (isGNU && cc.langCC or false)) ''
touch "$out/nix-support/libcxx-cxxflags"
touch "$out/nix-support/libcxx-ldflags"
''
- + optionalString (libcxx == null && (isClang && !(stdenv.targetPlatform.useLLVM or false) && gccForLibs.langCC or false)) ''
+ + optionalString (libcxx == null && (useGccForLibs && gccForLibs.langCC or false)) ''
for dir in ${gccForLibs}/include/c++/*; do
echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags
done