KMOD = libwolfssl
SRCS = wolfkmod.c
WOLFSSL_DIR = ../
CFLAGS += -I${WOLFSSL_DIR}
CFLAGS += -DWOLFSSL_IGNORE_FILE_WARN -DHAVE_CONFIG_H -DNO_MAIN_DRIVER
CFLAGS += $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
.if defined(ENABLED_BSDKM_REGISTER)
SRCS += bus_if.h cryptodev_if.h device_if.h
.endif
WOLFSSL_OBJS != echo ${src_libwolfssl_la_OBJECTS} | \
sed 's|src_libwolfssl_la-||g' | sed 's|\.lo|.o|g' | \
sed 's|wolfcrypt/src/|${WOLFSSL_DIR}/wolfcrypt/src/|g'
.if ${ENABLED_CRYPT_TESTS} == "yes"
WOLFSSL_OBJS += ${WOLFSSL_DIR}/wolfcrypt/test/test.o
.else
CFLAGS += -DNO_CRYPT_TEST
.endif
.if ${ENABLED_KERNEL_BENCHMARKS} == "yes"
WOLFSSL_OBJS += ${WOLFSSL_DIR}/wolfcrypt/benchmark/benchmark.o
CFLAGS.benchmark.c += -DWOLFSSL_NO_FLOAT_FMT -DMAIN_NO_ARGS
.endif
OBJS += ${WOLFSSL_OBJS}
.if !defined(BSDKM_EXPORT_SYMS)
EXPORT_SYMS = NO
.else
EXPORT_SYMS = ${BSDKM_EXPORT_SYMS}
.endif
.if !defined(KERNEL_ROOT)
SYSDIR?= /usr/src/sys
.else
SYSDIR?= ${KERNEL_ROOT}
.endif
.include "${SYSDIR}/conf/kmod.mk"
WOLFKMOD_SIMD_BASE = -msse -msse2 -msse4.1
WOLFKMOD_SIMD_AES = -maes -mpclmul
WOLFKMOD_SIMD_AVX = -mavx -mavx2
.if ${ENABLED_AESNI} == "yes"
CFLAGS.aes.c += ${WOLFKMOD_SIMD_BASE}
CFLAGS.aes.c += ${WOLFKMOD_SIMD_AES}
.if ${ENABLED_AESNI_WITH_AVX} == "yes"
CFLAGS.aes.c += ${WOLFKMOD_SIMD_AVX}
.endif CFLAGS.aes.c := ${CFLAGS.aes.c:N-nostdinc}
CFLAGS.aes.c += -I${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
.PATH: ${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
.endif
.if ${ENABLED_ASM} == "yes"
.for f in chacha dilithium poly1305 sha sha256 sha3 sha512
CFLAGS.${f}.c += ${WOLFKMOD_SIMD_BASE}
CFLAGS.${f}.c += ${WOLFKMOD_SIMD_AVX}
CFLAGS.${f}.c := ${CFLAGS.${f}.c:N-nostdinc}
CFLAGS.${f}.c += -I${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
.endfor
.PATH: ${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
.endif # ENABLED_ASM == "yes"
.if ${ENABLED_KERNEL_BENCHMARKS} == "yes"
CFLAGS.benchmark.c += ${WOLFKMOD_SIMD_BASE}
CFLAGS.benchmark.c := ${CFLAGS.benchmark.c:N-nostdinc}
CFLAGS.benchmark.c += -I${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
.PATH: ${SYSDIR}/../contrib/llvm-project/clang/lib/Headers
.endif
CFLAGS += -Wno-unused-function
CFLAGS += -Wno-cast-qual
CFLAGS += -Wno-error=cast-qual
CFLAGS += -Wno-shorten-64-to-32
CFLAGS += -DLIBWOLFSSL_GLOBAL_EXTRA_CFLAGS="\" $(KERNEL_EXTRA_CFLAGS)\""