diff options
author | Cristian Le <[email protected]> | 2025-03-12 12:04:00 +0100 |
---|---|---|
committer | Cristian Le <[email protected]> | 2025-06-27 20:29:16 +0200 |
commit | 2984aa9c795f240844a6c263b45d95309a9db931 (patch) | |
tree | 24b5ba578afe4442da7dd416c4843976f80c6994 | |
parent | 06eb3bcf083857e32aaef96fad3e7f274d4dfe9f (diff) |
Expand `_qt_internal_check_multiple_inclusion` to accept namespace
Includes backwards compatibility for the old interface
Change-Id: I6aeb62eff2a4e9a27d797bd9e06fbe68b2916ae6
Reviewed-by: Alexandru Croitor <[email protected]>
-rw-r--r-- | cmake/QtPublicCMakeHelpers.cmake | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/cmake/QtPublicCMakeHelpers.cmake b/cmake/QtPublicCMakeHelpers.cmake index 1cb6e5a2412..bc856914b4f 100644 --- a/cmake/QtPublicCMakeHelpers.cmake +++ b/cmake/QtPublicCMakeHelpers.cmake @@ -361,21 +361,44 @@ function(_qt_internal_add_phony_target_deferred target) endif() endfunction() +# Equivalent to the auto-generated `*Targets.cmake` multi-inclusion check +# # The helper function that checks if module was included multiple times, and has the inconsistent # set of targets that belong to the module. It's expected that either all 'targets' or none of them # will be written to the 'targets_not_defined' variable, if the module was not or was # searched before accordingly. -function(_qt_internal_check_multiple_inclusion targets_not_defined targets) +function(_qt_internal_check_multiple_inclusion targets_not_defined) + # Backport for the old syntax + if(ARGC EQUAL 2) + _qt_internal_check_multiple_inclusion(${targets_not_defined} + TARGETS ${ARGN} + ) + set(${targets_not_defined} "${${targets_not_defined}}" PARENT_SCOPE) + return() + endif() + + set(option_args "") + set(single_args + NAMESPACE + ) + set(multi_args + TARGETS + ) + cmake_parse_arguments(PARSE_ARGV 1 arg "${option_args}" "${single_args}" "${multi_args}") + + if(NOT arg_NAMESPACE) + set(arg_NAMESPACE Qt::) + endif() + set(targets_defined "") set(${targets_not_defined} "") set(expected_targets "") - foreach(expected_target ${targets}) + foreach(expected_target ${arg_TARGETS}) list(APPEND expected_targets ${expected_target}) - if(NOT TARGET Qt::${expected_target}) - list(APPEND ${targets_not_defined} ${expected_target}) - endif() - if(TARGET Qt::${expected_target}) + if(TARGET "${arg_NAMESPACE}${expected_target}") list(APPEND targets_defined ${expected_target}) + else() + list(APPEND ${targets_not_defined} ${expected_target}) endif() endforeach() if("${targets_defined}" STREQUAL "${expected_targets}") |