summaryrefslogtreecommitdiffstats
path: root/cmake/QtPublicFinalizerHelpers.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/QtPublicFinalizerHelpers.cmake')
-rw-r--r--cmake/QtPublicFinalizerHelpers.cmake21
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()