Skip to content

Commit 225924e

Browse files
committed
feat: add make sbom / install-sbom / uninstall-sbom targets
Adds CycloneDX + SPDX SBOM generation via wolfssl's gen-sbom script. Usage: make sbom WOLFSSL_DIR=/path/to/wolfssl wolfProvider has no generated options.h; uses installed wolfssl's options.h. WOLFSSL_DIR defaults to WOLFSSL_INSTALL_DIR. SONAME is libwolfprov.so.0.0.0 (libtool default, no version-info set).
1 parent 53b3f85 commit 225924e

2 files changed

Lines changed: 47 additions & 0 deletions

File tree

Makefile.am

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,47 @@ test: check
4747
# is necessary when they are installed somewhere other than /usr/local.
4848
AM_DISTCHECK_CONFIGURE_FLAGS=CPPFLAGS="-I@abs_top_srcdir@/include" --with-openssl=@OPENSSL_INSTALL_DIR@ --with-wolfssl=@WOLFSSL_INSTALL_DIR@
4949

50+
# ---------------------------------------------------------------------------
51+
# SBOM generation (CycloneDX + SPDX) via wolfssl's gen-sbom script
52+
# ---------------------------------------------------------------------------
53+
WOLFSSL_DIR ?= $(WOLFSSL_INSTALL_DIR)
54+
WOLFSSL_INCLUDEDIR ?= $(WOLFSSL_DIR)/include
55+
PRODUCT = wolfprov
56+
VERSION = $(shell grep LIBWOLFPROV_VERSION_STRING $(srcdir)/include/wolfprovider/version.h 2>/dev/null | sed 's/.*"\(.*\)".*/\1/')
57+
GEN_SBOM = $(WOLFSSL_DIR)/scripts/gen-sbom
58+
SBOM_OPTS = --name $(PRODUCT) \
59+
--version $(VERSION) \
60+
--supplier "wolfSSL Inc." \
61+
--options-h $(WOLFSSL_INCLUDEDIR)/wolfssl/options.h \
62+
--lib $(builddir)/_sbom_stage$(libdir)/libwolfprov.so.0.0.0
63+
64+
SBOM_OUT_DIR = $(builddir)
65+
SBOM_CDX = $(SBOM_OUT_DIR)/$(PRODUCT)-$(VERSION).cdx.json
66+
SBOM_SPDX_J = $(SBOM_OUT_DIR)/$(PRODUCT)-$(VERSION).spdx.json
67+
SBOM_SPDX_TV = $(SBOM_OUT_DIR)/$(PRODUCT)-$(VERSION).spdx
68+
69+
.PHONY: sbom install-sbom uninstall-sbom
70+
71+
sbom: all
72+
@if test -z "$(WOLFSSL_DIR)"; then \
73+
echo "ERROR: WOLFSSL_DIR not set. Usage: make sbom WOLFSSL_DIR=/path/to/wolfssl"; \
74+
exit 1; \
75+
fi
76+
@if test -z "$(PYTHON3)"; then \
77+
echo "ERROR: python3 not found in PATH."; exit 1; fi
78+
$(MAKE) install DESTDIR=$(builddir)/_sbom_stage
79+
$(PYTHON3) $(GEN_SBOM) $(SBOM_OPTS)
80+
rm -rf $(builddir)/_sbom_stage
81+
82+
install-sbom: sbom
83+
$(MKDIR_P) $(DESTDIR)$(datadir)/doc/$(PRODUCT)
84+
$(INSTALL_DATA) $(SBOM_CDX) $(SBOM_SPDX_J) $(SBOM_SPDX_TV) \
85+
$(DESTDIR)$(datadir)/doc/$(PRODUCT)/
86+
87+
uninstall-sbom:
88+
-rm -f $(DESTDIR)$(datadir)/doc/$(PRODUCT)/$(PRODUCT)-*.cdx.json
89+
-rm -f $(DESTDIR)$(datadir)/doc/$(PRODUCT)/$(PRODUCT)-*.spdx.json
90+
-rm -f $(DESTDIR)$(datadir)/doc/$(PRODUCT)/$(PRODUCT)-*.spdx
91+
92+
uninstall-hook: uninstall-sbom
93+

configure.ac

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ USER_CFLAGS="$CFLAGS"
2626
AC_PROG_CC
2727
AC_LANG(C)
2828

29+
AC_CHECK_PROG([PYTHON3], [python3], [python3])
30+
AC_CHECK_PROG([PYSPDXTOOLS], [pyspdxtools], [pyspdxtools])
31+
2932
# wolfSSL - check first so its -I/-L paths take precedence over OpenSSL prefix
3033
# which may contain stale wolfSSL headers from a different version
3134
AX_CHECK_WOLFSSL(

0 commit comments

Comments
 (0)