diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake index bf8be498a2a..dc14a6110cd 100644 --- a/cmake/QtBaseGlobalTargets.cmake +++ b/cmake/QtBaseGlobalTargets.cmake @@ -68,7 +68,7 @@ qt_internal_create_toolchain_file() ## Library to hold global features: ## These features are stored and accessed via Qt::GlobalConfig, but the ## files always lived in Qt::Core, so we keep it that way -add_library(GlobalConfig INTERFACE) +qt_internal_add_platform_internal_target(GlobalConfig) target_include_directories(GlobalConfig INTERFACE $ $ @@ -121,9 +121,8 @@ qt_generate_qmake_and_qtpaths_wrapper_for_target() # Depends on the global features being evaluated. qt_internal_create_wrapper_scripts() -add_library(Qt::GlobalConfig ALIAS GlobalConfig) -add_library(GlobalConfigPrivate INTERFACE) +qt_internal_add_platform_internal_target(GlobalConfigPrivate) target_link_libraries(GlobalConfigPrivate INTERFACE GlobalConfig) target_include_directories(GlobalConfigPrivate INTERFACE $ @@ -131,12 +130,6 @@ target_include_directories(GlobalConfigPrivate INTERFACE $ $ ) -add_library(Qt::GlobalConfigPrivate ALIAS GlobalConfigPrivate) -add_library(${QT_CMAKE_EXPORT_NAMESPACE}::GlobalConfigPrivate ALIAS GlobalConfigPrivate) -qt_internal_add_sbom(GlobalConfigPrivate - TYPE QT_MODULE - IMMEDIATE_FINALIZATION -) qt_internal_setup_public_platform_target() diff --git a/cmake/QtBaseHelpers.cmake b/cmake/QtBaseHelpers.cmake index a16f6987b46..63e445e3469 100644 --- a/cmake/QtBaseHelpers.cmake +++ b/cmake/QtBaseHelpers.cmake @@ -166,6 +166,22 @@ macro(qt_internal_qtbase_build_repo) ## Build System tests: include(QtBaseCMakeTesting) + ## Include CoreMacros() for qt6_generate_meta_types() + ## Also needed for the QtBaseGlobalTargets creation. + set(QT_DEFAULT_MAJOR_VERSION 6) + include(src/corelib/Qt6CoreMacros.cmake) + + # Needed when building qtbase for android. + if(ANDROID) + include(src/corelib/Qt6AndroidMacros.cmake) + endif() + + # Needed when building for WebAssembly. + if(WASM) + include(cmake/QtWasmHelpers.cmake) + include(src/corelib/Qt6WasmMacros.cmake) + endif() + ## Targets for global features, etc.: include(QtBaseGlobalTargets) @@ -173,20 +189,11 @@ macro(qt_internal_qtbase_build_repo) ## feature variables are available. qt_set_language_standards() - #include CoreMacros() for qt6_generate_meta_types() - set(QT_DEFAULT_MAJOR_VERSION 6) - include(src/corelib/Qt6CoreMacros.cmake) - - # Needed when building qtbase for android. if(ANDROID) - include(src/corelib/Qt6AndroidMacros.cmake) _qt_internal_create_global_android_targets() endif() if(WASM) - # Needed when building for WebAssembly. - include(cmake/QtWasmHelpers.cmake) - include(src/corelib/Qt6WasmMacros.cmake) qt_internal_setup_wasm_target_properties(Platform) endif() diff --git a/cmake/QtInternalTargets.cmake b/cmake/QtInternalTargets.cmake index 37b66095367..f7b32d18f23 100644 --- a/cmake/QtInternalTargets.cmake +++ b/cmake/QtInternalTargets.cmake @@ -133,45 +133,20 @@ function(qt_internal_add_global_definition definition) endif() endfunction() -add_library(PlatformCommonInternal INTERFACE) -qt_internal_add_target_aliases(PlatformCommonInternal) +qt_internal_add_platform_internal_target(PlatformCommonInternal) target_link_libraries(PlatformCommonInternal INTERFACE Platform) -qt_internal_add_sbom(PlatformCommonInternal - TYPE QT_MODULE - IMMEDIATE_FINALIZATION -) -add_library(PlatformModuleInternal INTERFACE) -qt_internal_add_target_aliases(PlatformModuleInternal) +qt_internal_add_platform_internal_target(PlatformModuleInternal) target_link_libraries(PlatformModuleInternal INTERFACE PlatformCommonInternal) -qt_internal_add_sbom(PlatformModuleInternal - TYPE QT_MODULE - IMMEDIATE_FINALIZATION -) -add_library(PlatformPluginInternal INTERFACE) -qt_internal_add_target_aliases(PlatformPluginInternal) +qt_internal_add_platform_internal_target(PlatformPluginInternal) target_link_libraries(PlatformPluginInternal INTERFACE PlatformCommonInternal) -qt_internal_add_sbom(PlatformPluginInternal - TYPE QT_MODULE - IMMEDIATE_FINALIZATION -) -add_library(PlatformAppInternal INTERFACE) -qt_internal_add_target_aliases(PlatformAppInternal) +qt_internal_add_platform_internal_target(PlatformAppInternal) target_link_libraries(PlatformAppInternal INTERFACE PlatformCommonInternal) -qt_internal_add_sbom(PlatformAppInternal - TYPE QT_MODULE - IMMEDIATE_FINALIZATION -) -add_library(PlatformToolInternal INTERFACE) -qt_internal_add_target_aliases(PlatformToolInternal) +qt_internal_add_platform_internal_target(PlatformToolInternal) target_link_libraries(PlatformToolInternal INTERFACE PlatformAppInternal) -qt_internal_add_sbom(PlatformToolInternal - TYPE QT_MODULE - IMMEDIATE_FINALIZATION -) qt_internal_add_global_definition(QT_NO_JAVA_STYLE_ITERATORS) qt_internal_add_global_definition(QT_NO_QASCONST) diff --git a/cmake/QtPlatformTargetHelpers.cmake b/cmake/QtPlatformTargetHelpers.cmake index a89239b92ac..0b2025666de 100644 --- a/cmake/QtPlatformTargetHelpers.cmake +++ b/cmake/QtPlatformTargetHelpers.cmake @@ -10,9 +10,7 @@ function(qt_internal_setup_public_platform_target) ) ## QtPlatform Target: - add_library(Platform INTERFACE) - add_library(Qt::Platform ALIAS Platform) - add_library(${INSTALL_CMAKE_NAMESPACE}::Platform ALIAS Platform) + qt_internal_add_platform_target(Platform) target_include_directories(Platform INTERFACE $ diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake index 32081eb1f62..a9bfa39c2bf 100644 --- a/cmake/QtTargetHelpers.cmake +++ b/cmake/QtTargetHelpers.cmake @@ -1730,6 +1730,27 @@ function(qt_internal_export_genex_properties) ) endfunction() +# A small wrapper for adding the Platform target, and a building block for the PlatformXInternal +# and GlobalConfig INTERFACE targets to apply common options. +function(qt_internal_add_platform_target target) + _qt_internal_add_library("${target}" INTERFACE) + qt_internal_add_target_aliases("${target}") +endfunction() + +# A small wrapper for adding the PlatformXInternal and GlobalConfig INTERFACE targets to apply +# common options. +# They can't be added via qt_internal_add_module, because it automatically links to the +# PlatformInternal targets creating a cyclic dependency. +function(qt_internal_add_platform_internal_target target) + qt_internal_add_platform_target("${target}") + qt_internal_mark_as_internal_library("${target}") + + qt_internal_add_sbom("${target}" + TYPE QT_MODULE + IMMEDIATE_FINALIZATION + ) +endfunction() + # The macro promotes the Qt platform targets and their dependencies to global. The macro shouldn't # be called explicitly in regular cases. It's called right after the first find_package(Qt ...) # call in the qt_internal_project_setup macro.