Merge branch 'cc-wrapper-improvements' of git://github.com/copumpkin/nixpkgs into staging
This commit is contained in:
commit
7a1d132db9
@ -79,6 +79,13 @@ if [ "$NIX_ENFORCE_PURITY" = 1 -a -n "$NIX_STORE" ]; then
|
|||||||
params=("${rest[@]}")
|
params=("${rest[@]}")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "@prog@" = *++ ]]; then
|
||||||
|
if echo "$@" | grep -qvw -- -nostdlib; then
|
||||||
|
NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $NIX_CXXSTDLIB_COMPILE"
|
||||||
|
NIX_CFLAGS_LINK="$NIX_CFLAGS_LINK $NIX_CXXSTDLIB_LINK"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Add the flags for the C compiler proper.
|
# Add the flags for the C compiler proper.
|
||||||
extraAfter=($NIX_CFLAGS_COMPILE)
|
extraAfter=($NIX_CFLAGS_COMPILE)
|
||||||
extraBefore=()
|
extraBefore=()
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? ""
|
{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? ""
|
||||||
, cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell
|
, cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell
|
||||||
, zlib ? null, extraPackages ? []
|
, zlib ? null, extraPackages ? []
|
||||||
|
, dyld ? null # TODO: should this be a setup-hook on dyld?
|
||||||
, setupHook ? ./setup-hook.sh
|
, setupHook ? ./setup-hook.sh
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -55,7 +56,7 @@ stdenv.mkDerivation {
|
|||||||
}
|
}
|
||||||
''
|
''
|
||||||
|
|
||||||
+ optionalString (!nativeLibc) ''
|
+ optionalString (!nativeLibc) (if (!stdenv.isDarwin) then ''
|
||||||
dynamicLinker="$libc/lib/$dynamicLinker"
|
dynamicLinker="$libc/lib/$dynamicLinker"
|
||||||
echo $dynamicLinker > $out/nix-support/dynamic-linker
|
echo $dynamicLinker > $out/nix-support/dynamic-linker
|
||||||
|
|
||||||
@ -63,6 +64,17 @@ stdenv.mkDerivation {
|
|||||||
echo $libc/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32
|
echo $libc/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# The dynamic linker is passed in `ldflagsBefore' to allow
|
||||||
|
# explicit overrides of the dynamic linker by callers to gcc/ld
|
||||||
|
# (the *last* value counts, so ours should come first).
|
||||||
|
echo "-dynamic-linker" $dynamicLinker > $out/nix-support/libc-ldflags-before
|
||||||
|
'' else ''
|
||||||
|
echo $dynamicLinker > $out/nix-support/dynamic-linker
|
||||||
|
|
||||||
|
echo "export LD_DYLD_PATH=\"$dynamicLinker\"" >> $out/nix-support/setup-hook
|
||||||
|
'')
|
||||||
|
|
||||||
|
+ optionalString (!nativeLibc) ''
|
||||||
# The "-B$libc/lib/" flag is a quick hack to force gcc to link
|
# The "-B$libc/lib/" flag is a quick hack to force gcc to link
|
||||||
# against the crt1.o from our own glibc, rather than the one in
|
# against the crt1.o from our own glibc, rather than the one in
|
||||||
# /usr/lib. (This is only an issue when using an `impure'
|
# /usr/lib. (This is only an issue when using an `impure'
|
||||||
@ -78,11 +90,6 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
echo "-L$libc/lib" > $out/nix-support/libc-ldflags
|
echo "-L$libc/lib" > $out/nix-support/libc-ldflags
|
||||||
|
|
||||||
# The dynamic linker is passed in `ldflagsBefore' to allow
|
|
||||||
# explicit overrides of the dynamic linker by callers to gcc/ld
|
|
||||||
# (the *last* value counts, so ours should come first).
|
|
||||||
echo "-dynamic-linker" $dynamicLinker > $out/nix-support/libc-ldflags-before
|
|
||||||
|
|
||||||
echo $libc > $out/nix-support/orig-libc
|
echo $libc > $out/nix-support/orig-libc
|
||||||
''
|
''
|
||||||
|
|
||||||
@ -213,7 +220,10 @@ stdenv.mkDerivation {
|
|||||||
''
|
''
|
||||||
|
|
||||||
+ ''
|
+ ''
|
||||||
substituteAll ${setupHook} $out/nix-support/setup-hook
|
substituteAll ${setupHook} $out/nix-support/setup-hook.tmp
|
||||||
|
cat $out/nix-support/setup-hook.tmp >> $out/nix-support/setup-hook
|
||||||
|
rm $out/nix-support/setup-hook.tmp
|
||||||
|
|
||||||
substituteAll ${./add-flags} $out/nix-support/add-flags.sh
|
substituteAll ${./add-flags} $out/nix-support/add-flags.sh
|
||||||
cp -p ${./utils.sh} $out/nix-support/utils.sh
|
cp -p ${./utils.sh} $out/nix-support/utils.sh
|
||||||
'';
|
'';
|
||||||
@ -227,6 +237,7 @@ stdenv.mkDerivation {
|
|||||||
if stdenv.isArm then "ld-linux*.so.3" else
|
if stdenv.isArm then "ld-linux*.so.3" else
|
||||||
if stdenv.system == "powerpc-linux" then "ld.so.1" else
|
if stdenv.system == "powerpc-linux" then "ld.so.1" else
|
||||||
if stdenv.system == "mips64el-linux" then "ld.so.1" else
|
if stdenv.system == "mips64el-linux" then "ld.so.1" else
|
||||||
|
if stdenv.system == "x86_64-darwin" then "${dyld}/lib/dyld" else
|
||||||
abort "Don't know the name of the dynamic linker for this platform.")
|
abort "Don't know the name of the dynamic linker for this platform.")
|
||||||
else "";
|
else "";
|
||||||
|
|
||||||
|
@ -12,6 +12,10 @@ addCVars () {
|
|||||||
if [ -d $1/lib ]; then
|
if [ -d $1/lib ]; then
|
||||||
export NIX_LDFLAGS+=" -L$1/lib"
|
export NIX_LDFLAGS+=" -L$1/lib"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test -d $1/Library/Frameworks; then
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -F$1/Library/Frameworks"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
envHooks+=(addCVars)
|
envHooks+=(addCVars)
|
||||||
|
Loading…
Reference in New Issue
Block a user