From dc438ae23140c2ff853a0eefe7c8a10099a73878 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Mon, 9 Dec 2024 17:56:35 +0100 Subject: [PATCH] CMake: Add internal functions to get various kinds of spdx ids These can be useful when adding custom relationships to the generated SBOM document. Sample usages could be: qt_internal_sbom_get_target_spdx_id(Svg svg_spdx_id) qt_internal_sbom_get_project_spdx_id(project_spdx_id) qt_internal_sbom_get_external_document_ref_spdx_id( "qt5compat" document_ref_spdx_id) Task-number: QTBUG-122899 Task-number: QTBUG-129901 Task-number: QTBUG-131377 Change-Id: Idbd5c8bffece50871f995805b619226e32957866 Reviewed-by: Alexey Edelev Reviewed-by: Joerg Bornemann (cherry picked from commit 97ac4053137c7d0ff5ec71de22cf8c0c7af7006a) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit a32359a10139e065dd634ad11ee42f5097ddb3d5) --- cmake/QtSbomHelpers.cmake | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/cmake/QtSbomHelpers.cmake b/cmake/QtSbomHelpers.cmake index 095888337e8..dc5b476f766 100644 --- a/cmake/QtSbomHelpers.cmake +++ b/cmake/QtSbomHelpers.cmake @@ -67,3 +67,37 @@ function(qt_internal_sbom_generate_tag_value_spdx_document) PARENT_SCOPE) endif() endfunction() + +function(qt_internal_sbom_get_project_spdx_id out_var) + set(result "") + + if(QT_GENERATE_SBOM) + get_cmake_property(project_spdx_id _qt_internal_sbom_project_spdx_id) + if(project_spdx_id) + set(result "${project_spdx_id}") + endif() + endif() + + set(${out_var} "${result}" PARENT_SCOPE) +endfunction() + +function(qt_internal_sbom_get_target_spdx_id target out_var) + set(result "") + + if(QT_GENERATE_SBOM) + _qt_internal_sbom_get_spdx_id_for_target(${target} result) + endif() + + set(${out_var} "${result}" PARENT_SCOPE) +endfunction() + +function(qt_internal_sbom_get_external_document_ref_spdx_id project_name out_var) + set(result "") + + if(QT_GENERATE_SBOM) + string(TOLOWER "${project_name}" project_name_lowercase) + _qt_internal_sbom_get_external_document_ref_spdx_id("${project_name_lowercase}" result) + endif() + + set(${out_var} "${result}" PARENT_SCOPE) +endfunction()