|
| 1 | +# SPDX-FileCopyrightText: Estonian Information System Authority |
| 2 | +# SPDX-License-Identifier: MIT |
| 3 | + |
| 4 | +# SBOM generation using DEMCON/cmake-sbom (SPDX 2.3, install-time) |
| 5 | +# Run: cmake --install <build-dir>/sbom |
| 6 | + |
| 7 | +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/cmake-sbom/cmake") |
| 8 | +include(sbom) |
| 9 | + |
| 10 | +execute_process( |
| 11 | + COMMAND git describe --tags --abbrev=0 |
| 12 | + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/lib/libelectronic-id" |
| 13 | + OUTPUT_VARIABLE ELECTRONIC_ID_VERSION |
| 14 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
| 15 | + ERROR_QUIET |
| 16 | +) |
| 17 | +string(REGEX REPLACE "^v" "" ELECTRONIC_ID_VERSION "${ELECTRONIC_ID_VERSION}") |
| 18 | + |
| 19 | +sbom_generate( |
| 20 | + OUTPUT "${CMAKE_BINARY_DIR}/web-eid-${PROJECT_VERSION}.spdx" |
| 21 | + LICENSE "MIT" |
| 22 | + SUPPLIER "Estonian Information System Authority" |
| 23 | + SUPPLIER_URL https://www.ria.ee |
| 24 | + DOWNLOAD_URL https://github.com/web-eid/web-eid-app |
| 25 | + VERSION "${PROJECT_VERSION}" |
| 26 | +) |
| 27 | + |
| 28 | +set(_sbom_reset "${CMAKE_BINARY_DIR}/sbom/sbom-reset.cmake") |
| 29 | +file(WRITE "${_sbom_reset}" |
| 30 | + "file(WRITE \"${CMAKE_BINARY_DIR}/sbom/sbom.spdx.in\" \"\")\n" |
| 31 | + "file(READ \"${CMAKE_BINARY_DIR}/SPDXRef-DOCUMENT.spdx.in\" _doc)\n" |
| 32 | + "file(APPEND \"${CMAKE_BINARY_DIR}/sbom/sbom.spdx.in\" \"\${_doc}\")\n" |
| 33 | + "set(SBOM_VERIFICATION_CODES \"\")\n" |
| 34 | +) |
| 35 | +file(APPEND "${CMAKE_BINARY_DIR}/sbom/CMakeLists.txt" |
| 36 | + "install(SCRIPT \"${_sbom_reset}\")\n" |
| 37 | +) |
| 38 | + |
| 39 | +set(_app_spdxid "SPDXRef-Package-${PROJECT_NAME} DEPENDS_ON @SBOM_LAST_SPDXID@") |
| 40 | +if(APPLE) |
| 41 | + sbom_add(PACKAGE web-eid-safari |
| 42 | + VERSION "${PROJECT_VERSION}" |
| 43 | + SUPPLIER "Organization: Estonian Information System Authority" |
| 44 | + DOWNLOAD_LOCATION https://github.com/web-eid/web-eid-app |
| 45 | + LICENSE "MIT" |
| 46 | + EXTREF "cpe:2.3:a:web-eid:web-eid:${PROJECT_VERSION}:*:*:*:*:*:*:*" |
| 47 | + RELATIONSHIP "@SBOM_LAST_SPDXID@ VARIANT_OF SPDXRef-Package-${PROJECT_NAME}" |
| 48 | + ) |
| 49 | + set(_app_spdxid "${_app_spdxid}\nRelationship: ${SBOM_LAST_SPDXID} DEPENDS_ON @SBOM_LAST_SPDXID@") |
| 50 | + file(READ "${CMAKE_SOURCE_DIR}/src/mac/js/package.json" _webext_json) |
| 51 | + string(JSON WEBEXT_VERSION GET "${_webext_json}" "version") |
| 52 | + sbom_add(PACKAGE web-eid-webextension |
| 53 | + VERSION "${WEBEXT_VERSION}" |
| 54 | + SUPPLIER "Organization: Estonian Information System Authority" |
| 55 | + DOWNLOAD_LOCATION https://github.com/web-eid/web-eid-webextension |
| 56 | + LICENSE "MIT" |
| 57 | + RELATIONSHIP "${SBOM_LAST_SPDXID} DEPENDS_ON @SBOM_LAST_SPDXID@" |
| 58 | + ) |
| 59 | + if(NPM_EXECUTABLE) |
| 60 | + execute_process( |
| 61 | + COMMAND "${NPM_EXECUTABLE}" --version |
| 62 | + OUTPUT_VARIABLE NPM_VERSION |
| 63 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
| 64 | + ERROR_QUIET |
| 65 | + ) |
| 66 | + string(REGEX REPLACE "^v" "" NPM_VERSION "${NPM_VERSION}") |
| 67 | + endif() |
| 68 | + if(NPM_VERSION) |
| 69 | + sbom_add(PACKAGE npm |
| 70 | + VERSION "${NPM_VERSION}" |
| 71 | + SUPPLIER "Organization: OpenJS Foundation" |
| 72 | + DOWNLOAD_LOCATION https://www.npmjs.com |
| 73 | + LICENSE "Artistic-2.0" |
| 74 | + EXTREF "cpe:2.3:a:npmjs:npm:${NPM_VERSION}:*:*:*:*:*:*:*" |
| 75 | + RELATIONSHIP "@SBOM_LAST_SPDXID@ BUILD_TOOL_OF ${SBOM_LAST_SPDXID}" |
| 76 | + ) |
| 77 | + endif() |
| 78 | +endif() |
| 79 | + |
| 80 | +if(WIN32) |
| 81 | + find_program(WIX_EXECUTABLE NAMES wix) |
| 82 | + if(WIX_EXECUTABLE) |
| 83 | + execute_process( |
| 84 | + COMMAND "${WIX_EXECUTABLE}" --version |
| 85 | + OUTPUT_VARIABLE WIX_VERSION |
| 86 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
| 87 | + ERROR_QUIET |
| 88 | + ) |
| 89 | + string(REGEX REPLACE "\\+.*$" "" WIX_VERSION "${WIX_VERSION}") |
| 90 | + endif() |
| 91 | + if(WIX_VERSION) |
| 92 | + sbom_add(PACKAGE WiX |
| 93 | + VERSION "${WIX_VERSION}" |
| 94 | + SUPPLIER "Organization: WiX Toolset Contributors" |
| 95 | + DOWNLOAD_LOCATION https://wixtoolset.org |
| 96 | + LICENSE "MS-RL" |
| 97 | + EXTREF "cpe:2.3:a:wixtoolset:wix_toolset:${WIX_VERSION}:*:*:*:*:*:*:*" |
| 98 | + ) |
| 99 | + endif() |
| 100 | +endif() |
| 101 | + |
| 102 | +sbom_add(PACKAGE libelectronic-id |
| 103 | + VERSION "${ELECTRONIC_ID_VERSION}" |
| 104 | + SUPPLIER "Organization: Estonian Information System Authority" |
| 105 | + DOWNLOAD_LOCATION https://github.com/web-eid/libelectronic-id |
| 106 | + LICENSE "MIT" |
| 107 | + EXTREF "cpe:2.3:a:web-eid:libelectronic-id:${ELECTRONIC_ID_VERSION}:*:*:*:*:*:*:*" |
| 108 | + RELATIONSHIP "${_app_spdxid}" |
| 109 | +) |
| 110 | + |
| 111 | +find_package(GTest QUIET) |
| 112 | +if(GTest_FOUND) |
| 113 | + sbom_add(PACKAGE GTest |
| 114 | + VERSION "${GTest_VERSION}" |
| 115 | + SUPPLIER "Organization: Google LLC" |
| 116 | + DOWNLOAD_LOCATION https://github.com/google/googletest |
| 117 | + LICENSE "BSD-3-Clause" |
| 118 | + EXTREF "cpe:2.3:a:google:googletest:${GTest_VERSION}:*:*:*:*:*:*:*" |
| 119 | + RELATIONSHIP "${SBOM_LAST_SPDXID} TEST_TOOL_OF @SBOM_LAST_SPDXID@" |
| 120 | + ) |
| 121 | +endif() |
| 122 | + |
| 123 | +if(PCSC_FOUND) |
| 124 | + sbom_add(PACKAGE libpcsclite |
| 125 | + VERSION "${PCSC_VERSION}" |
| 126 | + SUPPLIER "Organization: Muscle project" |
| 127 | + DOWNLOAD_LOCATION https://pcsclite.apdu.fr |
| 128 | + LICENSE "BSD-3-Clause" |
| 129 | + EXTREF "cpe:2.3:a:pcsc-lite_project:pcsc-lite:${PCSC_VERSION}:*:*:*:*:*:*:*" |
| 130 | + ) |
| 131 | +endif() |
| 132 | + |
| 133 | +sbom_add(PACKAGE Qt6 |
| 134 | + VERSION "${Qt6_VERSION}" |
| 135 | + SUPPLIER "Organization: The Qt Company" |
| 136 | + DOWNLOAD_LOCATION https://download.qt.io/ |
| 137 | + LICENSE "LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only OR LicenseRef-Qt-commercial" |
| 138 | + EXTREF "cpe:2.3:a:qt:qt:${Qt6_VERSION}:*:*:*:*:*:*:*" |
| 139 | + RELATIONSHIP "${_app_spdxid}" |
| 140 | +) |
| 141 | + |
| 142 | +sbom_add(PACKAGE OpenSSL |
| 143 | + VERSION "${OPENSSL_VERSION}" |
| 144 | + SUPPLIER "Organization: OpenSSL Software Foundation" |
| 145 | + DOWNLOAD_LOCATION https://openssl.org |
| 146 | + LICENSE "Apache-2.0" |
| 147 | + EXTREF "cpe:2.3:a:openssl:openssl:${OPENSSL_VERSION}:*:*:*:*:*:*:*" |
| 148 | + RELATIONSHIP "${_app_spdxid}" |
| 149 | +) |
| 150 | + |
| 151 | +sbom_finalize(NO_VERIFY) |
0 commit comments