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,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)
|
||||
|
@ -7,7 +7,7 @@ function(qt_internal_setup_public_platform_target)
|
||||
add_library(${INSTALL_CMAKE_NAMESPACE}::Platform ALIAS Platform)
|
||||
target_include_directories(Platform
|
||||
INTERFACE
|
||||
$<BUILD_INTERFACE:${QT_PLATFORM_DEFINITION_DIR_ABSOLUTE}>
|
||||
$<BUILD_INTERFACE:${QT_PLATFORM_DEFINITION_BUILD_INTERFACE_DIR}>
|
||||
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
|
||||
$<INSTALL_INTERFACE:${QT_PLATFORM_DEFINITION_DIR}>
|
||||
$<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}>
|
||||
|
Loading…
x
Reference in New Issue
Block a user