when BUILD_LINUXKM, suppress building the library; rename $KROOT/$KARCH to $KERNEL_ROOT/$KERNEL_ARCH; remove SIMD enablement from linuxkm CFLAGS; add linuxkm support for -DKERNEL_OPT=x.

pull/3244/head
Daniel Pouzzner 2020-08-28 17:25:25 -05:00
parent 360c749703
commit 05bca8b0ee
5 changed files with 43 additions and 28 deletions

View File

@ -198,7 +198,7 @@ endif
include scripts/include.am
if BUILD_LINUXKM
export KROOT KARCH AM_CFLAGS CFLAGS AM_CCASFLAGS CCASFLAGS src_libwolfssl_la_OBJECTS ENABLED_CRYPT_TESTS
export KERNEL_ROOT KERNEL_ARCH KERNEL_OPT AM_CFLAGS CFLAGS AM_CCASFLAGS CCASFLAGS src_libwolfssl_la_OBJECTS ENABLED_CRYPT_TESTS
SUBDIRS = linuxkm
endif

View File

@ -3361,20 +3361,22 @@ then
AC_PATH_DEFAULT_KERNEL_SOURCE
AC_ARG_WITH([linux-source],
[AS_HELP_STRING([--with-linux-source=PATH],[PATH to root of Linux kernel build tree])],
[KROOT=$withval],
[KROOT=$DEFAULT_KROOT])
AC_SUBST([KROOT])
[KERNEL_ROOT=$withval],
[KERNEL_ROOT=$DEFAULT_KERNEL_ROOT])
AC_SUBST([KERNEL_ROOT])
AC_DEFAULT_KERNEL_ARCH
AC_ARG_WITH([linux-arch],
[AS_HELP_STRING([--with-linux-arch=arch],[built arch (SRCARCH) of Linux kernel build tree])],
[KARCH=$withval],
[KARCH=$DEFAULT_KARCH])
AC_SUBST([KARCH])
[KERNEL_ARCH=$withval],
[KERNEL_ARCH=$DEFAULT_KERNEL_ARCH])
AC_SUBST([KERNEL_ARCH])
if test -z "${KROOT}"; then
if test -z "${KERNEL_ROOT}"; then
AC_MSG_ERROR([Linux kernel source root not found -- supply with --with-linux-source=PATH.])
fi
ENABLED_NO_LIBRARY=yes
fi
@ -5498,6 +5500,7 @@ AM_CONDITIONAL([BUILD_DES3],[test "x$ENABLED_DES3" = "xyes" || test "x$ENABLED_U
AM_CONDITIONAL([BUILD_PKCS7],[test "x$ENABLED_PKCS7" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
AM_CONDITIONAL([BUILD_HASHFLAGS],[test "x$ENABLED_HASHFLAGS" = "xyes"])
AM_CONDITIONAL([BUILD_LINUXKM],[test "x$ENABLED_LINUXKM" = "xyes"])
AM_CONDITIONAL([BUILD_NO_LIBRARY],[test "x$ENABLED_NO_LIBRARY" = "xyes"])
CREATE_HEX_VERSION
@ -5761,8 +5764,8 @@ echo " * Secure Remote Password $ENABLED_SRP"
echo " * Small Stack: $ENABLED_SMALL_STACK"
echo " * Linux Kernel Module: $ENABLED_LINUXKM"
test "$ENABLED_LINUXKM" = "yes" && \
echo " * Linux Kernel Build Root: $KROOT" && \
echo " * Linux Kernel Build Arch: $KARCH"
echo " * Linux Kernel Build Root: $KERNEL_ROOT" && \
echo " * Linux Kernel Build Arch: $KERNEL_ARCH"
echo " * valgrind unit tests: $ENABLED_VALGRIND"
echo " * LIBZ: $ENABLED_LIBZ"
echo " * Examples: $ENABLED_EXAMPLES"

View File

@ -1,18 +1,22 @@
# libwolfssl Linux kernel module Makefile (wraps Kbuild makefile)
SHELL=/bin/bash
all: libwolfssl.ko
.PHONY: libwolfssl.ko
ifndef MODULE_TOP
MODULE_TOP=$(CURDIR)
MODULE_TOP=$(CURDIR)
endif
ifndef SRC_TOP
SRC_TOP=$(shell dirname $(MODULE_TOP))
SRC_TOP=$(shell dirname $(MODULE_TOP))
endif
WOLFSSL_CFLAGS=-DHAVE_CONFIG_H -I$(SRC_TOP) -DBUILDING_WOLFSSL $(AM_CFLAGS) $(CFLAGS) -Wno-declaration-after-statement -Wno-redundant-decls
ifeq "$(KARCH)" "x86"
WOLFSSL_CFLAGS+=-msse -mmmx -msse2 -mavx -mavx2
ifdef KERNEL_OPT
WOLFSSL_CFLAGS += $(KERNEL_OPT)
endif
WOLFSSL_ASFLAGS=-DHAVE_CONFIG_H -I$(SRC_TOP) -DBUILDING_WOLFSSL $(AM_CCASFLAGS) $(CCASFLAGS)
@ -20,24 +24,30 @@ WOLFSSL_ASFLAGS=-DHAVE_CONFIG_H -I$(SRC_TOP) -DBUILDING_WOLFSSL $(AM_CCASFLAGS)
WOLFSSL_OBJ_FILES=$(patsubst %.lo, %.o, $(patsubst src/src_libwolfssl_la-%, src/%, $(patsubst src/libwolfssl_la-%, src/%, $(patsubst wolfcrypt/src/src_libwolfssl_la-%, wolfcrypt/src/%, $(src_libwolfssl_la_OBJECTS)))))
ifeq "$(ENABLED_CRYPT_TESTS)" "yes"
WOLFSSL_OBJ_FILES+=wolfcrypt/test/test.o
WOLFSSL_OBJ_FILES+=wolfcrypt/test/test.o
else
WOLFSSL_CFLAGS+=-DNO_CRYPT_TEST
WOLFSSL_CFLAGS+=-DNO_CRYPT_TEST
endif
export WOLFSSL_CFLAGS WOLFSSL_ASFLAGS WOLFSSL_OBJ_FILES
libwolfssl.ko:
@if test -z "$(KROOT)"; then echo '$$KROOT is unset' >&2; exit 1; fi
@if test -z "$(KERNEL_ROOT)"; then echo '$$KERNEL_ROOT is unset' >&2; exit 1; fi
@if test -z "$(AM_CFLAGS)$(CFLAGS)"; then echo '$$AM_CFLAGS and $$CFLAGS are both unset.' >&2; exit 1; fi
@if test -z "$(src_libwolfssl_la_OBJECTS)"; then echo '$$src_libwolfssl_la_OBJECTS is unset.' >&2; exit 1; fi
@mkdir -p linuxkm src wolfcrypt/src wolfcrypt/test
@if test ! -h $(SRC_TOP)/Kbuild; then ln -s $(MODULE_TOP)/Kbuild $(SRC_TOP)/Kbuild; fi
+make -C $(KROOT) M=$(MODULE_TOP) src=$(SRC_TOP)
+make -C $(KERNEL_ROOT) M=$(MODULE_TOP) src=$(SRC_TOP)
@echo Linux kernel module build succeeded.
@echo Module is libwolfssl.ko in $(MODULE_TOP).
.PHONY: install
install:
@echo Module is libwolfssl.ko in $(MODULE_TOP)
.PHONY: clean
clean:
+make -C $(KROOT) M=$(MODULE_TOP) src=$(SRC_TOP) clean
+make -C $(KERNEL_ROOT) M=$(MODULE_TOP) src=$(SRC_TOP) clean
.PHONY: dist
dist:

View File

@ -2,11 +2,11 @@ AC_DEFUN([AC_PATH_DEFAULT_KERNEL_SOURCE],
[
AC_MSG_CHECKING([for default kernel build root])
if test -d /lib/modules/`uname -r`/build/.config; then
DEFAULT_KROOT=/lib/modules/`uname -r`/build
AC_MSG_RESULT([$DEFAULT_KROOT])
DEFAULT_KERNEL_ROOT=/lib/modules/`uname -r`/build
AC_MSG_RESULT([$DEFAULT_KERNEL_ROOT])
elif test -r /usr/src/linux/.config; then
DEFAULT_KROOT=/usr/src/linux
AC_MSG_RESULT([$DEFAULT_KROOT])
DEFAULT_KERNEL_ROOT=/usr/src/linux
AC_MSG_RESULT([$DEFAULT_KERNEL_ROOT])
else
AC_MSG_RESULT([no default configured kernel found])
fi
@ -16,13 +16,13 @@ AC_DEFUN([AC_DEFAULT_KERNEL_ARCH],
[
AC_REQUIRE([AC_PROG_AWK])
AC_MSG_CHECKING([for default kernel arch])
if test -f ${KROOT}/.config; then
if test -f ${KERNEL_ROOT}/.config; then
# "# Linux/x86 5.8.1-gentoo Kernel Configuration"
DEFAULT_KARCH=`$AWK '/^# Linux/\
{split($[]2,arch_fields,"/"); print arch_fields[[2]]; exit(0);}' ${KROOT}/.config`
DEFAULT_KERNEL_ARCH=`$AWK '/^# Linux/\
{split($[]2,arch_fields,"/"); print arch_fields[[2]]; exit(0);}' ${KERNEL_ROOT}/.config`
fi
if test -n "$DEFAULT_KARCH"; then
AC_MSG_RESULT([$DEFAULT_KARCH])
if test -n "$DEFAULT_KERNEL_ARCH"; then
AC_MSG_RESULT([$DEFAULT_KERNEL_ARCH])
else
AC_MSG_RESULT([no default configured kernel arch found])
fi

View File

@ -2,7 +2,9 @@
# included from Top Level Makefile.am
# All paths should be given relative to the root
if !BUILD_NO_LIBRARY
lib_LTLIBRARIES+= src/libwolfssl.la
endif
src_libwolfssl_la_SOURCES =
src_libwolfssl_la_LDFLAGS = ${AM_LDFLAGS} -no-undefined -version-info ${WOLFSSL_LIBRARY_VERSION}
src_libwolfssl_la_LIBADD = $(LIBM) $(LIB_ADD) $(LIB_STATIC_ADD)