summaryrefslogtreecommitdiffstats
path: root/cmake/QtSbomHelpers.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/QtSbomHelpers.cmake')
-rw-r--r--cmake/QtSbomHelpers.cmake98
1 files changed, 98 insertions, 0 deletions
diff --git a/cmake/QtSbomHelpers.cmake b/cmake/QtSbomHelpers.cmake
index 75694179fd1..c3ddc581427 100644
--- a/cmake/QtSbomHelpers.cmake
+++ b/cmake/QtSbomHelpers.cmake
@@ -194,3 +194,101 @@ 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()
+
+# Helper function to convert a boolean SBOM option into a "yes" / "no" string.
+function(qt_internal_is_sbom_option_enabled var_name out_var)
+ if("${${var_name}}")
+ set(value "yes")
+ else()
+ set(value "no")
+ endif()
+ set(${out_var} "${value}" PARENT_SCOPE)
+endfunction()
+
+# Helper function to get a summary suffix for SBOM options that are enabled, but might be skipped
+# if their dependencies are missing.
+function(qt_internal_get_sbom_option_required_suffix var_name out_var)
+ if("${${var_name}}")
+ set(value "")
+ else()
+ set(value " (skipped if dependencies are missing)")
+ endif()
+ set(${out_var} "${value}" PARENT_SCOPE)
+endfunction()
+
+# Adds SBOM summary info to the configuration summary.
+function(qt_internal_add_sbom_summary_info)
+ qt_configure_add_summary_section(NAME "SBOM")
+
+ # Build SBOM info.
+ qt_internal_is_sbom_option_enabled(QT_GENERATE_SBOM value)
+ qt_configure_add_summary_entry(ARGS "Generate SBOM" TYPE "message" MESSAGE "${value}")
+
+ # Only show the details if generation is enabled.
+ if(QT_GENERATE_SBOM)
+ qt_internal_is_sbom_option_enabled(QT_SBOM_GENERATE_SPDX_V2 value)
+ qt_configure_add_summary_entry(ARGS "Generate SPDX v2.3"
+ TYPE "message" MESSAGE "${value}")
+
+ qt_internal_is_sbom_option_enabled(QT_SBOM_GENERATE_SPDX_V2_JSON value)
+ qt_internal_get_sbom_option_required_suffix(QT_SBOM_REQUIRE_GENERATE_SPDX_V2_JSON suffix)
+ qt_configure_add_summary_entry(ARGS "Generate SPDX v2.3 JSON"
+ TYPE "message" MESSAGE "${value}${suffix}")
+
+ qt_internal_is_sbom_option_enabled(QT_SBOM_VERIFY_SPDX_V2 value)
+ qt_internal_get_sbom_option_required_suffix(QT_SBOM_REQUIRE_VERIFY_SPDX_V2 suffix)
+ qt_configure_add_summary_entry(ARGS "Verify SPDX v2.3 JSON"
+ TYPE "message" MESSAGE "${value}${suffix}")
+
+ qt_internal_is_sbom_option_enabled(QT_SBOM_GENERATE_CYDX_V1_6 value)
+ qt_internal_get_sbom_option_required_suffix(QT_SBOM_REQUIRE_GENERATE_CYDX_V1_6 suffix)
+ qt_configure_add_summary_entry(ARGS "Generate CyloneDX v1.6"
+ TYPE "message" MESSAGE "${value}${suffix}")
+
+ qt_internal_is_sbom_option_enabled(QT_SBOM_VERIFY_CYDX_V1_6 value)
+ qt_internal_get_sbom_option_required_suffix(QT_SBOM_REQUIRE_VERIFY_CYDX_V1_6 suffix)
+ qt_configure_add_summary_entry(ARGS "Verify CyloneDX v1.6"
+ TYPE "message" MESSAGE "${value}${suffix}")
+
+ # Python interpreter info.
+ if(QT_INTERNAL_SBOM_PYTHON_EXECUTABLE)
+ set(value "${QT_INTERNAL_SBOM_PYTHON_EXECUTABLE}")
+ string(APPEND value " (version ${QT_INTERNAL_SBOM_PYTHON_VERSION})")
+ else()
+ set(value "Not found")
+ endif()
+ qt_configure_add_summary_entry(ARGS "SBOM Python interpreter"
+ TYPE "message" MESSAGE "${value}")
+
+ # These are kinda internal, so only show them when found.
+ if(QT_SBOM_PROGRAM_SBOM2DOC)
+ set(value "${QT_SBOM_PROGRAM_SBOM2DOC}")
+ qt_configure_add_summary_entry(ARGS "sbom2doc path" TYPE "message" MESSAGE "${value}")
+ endif()
+
+ if(QT_SBOM_PROGRAM_SBOMAUDIT)
+ set(value "${QT_SBOM_PROGRAM_SBOMAUDIT}")
+ qt_configure_add_summary_entry(ARGS "sbomaudit path" TYPE "message" MESSAGE "${value}")
+ endif()
+ endif()
+
+ # Source SBOM info.
+ qt_internal_is_sbom_option_enabled(QT_GENERATE_SOURCE_SBOM value)
+ qt_configure_add_summary_entry(ARGS "Generate source SPDX SBOM"
+ TYPE "message" MESSAGE "${value}")
+
+ if(QT_GENERATE_SOURCE_SBOM)
+ qt_internal_is_sbom_option_enabled(QT_LINT_SOURCE_SBOM value)
+ qt_configure_add_summary_entry(ARGS "Verify source SPDX SBOM"
+ TYPE "message" MESSAGE "${value}")
+
+ if(QT_SBOM_PROGRAM_REUSE)
+ set(value "${QT_SBOM_PROGRAM_REUSE}")
+ else()
+ set(value "Not found")
+ endif()
+ qt_configure_add_summary_entry(ARGS "reuse path" TYPE "message" MESSAGE "${value}")
+ endif()
+
+ qt_configure_end_summary_section()
+endfunction()