Merge branch 'cmake-rpath'

This commit is contained in:
Thomas Tuegel 2016-05-31 13:02:27 -05:00
commit dd07a28e5d
4 changed files with 33 additions and 17 deletions

View file

@ -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"

View file

@ -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)

View file

@ -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@"

View file

@ -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