summaryrefslogtreecommitdiffstats
path: root/cmake/QtBuild.cmake
diff options
context:
space:
mode:
authorAlexey Edelev <alexey.edelev@qt.io>2021-07-05 13:28:58 +0200
committerAlexey Edelev <alexey.edelev@qt.io>2021-07-05 22:00:01 +0200
commit478f5fcde66a49b710c427447916a0ee0e4d9e0a (patch)
tree168982b955bcca1f1bd9ae6c2c95c8bd7b65807e /cmake/QtBuild.cmake
parent09d0fc068d4b32aa9cd00d38171e62fddf82c83a (diff)
Fix the detection of platform definitions directory
Platform definition directory is defined when building qtbase. Depending on the build type (prefixed/non-prefixed) it should point: - To the source directory when building prefixed qtbase. - To the installation directory of the prefixed qtbase when building consumer projects. - To the build directory of non-prefixed qtbase when building non-prefixed qtbase or consumer projects. TODO: It is desirable to move the logic asssociated with Qt platform definition to the qt_internal_setup_public_platform_target function. Pick-to: 6.1 6.2 Fixes: QTBUG-94973 Change-Id: I8530613f9b2029834c66206bbdf02475528a4640 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake/QtBuild.cmake')
-rw-r--r--cmake/QtBuild.cmake58
1 files changed, 33 insertions, 25 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index 2b88456878..e04069c648 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -372,30 +372,39 @@ else()
set(QT_QMAKE_HOST_MKSPEC "${QT_QMAKE_TARGET_MKSPEC}")
endif()
-# Platform definition dir provided by user on command line.
-# Derive the absolute one relative to the current source dir.
-if(QT_PLATFORM_DEFINITION_DIR)
- set(QT_DEFAULT_PLATFORM_DEFINITION_DIR "${QT_PLATFORM_DEFINITION_DIR}")
- get_filename_component(
- QT_DEFAULT_PLATFORM_DEFINITION_DIR_ABSOLUTE
- "${QT_PLATFORM_DEFINITION_DIR}"
- ABSOLUTE)
-elseif(QT_QMAKE_TARGET_MKSPEC)
- # Used by consumers of prefix builds via INSTALL_INTERFACE (relative path).
- set(QT_DEFAULT_PLATFORM_DEFINITION_DIR "${INSTALL_MKSPECSDIR}/${QT_QMAKE_TARGET_MKSPEC}")
- # Used by qtbase itself and consumers of non-prefix builds via BUILD_INTERFACE (absolute path).
- set(QT_DEFAULT_PLATFORM_DEFINITION_DIR_ABSOLUTE "${QT_MKSPECS_DIR}/${QT_QMAKE_TARGET_MKSPEC}")
-
- if(NOT EXISTS "${QT_DEFAULT_PLATFORM_DEFINITION_DIR_ABSOLUTE}")
- file(GLOB known_platforms
- LIST_DIRECTORIES true
- RELATIVE "${QT_MKSPECS_DIR}"
- "${QT_MKSPECS_DIR}/*"
- )
- list(JOIN known_platforms "\n " known_platforms)
- message(FATAL_ERROR "Unknown platform ${QT_QMAKE_TARGET_MKSPEC}\n\
+# Used by consumers of prefix builds via INSTALL_INTERFACE (relative path).
+set(QT_DEFAULT_PLATFORM_DEFINITION_DIR "${INSTALL_MKSPECSDIR}/${QT_QMAKE_TARGET_MKSPEC}")
+
+# Used by qtbase in prefix builds via BUILD_INTERFACE
+set(QT_PLATFORM_DEFINITION_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(QT_PLATFORM_DEFINITION_BUILD_INTERFACE_BASE_DIR
+ "${CMAKE_BINARY_DIR}/${INSTALL_MKSPECSDIR}"
+ )
+endif()
+
+get_filename_component(QT_PLATFORM_DEFINITION_BUILD_INTERFACE_DIR
+ "${QT_PLATFORM_DEFINITION_BUILD_INTERFACE_BASE_DIR}/${QT_QMAKE_TARGET_MKSPEC}"
+ ABSOLUTE
+)
+set(QT_PLATFORM_DEFINITION_BUILD_INTERFACE_DIR
+ "${QT_PLATFORM_DEFINITION_BUILD_INTERFACE_DIR}"
+ CACHE INTERNAL "Path to directory that contains qplatformdefs.h"
+)
+
+if(NOT EXISTS "${QT_MKSPECS_DIR}/${QT_QMAKE_TARGET_MKSPEC}")
+ file(GLOB known_platforms
+ LIST_DIRECTORIES true
+ RELATIVE "${QT_MKSPECS_DIR}"
+ "${QT_MKSPECS_DIR}/*"
+ )
+ list(JOIN known_platforms "\n " known_platforms)
+ message(FATAL_ERROR "Unknown platform ${QT_QMAKE_TARGET_MKSPEC}\n\
Known platforms:\n ${known_platforms}")
- endif()
endif()
if(NOT DEFINED QT_DEFAULT_PLATFORM_DEFINITIONS)
@@ -406,8 +415,7 @@ set(QT_PLATFORM_DEFINITIONS ${QT_DEFAULT_PLATFORM_DEFINITIONS}
CACHE STRING "Qt platform specific pre-processor defines")
set(QT_PLATFORM_DEFINITION_DIR "${QT_DEFAULT_PLATFORM_DEFINITION_DIR}"
CACHE PATH "Path to directory that contains qplatformdefs.h")
-set(QT_PLATFORM_DEFINITION_DIR_ABSOLUTE "${QT_DEFAULT_PLATFORM_DEFINITION_DIR_ABSOLUTE}"
- CACHE INTERNAL "Path to directory that contains qplatformdefs.h")
+
set(QT_NAMESPACE "" CACHE STRING "Qt Namespace")
include(QtGlobalStateHelpers)