2021-03-17 14:39:01 +00:00
|
|
|
# Defines the public Qt::Platform target, which serves as a dependency for all internal Qt target
|
|
|
|
# as well as user projects consuming Qt.
|
2020-10-12 08:55:18 +00:00
|
|
|
function(qt_internal_setup_public_platform_target)
|
2021-07-05 16:07:34 +00:00
|
|
|
qt_internal_get_platform_definition_include_dir(
|
|
|
|
install_interface_definition_dir
|
|
|
|
build_interface_definition_dir
|
|
|
|
)
|
|
|
|
|
2020-10-12 08:55:18 +00:00
|
|
|
## QtPlatform Target:
|
|
|
|
add_library(Platform INTERFACE)
|
|
|
|
add_library(Qt::Platform ALIAS Platform)
|
2021-04-26 15:04:45 +00:00
|
|
|
add_library(${INSTALL_CMAKE_NAMESPACE}::Platform ALIAS Platform)
|
2020-10-12 08:55:18 +00:00
|
|
|
target_include_directories(Platform
|
|
|
|
INTERFACE
|
2021-07-05 16:07:34 +00:00
|
|
|
$<BUILD_INTERFACE:${build_interface_definition_dir}>
|
2020-10-12 08:55:18 +00:00
|
|
|
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
|
2021-07-05 16:07:34 +00:00
|
|
|
$<INSTALL_INTERFACE:${install_interface_definition_dir}>
|
2020-10-12 08:55:18 +00:00
|
|
|
$<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}>
|
|
|
|
)
|
|
|
|
target_compile_definitions(Platform INTERFACE ${QT_PLATFORM_DEFINITIONS})
|
|
|
|
|
|
|
|
# When building on android we need to link against the logging library
|
|
|
|
# in order to satisfy linker dependencies. Both of these libraries are part of
|
|
|
|
# the NDK.
|
|
|
|
if (ANDROID)
|
|
|
|
target_link_libraries(Platform INTERFACE log)
|
|
|
|
endif()
|
|
|
|
|
2021-12-14 08:38:29 +00:00
|
|
|
if (QT_FEATURE_stdlib_libcpp)
|
|
|
|
target_compile_options(Platform INTERFACE "-stdlib=libc++")
|
|
|
|
target_link_options(Platform INTERFACE "-stdlib=libc++")
|
|
|
|
endif()
|
2012-01-23 13:46:58 +00:00
|
|
|
if (QT_FEATURE_no_extern_direct_access)
|
|
|
|
target_compile_options(Platform INTERFACE "-mno-direct-extern-access")
|
|
|
|
endif()
|
2021-12-14 08:38:29 +00:00
|
|
|
|
2020-10-08 20:29:04 +00:00
|
|
|
qt_set_msvc_cplusplus_options(Platform INTERFACE)
|
2020-10-12 08:55:18 +00:00
|
|
|
|
|
|
|
# Propagate minimum C++ 17 via Platform to Qt consumers (apps), after the global features
|
|
|
|
# are computed.
|
|
|
|
qt_set_language_standards_interface_compile_features(Platform)
|
|
|
|
|
|
|
|
# By default enable utf8 sources for both Qt and Qt consumers. Can be opted out.
|
|
|
|
qt_enable_utf8_sources(Platform)
|
|
|
|
|
2021-05-21 08:22:04 +00:00
|
|
|
# By default enable unicode on WIN32 platforms for both Qt and Qt consumers. Can be opted out.
|
|
|
|
qt_internal_enable_unicode_defines(Platform)
|
2021-11-11 17:39:53 +00:00
|
|
|
|
|
|
|
# Generate a pkgconfig for Qt::Platform.
|
|
|
|
qt_internal_generate_pkg_config_file(Platform)
|
2020-10-12 08:55:18 +00:00
|
|
|
endfunction()
|
2021-07-05 16:07:34 +00:00
|
|
|
|
|
|
|
function(qt_internal_get_platform_definition_include_dir install_interface build_interface)
|
|
|
|
# Used by consumers of prefix builds via INSTALL_INTERFACE (relative path).
|
|
|
|
set(${install_interface} "${INSTALL_MKSPECSDIR}/${QT_QMAKE_TARGET_MKSPEC}" PARENT_SCOPE)
|
|
|
|
|
|
|
|
# Used by qtbase in prefix builds via BUILD_INTERFACE
|
|
|
|
set(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(build_interface_base_dir
|
|
|
|
"${QT_BUILD_DIR}/${INSTALL_MKSPECSDIR}"
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
get_filename_component(build_interface_dir
|
|
|
|
"${build_interface_base_dir}/${QT_QMAKE_TARGET_MKSPEC}"
|
|
|
|
ABSOLUTE
|
|
|
|
)
|
|
|
|
set(${build_interface} "${build_interface_dir}" PARENT_SCOPE)
|
|
|
|
endfunction()
|