Will be used by WebEngine configure checks to check if the dependencies are met and show an according error message if not. Pick-to: 6.8 6.9 Task-number: QTBUG-122899 Change-Id: I56d46fe5cf12051903d1aec893336be5ae8983a2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
197 lines
6.4 KiB
CMake
197 lines
6.4 KiB
CMake
# Copyright (C) 2024 The Qt Company Ltd.
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
# These internal sbom functions are meant to be used in qt repo CMakeLists.txt files.
|
|
|
|
function(qt_internal_add_sbom target)
|
|
if(NOT QT_GENERATE_SBOM)
|
|
return()
|
|
endif()
|
|
|
|
qt_internal_sbom_get_default_sbom_args("${target}" sbom_extra_args ${ARGN})
|
|
_qt_internal_add_sbom(${target} ${ARGN} ${sbom_extra_args})
|
|
endfunction()
|
|
|
|
function(qt_internal_extend_sbom)
|
|
_qt_internal_extend_sbom(${ARGN})
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_add_license)
|
|
_qt_internal_sbom_add_license(${ARGN})
|
|
endfunction()
|
|
|
|
function(qt_internal_extend_sbom_dependencies)
|
|
_qt_internal_extend_sbom_dependencies(${ARGN})
|
|
endfunction()
|
|
|
|
function(qt_find_package_extend_sbom)
|
|
_qt_find_package_extend_sbom(${ARGN})
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_begin_qt_repo_project)
|
|
_qt_internal_sbom_begin_qt_repo_project(${ARGN})
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_end_qt_repo_project)
|
|
_qt_internal_sbom_end_qt_repo_project(${ARGN})
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_add_files)
|
|
_qt_internal_sbom_add_files(${ARGN})
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_add_cmake_include_step)
|
|
_qt_internal_sbom_add_cmake_include_step(${ARGN})
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_add_external_reference)
|
|
_qt_internal_sbom_generate_add_external_reference(${ARGN})
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_add_project_relationship)
|
|
_qt_internal_sbom_generate_add_project_relationship(${ARGN})
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_generate_tag_value_spdx_document)
|
|
_qt_internal_sbom_generate_tag_value_spdx_document(${ARGN})
|
|
|
|
set(opt_args "")
|
|
set(single_args
|
|
OUT_VAR_OUTPUT_FILE_NAME
|
|
OUT_VAR_OUTPUT_ABSOLUTE_FILE_PATH
|
|
OUT_VAR_DEPS_FOUND
|
|
)
|
|
set(multi_args "")
|
|
cmake_parse_arguments(PARSE_ARGV 0 arg "${opt_args}" "${single_args}" "${multi_args}")
|
|
|
|
if(arg_OUT_VAR_OUTPUT_FILE_NAME)
|
|
set(${arg_OUT_VAR_OUTPUT_FILE_NAME} "${${arg_OUT_VAR_OUTPUT_FILE_NAME}}" PARENT_SCOPE)
|
|
endif()
|
|
|
|
if(arg_OUT_VAR_OUTPUT_ABSOLUTE_FILE_PATH)
|
|
set(${arg_OUT_VAR_OUTPUT_ABSOLUTE_FILE_PATH} "${${arg_OUT_VAR_OUTPUT_ABSOLUTE_FILE_PATH}}"
|
|
PARENT_SCOPE)
|
|
endif()
|
|
|
|
if(arg_OUT_VAR_DEPS_FOUND)
|
|
set(${arg_OUT_VAR_DEPS_FOUND} "${${arg_OUT_VAR_DEPS_FOUND}}" PARENT_SCOPE)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_verify_deps_for_generate_tag_value_spdx_document)
|
|
_qt_internal_sbom_verify_deps_for_generate_tag_value_spdx_document(${ARGN})
|
|
|
|
set(opt_args "")
|
|
set(single_args
|
|
OUT_VAR_DEPS_FOUND
|
|
OUT_VAR_REASON_FAILURE_MESSAGE
|
|
)
|
|
set(multi_args "")
|
|
cmake_parse_arguments(PARSE_ARGV 0 arg "${opt_args}" "${single_args}" "${multi_args}")
|
|
|
|
if(arg_OUT_VAR_DEPS_FOUND)
|
|
set(${arg_OUT_VAR_DEPS_FOUND} "${${arg_OUT_VAR_DEPS_FOUND}}" PARENT_SCOPE)
|
|
endif()
|
|
|
|
if(arg_OUT_VAR_REASON_FAILURE_MESSAGE)
|
|
set(${arg_OUT_VAR_REASON_FAILURE_MESSAGE}
|
|
"${${arg_OUT_VAR_REASON_FAILURE_MESSAGE}}" 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()
|
|
|
|
macro(qt_internal_sbom_get_git_version_vars)
|
|
_qt_internal_sbom_get_git_version_vars()
|
|
endmacro()
|
|
|
|
function(qt_internal_sbom_get_project_supplier out_var)
|
|
get_property(result GLOBAL PROPERTY _qt_sbom_project_supplier)
|
|
set(${out_var} "${result}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_get_project_supplier_url out_var)
|
|
get_property(result GLOBAL PROPERTY _qt_sbom_project_supplier_url)
|
|
set(${out_var} "${result}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_get_project_namespace out_var)
|
|
get_property(result GLOBAL PROPERTY _qt_sbom_project_namespace)
|
|
set(${out_var} "${result}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_compute_project_namespace out_var)
|
|
_qt_internal_sbom_compute_project_namespace(result ${ARGN})
|
|
set(${out_var} "${result}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_compute_project_file_name out_var)
|
|
_qt_internal_sbom_compute_project_file_name(result ${ARGN})
|
|
set(${out_var} "${result}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(qt_internal_sbom_get_sanitized_spdx_id out_var hint)
|
|
_qt_internal_sbom_get_sanitized_spdx_id(result "${hint}")
|
|
set(${out_var} "${result}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
# Gets a list of default sbom args to use when processing qt entity types.
|
|
function(qt_internal_sbom_get_default_sbom_args target out_var)
|
|
_qt_internal_get_sbom_add_target_options(opt_args single_args multi_args)
|
|
list(APPEND opt_args IMMEDIATE_FINALIZATION)
|
|
cmake_parse_arguments(PARSE_ARGV 2 arg "${opt_args}" "${single_args}" "${multi_args}")
|
|
|
|
_qt_internal_validate_all_args_are_parsed(arg)
|
|
|
|
set(sbom_args "")
|
|
|
|
list(APPEND sbom_args USE_ATTRIBUTION_FILES)
|
|
list(APPEND sbom_args __QT_INTERNAL_HANDLE_QT_ENTITY_TYPE_PACKAGE_VERSION)
|
|
list(APPEND sbom_args __QT_INTERNAL_HANDLE_QT_ENTITY_TYPE_SUPPLIER)
|
|
list(APPEND sbom_args __QT_INTERNAL_HANDLE_QT_ENTITY_TYPE_DOWNLOAD_LOCATION)
|
|
list(APPEND sbom_args __QT_INTERNAL_HANDLE_QT_ENTITY_TYPE_LICENSE)
|
|
list(APPEND sbom_args __QT_INTERNAL_HANDLE_QT_ENTITY_TYPE_COPYRIGHTS)
|
|
list(APPEND sbom_args __QT_INTERNAL_HANDLE_QT_ENTITY_TYPE_CPE)
|
|
list(APPEND sbom_args __QT_INTERNAL_HANDLE_QT_ENTITY_TYPE_PURL)
|
|
list(APPEND sbom_args __QT_INTERNAL_HANDLE_QT_ENTITY_ATTRIBUTION_FILES)
|
|
|
|
set(${out_var} "${sbom_args}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(qt_internal_extend_qt_entity_sbom target)
|
|
qt_internal_sbom_get_default_sbom_args("${target}" sbom_extra_args ${ARGN})
|
|
_qt_internal_extend_sbom(${target} ${ARGN} ${sbom_extra_args})
|
|
endfunction()
|