summaryrefslogtreecommitdiffstats
path: root/cmake/QtBuildInternalsExtra.cmake.in
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2022-01-11 13:26:54 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2022-01-18 00:20:37 +0100
commit037fd545c485e73ac68377a264c84208592dc74f (patch)
tree526afe1d8023eccf6f31edf136d0bfe964882850 /cmake/QtBuildInternalsExtra.cmake.in
parente52d50a03da29e2dddaee551e4409f28c7ed56f2 (diff)
CMake: Propagate qtbase's CMAKE_STAGING_PREFIX to Qt modules
When qtbase is configured with CMAKE_STAGING_PREFIX set, then Qt modules built against this qtbase should also get CMAKE_STAGING_PREFIX by default. Like CMAKE_INSTALL_PREFIX in regular builds, this prefix will be determined by the location of QtBuildInternalsExtra.cmake to support building Qt modules against an installer-provided Qt. CMAKE_INSTALL_PREFIX on the other hand must be exactly the value that was provided when building qtbase. If CMAKE_STAGING_PREFIX is specified by the user, honor it. To opt out of automatically setting CMAKE_STAGING_PREFIX, set QT_BUILD_INTERNALS_NO_FORCE_SET_STAGING_PREFIX to ON. Remove the old code that was supposed to set CMAKE_STAGING_PREFIX. Pick-to: 6.2 6.3 Fixes: QTBUG-99666 Change-Id: I20edef54c102ca9784fcdef0decf0bd83266ae11 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake/QtBuildInternalsExtra.cmake.in')
-rw-r--r--cmake/QtBuildInternalsExtra.cmake.in9
1 files changed, 9 insertions, 0 deletions
diff --git a/cmake/QtBuildInternalsExtra.cmake.in b/cmake/QtBuildInternalsExtra.cmake.in
index cbd70b1f7b..37e6be8fbf 100644
--- a/cmake/QtBuildInternalsExtra.cmake.in
+++ b/cmake/QtBuildInternalsExtra.cmake.in
@@ -26,6 +26,7 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND
AND NOT QT_SUPERBUILD)
set(qtbi_orig_prefix "@CMAKE_INSTALL_PREFIX@")
set(qtbi_new_prefix "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}")
+ set(qtbi_orig_staging_prefix "@CMAKE_STAGING_PREFIX@")
if(CMAKE_HOST_WIN32)
# Make sure we use exactly the original prefix if it points to the same directory as the new
# one. This is needed for the case where the original prefix is passed without drive letter
@@ -36,12 +37,20 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND
set(qtbi_new_prefix "${qtbi_orig_prefix}")
endif()
endif()
+ if(NOT qtbi_orig_staging_prefix STREQUAL ""
+ AND "${CMAKE_STAGING_PREFIX}" STREQUAL ""
+ AND NOT QT_BUILD_INTERNALS_NO_FORCE_SET_STAGING_PREFIX)
+ set(CMAKE_STAGING_PREFIX "${qtbi_new_prefix}" CACHE PATH
+ "Staging path prefix, prepended onto install directories on the host machine." FORCE)
+ set(qtbi_new_prefix "${qtbi_orig_prefix}")
+ endif()
set(CMAKE_INSTALL_PREFIX "${qtbi_new_prefix}" CACHE PATH
"Install path prefix, prepended onto install directories." FORCE)
unset(qtbi_orig_prefix)
unset(qtbi_real_orig_prefix)
unset(qtbi_new_prefix)
unset(qtbi_real_new_prefix)
+ unset(qtbi_orig_staging_prefix)
endif()
# Propagate developer builds to other modules via BuildInternals package.