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>
This commit is contained in:
parent
09d0fc068d
commit
478f5fcde6
@ -372,21 +372,31 @@ else()
|
|||||||
set(QT_QMAKE_HOST_MKSPEC "${QT_QMAKE_TARGET_MKSPEC}")
|
set(QT_QMAKE_HOST_MKSPEC "${QT_QMAKE_TARGET_MKSPEC}")
|
||||||
endif()
|
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).
|
# Used by consumers of prefix builds via INSTALL_INTERFACE (relative path).
|
||||||
set(QT_DEFAULT_PLATFORM_DEFINITION_DIR "${INSTALL_MKSPECSDIR}/${QT_QMAKE_TARGET_MKSPEC}")
|
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}")
|
# 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
|
file(GLOB known_platforms
|
||||||
LIST_DIRECTORIES true
|
LIST_DIRECTORIES true
|
||||||
RELATIVE "${QT_MKSPECS_DIR}"
|
RELATIVE "${QT_MKSPECS_DIR}"
|
||||||
@ -396,7 +406,6 @@ elseif(QT_QMAKE_TARGET_MKSPEC)
|
|||||||
message(FATAL_ERROR "Unknown platform ${QT_QMAKE_TARGET_MKSPEC}\n\
|
message(FATAL_ERROR "Unknown platform ${QT_QMAKE_TARGET_MKSPEC}\n\
|
||||||
Known platforms:\n ${known_platforms}")
|
Known platforms:\n ${known_platforms}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT DEFINED QT_DEFAULT_PLATFORM_DEFINITIONS)
|
if(NOT DEFINED QT_DEFAULT_PLATFORM_DEFINITIONS)
|
||||||
set(QT_DEFAULT_PLATFORM_DEFINITIONS "")
|
set(QT_DEFAULT_PLATFORM_DEFINITIONS "")
|
||||||
@ -406,8 +415,7 @@ set(QT_PLATFORM_DEFINITIONS ${QT_DEFAULT_PLATFORM_DEFINITIONS}
|
|||||||
CACHE STRING "Qt platform specific pre-processor defines")
|
CACHE STRING "Qt platform specific pre-processor defines")
|
||||||
set(QT_PLATFORM_DEFINITION_DIR "${QT_DEFAULT_PLATFORM_DEFINITION_DIR}"
|
set(QT_PLATFORM_DEFINITION_DIR "${QT_DEFAULT_PLATFORM_DEFINITION_DIR}"
|
||||||
CACHE PATH "Path to directory that contains qplatformdefs.h")
|
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")
|
set(QT_NAMESPACE "" CACHE STRING "Qt Namespace")
|
||||||
|
|
||||||
include(QtGlobalStateHelpers)
|
include(QtGlobalStateHelpers)
|
||||||
|
@ -7,7 +7,7 @@ function(qt_internal_setup_public_platform_target)
|
|||||||
add_library(${INSTALL_CMAKE_NAMESPACE}::Platform ALIAS Platform)
|
add_library(${INSTALL_CMAKE_NAMESPACE}::Platform ALIAS Platform)
|
||||||
target_include_directories(Platform
|
target_include_directories(Platform
|
||||||
INTERFACE
|
INTERFACE
|
||||||
$<BUILD_INTERFACE:${QT_PLATFORM_DEFINITION_DIR_ABSOLUTE}>
|
$<BUILD_INTERFACE:${QT_PLATFORM_DEFINITION_BUILD_INTERFACE_DIR}>
|
||||||
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
|
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
|
||||||
$<INSTALL_INTERFACE:${QT_PLATFORM_DEFINITION_DIR}>
|
$<INSTALL_INTERFACE:${QT_PLATFORM_DEFINITION_DIR}>
|
||||||
$<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}>
|
$<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user