diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index 2b88456878f..e04069c6487 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}") +# Used by consumers of prefix builds via INSTALL_INTERFACE (relative path). +set(QT_DEFAULT_PLATFORM_DEFINITION_DIR "${INSTALL_MKSPECSDIR}/${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 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) diff --git a/cmake/QtPlatformTargetHelpers.cmake b/cmake/QtPlatformTargetHelpers.cmake index 0ff8761f33b..b98894829f5 100644 --- a/cmake/QtPlatformTargetHelpers.cmake +++ b/cmake/QtPlatformTargetHelpers.cmake @@ -7,7 +7,7 @@ function(qt_internal_setup_public_platform_target) add_library(${INSTALL_CMAKE_NAMESPACE}::Platform ALIAS Platform) target_include_directories(Platform INTERFACE - $ + $ $ $ $