summaryrefslogtreecommitdiffstats
path: root/cmake/QtPlatformTargetHelpers.cmake
diff options
context:
space:
mode:
authorAlexey Edelev <alexey.edelev@qt.io>2021-07-05 18:07:34 +0200
committerAlexey Edelev <alexey.edelev@qt.io>2021-07-13 14:31:16 +0200
commitadfb767bcc21a54e916d99d35c04845e76aae43d (patch)
treea7e5a9c6095910db2b568b66adeacd8353ba3d46 /cmake/QtPlatformTargetHelpers.cmake
parent3c88e12beb22d8ea11b8a7006a71ba9773c6d183 (diff)
Move the logic associated with platform definition directory
Since platform definition directory is used as an interface include path of the Qt::Platform target, it makes sense to define it for this target only. Also the definition of cached values that contain path to platform definition looks redundand. The definition of QT_PLATFORM_DEFINITION_DIR from command line doesn't make any sense since build procedure doesn't take it into account when installing mkspecs and the use if the user-provided QT_PLATFORM_DEFINITION_DIR value as a Qt::Platform include directory causes inconsistency in the prefixed builds. INSTALL_MKSPECSDIR and QT_QMAKE_TARGET_MKSPEC should be used instead. Change-Id: I3636c57b835cb84511a358a0910cc482c5fbd81e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake/QtPlatformTargetHelpers.cmake')
-rw-r--r--cmake/QtPlatformTargetHelpers.cmake32
1 files changed, 30 insertions, 2 deletions
diff --git a/cmake/QtPlatformTargetHelpers.cmake b/cmake/QtPlatformTargetHelpers.cmake
index b98894829f..9c95c0883f 100644
--- a/cmake/QtPlatformTargetHelpers.cmake
+++ b/cmake/QtPlatformTargetHelpers.cmake
@@ -1,15 +1,20 @@
# Defines the public Qt::Platform target, which serves as a dependency for all internal Qt target
# as well as user projects consuming Qt.
function(qt_internal_setup_public_platform_target)
+ qt_internal_get_platform_definition_include_dir(
+ install_interface_definition_dir
+ build_interface_definition_dir
+ )
+
## QtPlatform Target:
add_library(Platform INTERFACE)
add_library(Qt::Platform ALIAS Platform)
add_library(${INSTALL_CMAKE_NAMESPACE}::Platform ALIAS Platform)
target_include_directories(Platform
INTERFACE
- $<BUILD_INTERFACE:${QT_PLATFORM_DEFINITION_BUILD_INTERFACE_DIR}>
+ $<BUILD_INTERFACE:${build_interface_definition_dir}>
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
- $<INSTALL_INTERFACE:${QT_PLATFORM_DEFINITION_DIR}>
+ $<INSTALL_INTERFACE:${install_interface_definition_dir}>
$<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}>
)
target_compile_definitions(Platform INTERFACE ${QT_PLATFORM_DEFINITIONS})
@@ -33,3 +38,26 @@ function(qt_internal_setup_public_platform_target)
# By default enable unicode on WIN32 platforms for both Qt and Qt consumers. Can be opted out.
qt_internal_enable_unicode_defines(Platform)
endfunction()
+
+function(qt_internal_get_platform_definition_include_dir install_interface build_interface)
+ # Used by consumers of prefix builds via INSTALL_INTERFACE (relative path).
+ set(${install_interface} "${INSTALL_MKSPECSDIR}/${QT_QMAKE_TARGET_MKSPEC}" PARENT_SCOPE)
+
+ # Used by qtbase in prefix builds via BUILD_INTERFACE
+ set(build_interface_base_dir
+ "${CMAKE_CURRENT_LIST_DIR}/../mkspecs"
+ )
+
+ # Used by qtbase and consumers in non-prefix builds via BUILD_INTERFACE
+ if(NOT QT_WILL_INSTALL)
+ set(build_interface_base_dir
+ "${QT_BUILD_DIR}/${INSTALL_MKSPECSDIR}"
+ )
+ endif()
+
+ get_filename_component(build_interface_dir
+ "${build_interface_base_dir}/${QT_QMAKE_TARGET_MKSPEC}"
+ ABSOLUTE
+ )
+ set(${build_interface} "${build_interface_dir}" PARENT_SCOPE)
+endfunction()