summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@gmail.com>2016-05-31 13:02:27 -0500
committerThomas Tuegel <ttuegel@gmail.com>2016-05-31 13:02:27 -0500
commitdd07a28e5ddc001a508c0ab89f6e5b5a9f85bc64 (patch)
tree8a21db401d1f204659dfee4a2bcedfef1448896b /pkgs
parent926c9293cb4bc0c932f7492e410441f75dc1f25d (diff)
parent94fcfc9c419251046efebd477f5f6efa123ae581 (diff)
downloadnixlib-dd07a28e5ddc001a508c0ab89f6e5b5a9f85bc64.tar
nixlib-dd07a28e5ddc001a508c0ab89f6e5b5a9f85bc64.tar.gz
nixlib-dd07a28e5ddc001a508c0ab89f6e5b5a9f85bc64.tar.bz2
nixlib-dd07a28e5ddc001a508c0ab89f6e5b5a9f85bc64.tar.lz
nixlib-dd07a28e5ddc001a508c0ab89f6e5b5a9f85bc64.tar.xz
nixlib-dd07a28e5ddc001a508c0ab89f6e5b5a9f85bc64.tar.zst
nixlib-dd07a28e5ddc001a508c0ab89f6e5b5a9f85bc64.zip
Merge branch 'cmake-rpath'
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/desktops/kde-5/frameworks-5.22/extra-cmake-modules/setup-hook.sh1
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh27
-rw-r--r--pkgs/development/libraries/qt-5/5.6/setup-hook.sh9
-rwxr-xr-xpkgs/development/tools/build-managers/cmake/setup-hook.sh13
4 files changed, 33 insertions, 17 deletions
diff --git a/pkgs/desktops/kde-5/frameworks-5.22/extra-cmake-modules/setup-hook.sh b/pkgs/desktops/kde-5/frameworks-5.22/extra-cmake-modules/setup-hook.sh
index 49ac5d0c8b5f..205aa0ea4f11 100644
--- a/pkgs/desktops/kde-5/frameworks-5.22/extra-cmake-modules/setup-hook.sh
+++ b/pkgs/desktops/kde-5/frameworks-5.22/extra-cmake-modules/setup-hook.sh
@@ -29,6 +29,7 @@ _ecmPropagateSharedData() {
 
 _ecmConfig() {
     # Because we need to use absolute paths here, we must set *all* the paths.
+    cmakeFlags+=" -DKDE_SKIP_RPATH_SETTINGS=TRUE"
     cmakeFlags+=" -DKDE_INSTALL_EXECROOTDIR=${!outputBin}"
     cmakeFlags+=" -DKDE_INSTALL_BINDIR=${!outputBin}/bin"
     cmakeFlags+=" -DKDE_INSTALL_SBINDIR=${!outputBin}/sbin"
diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh b/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh
index d1ad9584aa7e..0e73e0d31ebf 100644
--- a/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh
+++ b/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh
@@ -112,7 +112,7 @@ EOF
 
     # Set PATH to find qmake first in a preConfigure hook
     # It must run after all the envHooks!
-    postHooks+=(_qtSetQmakePath)
+    preConfigureHooks+=(_qtSetQmakePath)
 fi
 
 qt5LinkModuleDir() {
@@ -122,10 +122,23 @@ qt5LinkModuleDir() {
     fi
 }
 
-qt5LinkModuleDir @out@ "lib"
+NIX_QT5_MODULES="${NIX_QT5_MODULES}${NIX_QT5_MODULES:+:}@out@"
+NIX_QT5_MODULES_DEV="${NIX_QT5_MODULES_DEV}${NIX_QT5_MODULES_DEV:+:}@dev@"
 
-qt5LinkModuleDir @dev@ "bin"
-qt5LinkModuleDir @dev@ "include"
-qt5LinkModuleDir @dev@ "lib"
-qt5LinkModuleDir @dev@ "mkspecs"
-qt5LinkModuleDir @dev@ "share"
+_qtLinkAllModules() {
+    IFS=: read -a modules <<< $NIX_QT5_MODULES
+    for module in ${modules[@]}; do
+        qt5LinkModuleDir "$module" "lib"
+    done
+
+    IFS=: read -a modules <<< $NIX_QT5_MODULES_DEV
+    for module in ${modules[@]}; do
+        qt5LinkModuleDir "$module" "bin"
+        qt5LinkModuleDir "$module" "include"
+        qt5LinkModuleDir "$module" "lib"
+        qt5LinkModuleDir "$module" "mkspecs"
+        qt5LinkModuleDir "$module" "share"
+    done
+}
+
+preConfigureHooks+=(_qtLinkAllModules)
diff --git a/pkgs/development/libraries/qt-5/5.6/setup-hook.sh b/pkgs/development/libraries/qt-5/5.6/setup-hook.sh
index 212ac903eeeb..e41433c11386 100644
--- a/pkgs/development/libraries/qt-5/5.6/setup-hook.sh
+++ b/pkgs/development/libraries/qt-5/5.6/setup-hook.sh
@@ -1,7 +1,2 @@
-qt5LinkModuleDir @out@ "lib"
-
-qt5LinkModuleDir @dev@ "bin"
-qt5LinkModuleDir @dev@ "include"
-qt5LinkModuleDir @dev@ "lib"
-qt5LinkModuleDir @dev@ "mkspecs"
-qt5LinkModuleDir @dev@ "share"
+NIX_QT5_MODULES="${NIX_QT5_MODULES}${NIX_QT5_MODULES:+:}@out@"
+NIX_QT5_MODULES_DEV="${NIX_QT5_MODULES_DEV}${NIX_QT5_MODULES_DEV:+:}@dev@"
diff --git a/pkgs/development/tools/build-managers/cmake/setup-hook.sh b/pkgs/development/tools/build-managers/cmake/setup-hook.sh
index eaabb37f4987..adf05f1af978 100755
--- a/pkgs/development/tools/build-managers/cmake/setup-hook.sh
+++ b/pkgs/development/tools/build-managers/cmake/setup-hook.sh
@@ -47,9 +47,15 @@ cmakeConfigurePhase() {
     cmakeFlags="-DCMAKE_INSTALL_LIBDIR=${!outputLib}/lib $cmakeFlags"
     cmakeFlags="-DCMAKE_INSTALL_INCLUDEDIR=${!outputDev}/include $cmakeFlags"
 
-    # Avoid cmake resetting the rpath of binaries, on make install
-    # And build always Release, to ensure optimisation flags
-    cmakeFlags="-DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_BUILD_RPATH=ON $cmakeFlags"
+    # Always build Release, to ensure optimisation flags.
+    cmakeFlags="-DCMAKE_BUILD_TYPE=Release $cmakeFlags"
+    # Do not change the RPATH between build and install, simply
+    # build with the correct RPATH in the first place.
+    cmakeFlags="-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE $cmakeFlags"
+    # Do not try to guess the correct RPATH based on linker flags.
+    cmakeFlags="-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE $cmakeFlags"
+    # Just use exactly our RPATH.
+    cmakeFlags="-DCMAKE_INSTALL_RPATH=$CMAKE_INSTALL_RPATH $cmakeFlags"
 
     echo "cmake flags: $cmakeFlags ${cmakeFlagsArray[@]}"
 
@@ -77,6 +83,7 @@ makeCmakeFindLibs(){
         ;;
       -L*)
         export CMAKE_LIBRARY_PATH="$CMAKE_LIBRARY_PATH${CMAKE_LIBRARY_PATH:+:}${flag:2}"
+        export CMAKE_INSTALL_RPATH="$CMAKE_INSTALL_RPATH${CMAKE_INSTALL_RPATH:+:}${flag:2}"
         ;;
     esac
   done