From abb19da5727c63783c64caefa11562a9086b4707 Mon Sep 17 00:00:00 2001 From: Alexey Edelev Date: Tue, 24 Aug 2021 13:30:51 +0200 Subject: Add missing PRIVATE_MODULE_INTERFACEs to INTERNAL_MODULEs To detect the internal module ouside the qt_internal_add_module function need to mark it with the property. This adds _qt_is_internal_module property to the Qt internal modules. Since PRIVATE_MODULE_INTERFACE only was applicable to pure Private modules, INTERNAL_MODULEs is missing those dependencies if they were specified. Add extra condition to qt_internal_extend_target to link PRIVATE_MODULE_INTERFACE libraries to internal modules as well. Pick-to: 6.2 6.1 Change-Id: I9c32fa5bad3aff365f5d7663349e5365d5f1d72d Reviewed-by: Alexandru Croitor --- cmake/QtModuleHelpers.cmake | 4 ++++ cmake/QtTargetHelpers.cmake | 6 ++++++ 2 files changed, 10 insertions(+) (limited to 'cmake') diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake index 634c4a4c33..47a02b1a00 100644 --- a/cmake/QtModuleHelpers.cmake +++ b/cmake/QtModuleHelpers.cmake @@ -129,6 +129,10 @@ function(qt_internal_add_module target) qt_internal_module_info(module "${target}") qt_internal_add_qt_repo_known_module("${target}") + if(arg_INTERNAL_MODULE) + set_target_properties(${target} PROPERTIES _qt_is_internal_module TRUE) + set_property(TARGET ${target} APPEND PROPERTY EXPORT_PROPERTIES _qt_is_internal_module) + endif() if(NOT arg_CONFIG_MODULE_NAME) set(arg_CONFIG_MODULE_NAME "${module_lower}") diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake index f497d55924..cc7481aec1 100644 --- a/cmake/QtTargetHelpers.cmake +++ b/cmake/QtTargetHelpers.cmake @@ -101,6 +101,12 @@ function(qt_internal_extend_target target) endforeach() set(target_private "${target}Private") + get_target_property(is_internal_module ${target} _qt_is_internal_module) + # Internal modules don't have Private targets but we still need to + # propagate their private dependencies. + if(is_internal_module) + set(target_private "${target}") + endif() if(TARGET "${target_private}") target_link_libraries("${target_private}" INTERFACE ${arg_PRIVATE_MODULE_INTERFACE}) -- cgit v1.2.3