cc-wrapper: Set default system include flags for non-gcc c++ on Linux

Without this, clang can't find libstdc++. This needs to happen in the wrapper
so that the libc++ setup hook can still override it
This commit is contained in:
Shea Levy 2015-03-06 19:04:43 +00:00
parent 6b53021205
commit f91dea4c0b
2 changed files with 8 additions and 2 deletions

View File

@ -80,8 +80,8 @@ if [ "$NIX_ENFORCE_PURITY" = 1 -a -n "$NIX_STORE" ]; then
fi
if [[ "@prog@" = *++ ]]; then
if echo "$@" | grep -qvw -- -nostdlib; then
NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $NIX_CXXSTDLIB_COMPILE"
if echo "$@" | grep -qv -- -nostdlib; then
NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE ${NIX_CXXSTDLIB_COMPILE-@default_cxx_stdlib_compile@}"
NIX_CFLAGS_LINK="$NIX_CFLAGS_LINK $NIX_CXXSTDLIB_LINK"
fi
fi

View File

@ -169,6 +169,12 @@ stdenv.mkDerivation {
export real_cc=cc
export real_cxx=c++
export default_cxx_stdlib_compile="${
if stdenv.isLinux && !(cc.isGNU or false)
then "-isystem $(echo -n ${cc.gcc}/include/c++/*) -isystem $(echo -n ${cc.gcc}/include/c++/*)/$(${cc.gcc}/bin/gcc -dumpmachine)"
else ""
}"
if [ -e $ccPath/gcc ]; then
wrap gcc ${./cc-wrapper.sh} $ccPath/gcc
ln -s gcc $out/bin/cc