diff options
author | Thomas Tuegel <ttuegel@gmail.com> | 2015-01-19 11:08:59 -0600 |
---|---|---|
committer | Thomas Tuegel <ttuegel@gmail.com> | 2015-01-26 20:59:50 -0600 |
commit | d927da8dae1c4ff0c492d41e00835cfd08ff84d7 (patch) | |
tree | 43c3f4d896d435063a6ace3a3d67658c15758d72 /pkgs/build-support | |
parent | bf3260a1b58ba968d7b62f4a538e47b0aef1762a (diff) | |
download | nixlib-d927da8dae1c4ff0c492d41e00835cfd08ff84d7.tar nixlib-d927da8dae1c4ff0c492d41e00835cfd08ff84d7.tar.gz nixlib-d927da8dae1c4ff0c492d41e00835cfd08ff84d7.tar.bz2 nixlib-d927da8dae1c4ff0c492d41e00835cfd08ff84d7.tar.lz nixlib-d927da8dae1c4ff0c492d41e00835cfd08ff84d7.tar.xz nixlib-d927da8dae1c4ff0c492d41e00835cfd08ff84d7.tar.zst nixlib-d927da8dae1c4ff0c492d41e00835cfd08ff84d7.zip |
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.
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/gcc-wrapper/default.nix | 3 | ||||
-rw-r--r-- | pkgs/build-support/gcc-wrapper/setup-hook-stdinc.sh | 38 |
2 files changed, 40 insertions, 1 deletions
diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix index aed1ab817aad..853a1b0717ea 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -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 diff --git a/pkgs/build-support/gcc-wrapper/setup-hook-stdinc.sh b/pkgs/build-support/gcc-wrapper/setup-hook-stdinc.sh new file mode 100644 index 000000000000..b6a6673575bb --- /dev/null +++ b/pkgs/build-support/gcc-wrapper/setup-hook-stdinc.sh @@ -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++ |