about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@gmail.com>2015-01-19 11:08:59 -0600
committerThomas Tuegel <ttuegel@gmail.com>2015-01-26 20:59:50 -0600
commitd927da8dae1c4ff0c492d41e00835cfd08ff84d7 (patch)
tree43c3f4d896d435063a6ace3a3d67658c15758d72 /pkgs/build-support
parentbf3260a1b58ba968d7b62f4a538e47b0aef1762a (diff)
downloadnixlib-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.nix3
-rw-r--r--pkgs/build-support/gcc-wrapper/setup-hook-stdinc.sh38
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++