11# wolfssl kernel module name and source, and root dir.
2- KMOD = libwolfssl
3- SRCS = wolfkmod.c
4- WOLFSSL_DIR = ../
2+ KMOD = libwolfssl
3+ SRCS = wolfkmod.c
4+ WOLFSSL_DIR = ../
55
66CFLAGS+ =-I${WOLFSSL_DIR}
77CFLAGS+ =-DWOLFSSL_IGNORE_FILE_WARN -DHAVE_CONFIG_H -DNO_MAIN_DRIVER
8+
89#
910# debug options
1011# verbose printing:
11- # CFLAGS+= -DWOLFSSL_BSDKM_VERBOSE_DEBUG
12+ # CFLAGS += -DWOLFSSL_BSDKM_VERBOSE_DEBUG
1213#
1314# print memory mallocs / frees:
14- # CFLAGS+= -DWOLFSSL_BSDKM_MEMORY_DEBUG
15+ # CFLAGS += -DWOLFSSL_BSDKM_MEMORY_DEBUG
1516#
16- CFLAGS+ =$(AM_CPPFLAGS ) $(CPPFLAGS ) $(AM_CFLAGS )
17+ CFLAGS += $(AM_CPPFLAGS ) $(CPPFLAGS ) $(AM_CFLAGS )
18+
19+ .if defined(ENABLED_BSDKM_REGISTER)
20+ # These device header files are generated during build.
21+ SRCS += bus_if.h cryptodev_if.h device_if.h
22+ .endif
1723
1824# FreeBSD make does not support GNU make's patsubst and related. Filter
1925# through sed instead.
2026WOLFSSL_OBJS != echo ${src_libwolfssl_la_OBJECTS} | \
2127 sed 's|src_libwolfssl_la-||g' | sed 's|\.lo|.o|g' | \
2228 sed 's|wolfcrypt/src/|${WOLFSSL_DIR}/wolfcrypt/src/|g'
2329
30+ # wolfcrypt test
2431.if ${ENABLED_CRYPT_TESTS} == "yes"
2532 WOLFSSL_OBJS += ${WOLFSSL_DIR}/wolfcrypt/test/test.o
2633.else
27- CFLAGS+ =-DNO_CRYPT_TEST
34+ CFLAGS += -DNO_CRYPT_TEST
35+ .endif
36+
37+ # wolfcrypt benchmark
38+ .if ${ENABLED_KERNEL_BENCHMARKS} == "yes"
39+ WOLFSSL_OBJS += ${WOLFSSL_DIR}/wolfcrypt/benchmark/benchmark.o
40+ CFLAGS+ =-DWOLFSSL_NO_FLOAT_FMT
2841.endif
2942
3043OBJS += ${WOLFSSL_OBJS}
3144
3245# Export no public symbols by default.
3346.if !defined(BSDKM_EXPORT_SYMS)
34- EXPORT_SYMS = NO
47+ EXPORT_SYMS = NO
3548.else
36- EXPORT_SYMS = ${BSDKM_EXPORT_SYMS}
49+ EXPORT_SYMS = ${BSDKM_EXPORT_SYMS}
3750.endif
3851
3952# Default to live kernel src tree makefile at
@@ -45,12 +58,37 @@ OBJS += ${WOLFSSL_OBJS}
4558.endif
4659.include "${SYSDIR}/conf/kmod.mk"
4760
61+ # To use aesni in FreeBSD kernel we need to adjust build flags.
62+ # See these for reference:
63+ # - /usr/src/sys/modules/aesni/Makefile
64+ # - /usr/src/sys/conf/kern.mk
65+ .if ${ENABLED_ASM} == "yes"
66+ CFLAGS.aes.c += -msse -msse2 -msse4.1 -maes -mpclmul -mavx -mavx2
67+ CFLAGS.aes.c := ${CFLAGS.aes.c:N-nostdinc}
68+ CFLAGS.aes.c += -I${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
69+
70+ CFLAGS.poly1305.c += -msse -msse2 -msse4.1 -maes -mpclmul
71+ CFLAGS.poly1305.c := ${CFLAGS.aes.c:N-nostdinc}
72+ CFLAGS.poly1305.c += -I${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
73+
74+ CFLAGS.chacha.c += -msse -msse2 -msse4.1 -maes -mpclmul
75+ CFLAGS.chacha.c := ${CFLAGS.aes.c:N-nostdinc}
76+ CFLAGS.chacha.c += -I${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
77+
78+ CFLAGS.sha.c += -msse -msse2 -msse4.1 -maes -mpclmul -mavx -mavx2
79+ CFLAGS.sha256.c += -msse -msse2 -msse4.1 -maes -mpclmul -mavx -mavx2
80+ CFLAGS.benchmark.c += -msse -msse2 -msse4.1 -maes -mpclmul -mavx -mavx2
81+ CFLAGS.benchmark.c := ${CFLAGS.aes.c:N-nostdinc}
82+ CFLAGS.benchmark.c += -I${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
83+ .PATH : ${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
84+ .endif
85+
4886# Smooth out a few inconsistencies between FreeBSD default compiler flags
4987# in /usr/src/sys/conf/kern.mk, vs wolfssl harden flags in
5088# m4/ax_harden_compiler_flags.m4. E.g. some FreeBSD header files shorten
5189# 64 to 32 bit, and some wolfcrypt functions cast away const.
52- CFLAGS+ = -Wno-unused-function
53- CFLAGS+ = -Wno-cast-qual
54- CFLAGS+ = -Wno-error=cast-qual
55- CFLAGS+ = -Wno-shorten-64-to-32
56- CFLAGS+ = -DLIBWOLFSSL_GLOBAL_EXTRA_CFLAGS="\" $(KERNEL_EXTRA_CFLAGS ) \""
90+ CFLAGS += -Wno-unused-function
91+ CFLAGS += -Wno-cast-qual
92+ CFLAGS += -Wno-error=cast-qual
93+ CFLAGS += -Wno-shorten-64-to-32
94+ CFLAGS += -DLIBWOLFSSL_GLOBAL_EXTRA_CFLAGS="\" $(KERNEL_EXTRA_CFLAGS ) \""
0 commit comments