From 0f5699ee3ddb2ec426f1b9c51484ec96241db8bf Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Thu, 20 Jun 2024 18:34:17 +0200 Subject: [PATCH] CMake: Only record existing system library targets for SBOM In certain cases the qt_find_package(PROVIDED_TARGETS) might not exist, so we shouldn't record the targets for SBOM spdx id registration in that case. Amends 37a5e001277db9e1392a242171ab2b88cb6c3049 Pick-to: 6.8 Task-number: QTBUG-122899 Change-Id: Iada6b5a20a3e7526f18ae4385db8a29fee68ab36 Reviewed-by: Alexey Edelev Reviewed-by: Joerg Bornemann --- cmake/QtPublicSbomHelpers.cmake | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cmake/QtPublicSbomHelpers.cmake b/cmake/QtPublicSbomHelpers.cmake index f7944eb9923..1c6398a82de 100644 --- a/cmake/QtPublicSbomHelpers.cmake +++ b/cmake/QtPublicSbomHelpers.cmake @@ -1417,7 +1417,17 @@ function(_qt_internal_sbom_record_system_library_spdx_ids) foreach(target IN LISTS recorded_targets) get_property(args GLOBAL PROPERTY _qt_internal_sbom_recorded_system_library_spdx_options_${target}) - _qt_internal_sbom_record_system_library_spdx_id(${target} ${args}) + + # qt_find_package PROVIDED_TARGETS might refer to non-existent targets in certain cases, + # like zstd::libzstd_shared for qt_find_package(WrapZSTD), because we are not sure what + # kind of zstd build was done. Make sure to check if the target exists before recording it. + if(TARGET "${target}") + _qt_internal_sbom_record_system_library_spdx_id(${target} ${args}) + else() + message(DEBUG + "Skipping recording system library for SBOM because target does not exist: " + " ${target}") + endif() endforeach() endfunction()