From f6cd55445d38cb5932f4cfcb5c6d4b9ac187c3eb Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 1 Oct 2021 09:48:42 +0200 Subject: [PATCH] Don't export Qt6::ATSPI2_nolink target in Qt6GuiTargets.cmake We don't have any APSPI2 includes in our public headers and should therefore not export the target that provides ATSPI2 include paths for consumers. Link against PkgConfig::ATSPI2 instead of the _nolink target. The former will not be exported. Pick-to: 6.2 Fixes: QTBUG-97023 Change-Id: I4b12e0c2230917feeb963c02565e6db24f757bd3 Reviewed-by: Alexandru Croitor --- cmake/QtTargetHelpers.cmake | 30 +++++++++++++++++++++--------- src/gui/CMakeLists.txt | 14 +++++++++++--- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake index 2c15b85a58..9f4ef66c8c 100644 --- a/cmake/QtTargetHelpers.cmake +++ b/cmake/QtTargetHelpers.cmake @@ -787,6 +787,26 @@ function(qt_internal_link_internal_platform_for_object_library target) target_link_libraries("${target}" PRIVATE Qt::PlatformModuleInternal) endfunction() +# Use ${dep_target}'s include dirs when building ${target}. +# +# Assumes ${dep_target} is an INTERFACE_LIBRARY that only propagates include dirs and ${target} +# is a Qt module / plugin. +# +# Building ${target} requires ${dep_target}'s include dirs. +# Using ${target} does not require ${dep_target}'s include dirs. +# +# The main use case is adding the private header-only dependency PkgConfig::ATSPI2. +function(qt_internal_add_target_include_dirs target dep_target) + if(NOT TARGET "${target}") + message(FATAL_ERROR "${target} is not a valid target.") + endif() + if(NOT TARGET "${dep_target}") + message(FATAL_ERROR "${dep_target} is not a valid target.") + endif() + + target_include_directories("${target}" PRIVATE + "$") +endfunction() # Use ${dep_target}'s include dirs when building ${target} and optionally propagate the include # dirs to consumers of ${target}. @@ -809,15 +829,7 @@ endfunction() # # The main use case is for propagating WrapVulkanHeaders::WrapVulkanHeaders. function(qt_internal_add_target_include_dirs_and_optionally_propagate target dep_target) - if(NOT TARGET "${target}") - message(FATAL_ERROR "${target} is not a valid target.") - endif() - if(NOT TARGET "${dep_target}") - message(FATAL_ERROR "${dep_target} is not a valid target.") - endif() - - target_include_directories("${target}" PRIVATE - "$") + qt_internal_add_target_include_dirs(${target} ${dep_target}) target_link_libraries("${target}" INTERFACE "$") diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 2e81e9969b..ef0bdfee0b 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -498,7 +498,13 @@ qt_internal_extend_target(Gui CONDITION QT_FEATURE_accessibility AND WIN32 accessible/windows/apisupport/uiatypes_p.h ) -qt_internal_extend_target(Gui CONDITION QT_FEATURE_accessibility AND QT_FEATURE_accessibility_atspi_bridge +if(QT_FEATURE_accessibility AND QT_FEATURE_accessibility_atspi_bridge) + set(atspi_accessibility ON) +else() + set(atspi_accessibility OFF) +endif() + +qt_internal_extend_target(Gui CONDITION atspi_accessibility SOURCES accessible/linux/atspiadaptor.cpp accessible/linux/atspiadaptor_p.h accessible/linux/dbusconnection.cpp accessible/linux/dbusconnection_p.h @@ -519,10 +525,12 @@ qt_internal_extend_target(Gui CONDITION QT_FEATURE_accessibility AND QT_FEATURE_ DBUS_INTERFACE_FLAGS "-i" "QtGui/private/qspi_struct_marshallers_p.h" # special case end - LIBRARIES - PkgConfig::ATSPI2_nolink ) +if(atspi_accessibility) + qt_internal_add_target_include_dirs(Gui PkgConfig::ATSPI2) +endif() + qt_internal_extend_target(Gui CONDITION QT_FEATURE_action SOURCES kernel/qaction.cpp kernel/qaction.h kernel/qaction_p.h