From 433d7116709d9c34bcef997d83101d102f99048a Mon Sep 17 00:00:00 2001 From: Alexey Edelev Date: Mon, 24 Oct 2022 18:35:12 +0200 Subject: [PATCH] Add NO_HEADERSCLEAN_CHECK flag to qt_internal_add_module Some modules may have header files that do not pass headersclean check under some conditions. It's nice to have an option in the qt_internal_add_module function to disable the check for the modules of this kind. At the moment this flag is useful for the ActiveQt module, since it syncs and installs header files that don't belong to it. Amends b89d63515bb352cecfd87e709320a2db5b6a1906 Task-number: QTBUG-103196 Change-Id: I21a82d50d50bdac225ed483ab0cc50339c2a4873 Reviewed-by: Qt CI Bot Reviewed-by: Alexandru Croitor --- cmake/QtHeadersClean.cmake | 4 ++-- cmake/QtModuleHelpers.cmake | 12 ++++++++---- cmake/QtSyncQtHelpers.cmake | 3 ++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/cmake/QtHeadersClean.cmake b/cmake/QtHeadersClean.cmake index ae2c44c42d5..cda874eade9 100644 --- a/cmake/QtHeadersClean.cmake +++ b/cmake/QtHeadersClean.cmake @@ -5,8 +5,8 @@ # ${module_headers} with a custom set of defines. This makes sure our public headers # are self-contained, and also compile with more strict compiler options. function(qt_internal_add_headersclean_target module_target module_headers) - get_target_property(has_headers ${module_target} _qt_module_has_headers) - if(NOT has_headers) + get_target_property(no_headersclean_check ${module_target} _qt_no_headersclean_check) + if(no_headersclean_check) return() endif() diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake index a5ff37d5309..2c193aae05d 100644 --- a/cmake/QtModuleHelpers.cmake +++ b/cmake/QtModuleHelpers.cmake @@ -15,6 +15,7 @@ macro(qt_internal_get_internal_add_module_keywords option_args single_args multi NO_CONFIG_HEADER_FILE NO_ADDITIONAL_TARGET_INFO NO_GENERATE_METATYPES + NO_HEADERSCLEAN_CHECK GENERATE_CPP_EXPORTS # TODO: Rename to NO_GENERATE_CPP_EXPORTS once migration is done GENERATE_METATYPES # TODO: Remove once it is not used anymore GENERATE_PRIVATE_CPP_EXPORTS @@ -490,6 +491,11 @@ function(qt_internal_add_module target) endif() endif() + if(arg_NO_HEADERSCLEAN_CHECK OR arg_NO_MODULE_HEADERS OR arg_NO_SYNC_QT + OR NOT QT_FEATURE_headersclean) + set_target_properties("${target}" PROPERTIES _qt_no_headersclean_check ON) + endif() + if(NOT arg_HEADER_MODULE) # Plugin types associated to a module if(NOT "x${arg_PLUGIN_TYPES}" STREQUAL "x") @@ -876,7 +882,7 @@ set(QT_LIBINFIX \"${QT_LIBINFIX}\")") endif() endif() - if(QT_FEATURE_headersclean AND NOT arg_NO_MODULE_HEADERS AND NOT QT_USE_SYNCQT_CPP) + if(NOT QT_USE_SYNCQT_CPP) qt_internal_add_headersclean_target( ${target} "${module_headers_clean}") @@ -918,9 +924,7 @@ function(qt_finalize_module target) # property which supposed to be updated inside every qt_internal_install_module_headers # call. if(QT_USE_SYNCQT_CPP) - if(QT_FEATURE_headersclean) - qt_internal_add_headersclean_target(${target} "${module_headers_public}") - endif() + qt_internal_add_headersclean_target(${target} "${module_headers_public}") qt_internal_target_sync_headers(${target} "${module_headers_all}" "${module_headers_generated}") get_target_property(module_depends_header ${target} _qt_module_depends_header) diff --git a/cmake/QtSyncQtHelpers.cmake b/cmake/QtSyncQtHelpers.cmake index 82c855f7a6c..5d80b0d55f7 100644 --- a/cmake/QtSyncQtHelpers.cmake +++ b/cmake/QtSyncQtHelpers.cmake @@ -257,7 +257,8 @@ function(qt_internal_target_sync_headers target module_headers module_headers_ge set(non_qt_module_argument "-nonQt") else() list(APPEND syncqt_outputs "${module_build_interface_include_dir}/${module}") - if(QT_FEATURE_headersclean) + get_target_property(no_headersclean_check ${target} _qt_no_headersclean_check) + if(NOT no_headersclean_check) list(APPEND syncqt_outputs "${CMAKE_CURRENT_BINARY_DIR}/${module}_header_check_exceptions") endif()