diff options
Diffstat (limited to 'cmake/QtPublicFinalizerHelpers.cmake')
-rw-r--r-- | cmake/QtPublicFinalizerHelpers.cmake | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/cmake/QtPublicFinalizerHelpers.cmake b/cmake/QtPublicFinalizerHelpers.cmake index 24354654c8..96b5c6c740 100644 --- a/cmake/QtPublicFinalizerHelpers.cmake +++ b/cmake/QtPublicFinalizerHelpers.cmake @@ -1,11 +1,26 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Helper to check if the finalizer mode should be used. -# If true or unset, use finalizer mode. +# If true, use finalizer mode. # If false, use regular mode (usage requirement propagation via associated Qt module) +# Arguments: +# DEFAULT_VALUE specifies the default value of the finalizer mode flag if it is not set. function(__qt_internal_check_finalizer_mode target out_var finalizer) + set(option_args "") + set(single_args DEFAULT_VALUE) + set(multi_args "") + cmake_parse_arguments(arg "${option_args}" "${single_args}" "${multi_args}" ${ARGN}) + + if(NOT DEFINED arg_DEFAULT_VALUE OR arg_DEFAULT_VALUE) + set(arg_DEFAULT_VALUE TRUE) + else() + set(arg_DEFAULT_VALUE FALSE) + endif() get_target_property(value ${target} _qt_${finalizer}_finalizer_mode) if("${value}" STREQUAL "value-NOTFOUND") - set_property(TARGET "${target}" PROPERTY _qt_${finalizer}_finalizer_mode "TRUE") - set(value TRUE) + __qt_internal_enable_finalizer_mode(${target} ${finalizer} "${arg_DEFAULT_VALUE}") + set(value "${arg_DEFAULT_VALUE}") endif() set(${out_var} "${value}" PARENT_SCOPE) endfunction() |