From a1d8b9023f499560b967965ef52af2a7de981727 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Wed, 13 Apr 2022 18:41:54 +0200 Subject: [PATCH] CMake: Disable CMAKE_INSTALL_RPATH_USE_LINK_PATH MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There should be no need for CMake to add rpaths pointing to directories outside of the build tree to the installed libraries. All relevant install rpaths are handled by qt_apply_rpaths(). Change-Id: If554b1e3c790c2bb04a34e8b0524aab3febf5afc Reviewed-by: Jörg Bornemann Reviewed-by: Qt CI Bot --- cmake/QtBuild.cmake | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index d5eb7c22cdc..24d3614fa65 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -238,18 +238,16 @@ endif("${isSystemDir}" STREQUAL "-1") # Bottom line: No need to pass anything to CMAKE_INSTALL_RPATH. set(CMAKE_INSTALL_RPATH "" CACHE STRING "RPATH for installed binaries") -# add the automatically determined parts of the RPATH -# which point to directories outside the build tree to the install RPATH +# By default, don't embed auto-determined RPATHs pointing to directories +# outside of the build tree, into the installed binaries. +# This ended up adding rpaths like ${CMAKE_INSTALL_PREFIX}/lib (or /Users/qt/work/install/lib into +# the official libraries created by the CI) into the non-qtbase libraries, plugins, etc. # -# TODO: Do we really want to use this option for official packages? Perhaps make it configurable -# or remove it? This causes final installed binaries to contain an absolute path RPATH pointing -# to ${CMAKE_INSTALL_PREFIX}/lib, which on the CI would be something like -# /Users/qt/work/install/lib. -# It doesn't seem necessary to me, given that qt_apply_rpaths already applies $ORIGIN-style -# relocatable paths, but maybe i'm missing something, because the original commit that added the -# option mentions it's needed in some cross-compilation scenario for program binaries that -# link against QtCore. -set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +# It should not be necessary, given that qt_apply_rpaths() already adds the necessary rpaths, either +# relocatable ones or absolute ones, depending on what the platform supports. +if(NOT QT_NO_DISABLE_CMAKE_INSTALL_RPATH_USE_LINK_PATH) + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) +endif() # Ensure that GNUInstallDirs's CMAKE_INSTALL_LIBDIR points to the same lib dir that Qt was # configured with. Currently this is important for QML plugins, which embed an rpath based