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 <alexey.edelev@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
(cherry picked from commit 97ac4053137c7d0ff5ec71de22cf8c0c7af7006a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit a32359a10139e065dd634ad11ee42f5097ddb3d5)
This commit is contained in:
Alexandru Croitor 2024-12-09 17:56:35 +01:00 committed by Qt Cherry-pick Bot
parent 063c21937c
commit dc438ae231

View File

@ -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()