mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 23:13:19 +00:00
gcc-wrapper: parameterize setup-hook
The default setup-hook for gcc-wrapper adds include directories with -isystem, which upsets the order -I flags are processed. This adds an alternative setup-hook that only uses -I flags. The build system's ordering of -I flags is then respected. This is important when different packages provide includes with the same name, such as building packages that depend on Qt4 and Qt5.
This commit is contained in:
parent
bf3260a1b5
commit
d927da8dae
@ -8,6 +8,7 @@
|
||||
{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? ""
|
||||
, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell
|
||||
, zlib ? null, extraPackages ? []
|
||||
, setupHook ? ./setup-hook.sh
|
||||
}:
|
||||
|
||||
with stdenv.lib;
|
||||
@ -199,7 +200,7 @@ stdenv.mkDerivation {
|
||||
''
|
||||
|
||||
+ ''
|
||||
substituteAll ${./setup-hook.sh} $out/nix-support/setup-hook
|
||||
substituteAll ${setupHook} $out/nix-support/setup-hook
|
||||
substituteAll ${./add-flags} $out/nix-support/add-flags.sh
|
||||
cp -p ${./utils.sh} $out/nix-support/utils.sh
|
||||
|
||||
|
38
pkgs/build-support/gcc-wrapper/setup-hook-stdinc.sh
Normal file
38
pkgs/build-support/gcc-wrapper/setup-hook-stdinc.sh
Normal file
@ -0,0 +1,38 @@
|
||||
export NIX_CC=@out@
|
||||
|
||||
addCVars () {
|
||||
if [ -d $1/include ]; then
|
||||
export NIX_CFLAGS_COMPILE+=" -I $1/include"
|
||||
fi
|
||||
|
||||
if [ -d $1/lib64 -a ! -L $1/lib64 ]; then
|
||||
export NIX_LDFLAGS+=" -L$1/lib64"
|
||||
fi
|
||||
|
||||
if [ -d $1/lib ]; then
|
||||
export NIX_LDFLAGS+=" -L$1/lib"
|
||||
fi
|
||||
}
|
||||
|
||||
envHooks+=(addCVars)
|
||||
|
||||
# Note: these come *after* $out in the PATH (see setup.sh).
|
||||
|
||||
if [ -n "@gcc@" ]; then
|
||||
addToSearchPath PATH @gcc@/bin
|
||||
fi
|
||||
|
||||
if [ -n "@binutils@" ]; then
|
||||
addToSearchPath PATH @binutils@/bin
|
||||
fi
|
||||
|
||||
if [ -n "@libc@" ]; then
|
||||
addToSearchPath PATH @libc@/bin
|
||||
fi
|
||||
|
||||
if [ -n "@coreutils@" ]; then
|
||||
addToSearchPath PATH @coreutils@/bin
|
||||
fi
|
||||
|
||||
export CC=gcc
|
||||
export CXX=g++
|
@ -4087,6 +4087,18 @@ let
|
||||
inherit stdenv gcc binutils libc shell name cross;
|
||||
});
|
||||
|
||||
wrapGCCStdInc = glibc: baseGCC: (import ../build-support/gcc-wrapper) {
|
||||
nativeTools = stdenv.cc.nativeTools or false;
|
||||
nativeLibc = stdenv.cc.nativeLibc or false;
|
||||
nativePrefix = stdenv.cc.nativePrefix or "";
|
||||
gcc = baseGCC;
|
||||
libc = glibc;
|
||||
inherit stdenv binutils coreutils zlib;
|
||||
setupHook = ../build-support/gcc-wrapper/setup-hook-stdinc.sh;
|
||||
};
|
||||
|
||||
gccStdInc = wrapGCCStdInc glibc gcc.gcc;
|
||||
|
||||
# prolog
|
||||
yap = callPackage ../development/compilers/yap { };
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user