From 84a9f934b2c12a09625de275808c360cf4717a8c Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Thu, 7 Mar 2024 18:02:56 +0100 Subject: [PATCH] CMake: Fix calling some functions in CMake 3.16 Calling qt_internal_get_framework_info failed when the target was an INTERFACE_LIBRARY, because it tried to access properties that aren't allowed on such a target. Interface libraries can't be frameworks, so just add an early return guard. Do the same for qt_internal_apply_apple_privacy_manifest. Change-Id: I85b73449a0d56b92cd01b032d4ce5db905643c9f Reviewed-by: Alexey Edelev --- cmake/QtFrameworkHelpers.cmake | 6 ++++++ cmake/QtModuleHelpers.cmake | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/cmake/QtFrameworkHelpers.cmake b/cmake/QtFrameworkHelpers.cmake index 7d10a981083..71227a0ea8c 100644 --- a/cmake/QtFrameworkHelpers.cmake +++ b/cmake/QtFrameworkHelpers.cmake @@ -195,6 +195,12 @@ endfunction() # version, framework bundle version and tailing module name, e.g. # 'QtCore.framework/Versions/A/Headers/6.0.0/Core' function(qt_internal_get_framework_info out_var target) + # Avoid "INTERFACE_LIBRARY targets may only have whitelisted properties" error on CMake < 3.17. + get_target_property(target_type ${target} TYPE) + if("${target_type}" STREQUAL "INTERFACE_LIBRARY") + return() + endif() + get_target_property(${out_var}_version ${target} FRAMEWORK_VERSION) get_target_property(${out_var}_bundle_version ${target} MACOSX_FRAMEWORK_BUNDLE_VERSION) diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake index cc111affad8..d7957fa4bc6 100644 --- a/cmake/QtModuleHelpers.cmake +++ b/cmake/QtModuleHelpers.cmake @@ -915,6 +915,12 @@ set(QT_ALLOW_MISSING_TOOLS_PACKAGES TRUE)") endfunction() function(qt_internal_apply_apple_privacy_manifest target) + # Avoid "INTERFACE_LIBRARY targets may only have whitelisted properties" error on CMake < 3.17. + get_target_property(target_type ${target} TYPE) + if("${target_type}" STREQUAL "INTERFACE_LIBRARY") + return() + endif() + if(APPLE) # Privacy manifest get_target_property(is_framework ${target} FRAMEWORK)