diff options
author | Alexey Edelev <alexey.edelev@qt.io> | 2021-07-05 13:28:58 +0200 |
---|---|---|
committer | Alexey Edelev <alexey.edelev@qt.io> | 2021-07-05 22:00:01 +0200 |
commit | 478f5fcde66a49b710c427447916a0ee0e4d9e0a (patch) | |
tree | 168982b955bcca1f1bd9ae6c2c95c8bd7b65807e /cmake/QtBuild.cmake | |
parent | 09d0fc068d4b32aa9cd00d38171e62fddf82c83a (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.cmake | 58 |
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) |