AC_CACHE_CHECK([for external module build target], lb_cv_module_target,
[
lb_cv_module_target=""
- MODULE_TARGET="SUBDIRS"
rm -f build/conftest.i
- LB_LINUX_TRY_MAKE([], [],
- [$makerule LUSTRE_KERNEL_TEST=conftest.i],
- [test -s build/conftest.i],
- [lb_cv_module_target="SUBDIRS"],[
MODULE_TARGET="M"
- makerule="$PWD/build/"
+ makerule="$PWD/build"
LB_LINUX_TRY_MAKE([], [],
[$makerule LUSTRE_KERNEL_TEST=conftest.i],
[test -s build/conftest.i],
[$makerule LUSTRE_KERNEL_TEST=conftest.i],
[test -s build/conftest.i],
[lb_cv_module_target="M"], [
+ MODULE_TARGET="M"
+ makerule=""
+ LB_LINUX_TRY_MAKE([], [],
+ [$makerule LUSTRE_KERNEL_TEST=conftest.i],
+ [test -s build/conftest.i],
+ [lb_cv_module_target="M58"], [
AC_MSG_ERROR([kernel module make failed; check config.log for details])
])])])
])
[test "x$lb_cv_module_target" = "xM54"],
[makerule="$PWD/build"
lb_cv_module_target="M"],
+[test "x$lb_cv_module_target" = "xM58"],
+ [makerule=""
+ lb_cv_module_target="M"],
[test "x$lb_cv_module_target" = "xM"],
[makerule="_module_$PWD/build"])
MODULE_TARGET=$lb_cv_module_target
RHEL_KERNEL="no"
SUSE_KERNEL="no"
UBUNTU_KERNEL="no"
- DEBIAN_KERNEL="no"
# And if any of the above kernels has been detected yet
KERNEL_FOUND="no"
])
])
- # Check for Debian
- AS_IF([test "x$KERNEL_FOUND" = "xno"], [
- AC_CACHE_CHECK([for Debian kernel signature], lb_cv_debian_kernel_sig, [
- lb_cv_debian_kernel_sig="no"
- AS_IF([grep -q "LINUX_PACKAGE_ID\s*\"\s*Debian" $LINUX_OBJ/include/generated/package.h], [
- lb_cv_debian_kernel_sig="yes"
- ])
- ])
- AS_IF([test "x$lb_cv_debian_kernel_sig" = "xyes"], [
- DEBIAN_KERNEL="yes"
- KERNEL_FOUND="yes"
- ])
- ])
-
# Check for a ELRepo -ml kernel on RHEL 7/8
AS_IF([test "x$KERNEL_FOUND" = "xno"], [
AC_CACHE_CHECK([for ELRepo -ml kernel signature on CentOS],
# If still no kernel was found, a warning is issued
AS_IF([test "x$KERNEL_FOUND" = "xno"], [
- AC_MSG_WARN([Kernel Distro seems to be neither RedHat, SuSE, Ubuntu nor Debian])
+ AC_MSG_WARN([Kernel Distro seems to be neither RedHat, SuSE nor Ubuntu])
])
AC_MSG_CHECKING([for Linux kernel module package directory])
AC_ARG_WITH([kmp-moddir],
- AC_HELP_STRING([--with-kmp-moddir=string],
+ AS_HELP_STRING([--with-kmp-moddir=string],
[set the kmod updates or extra directory]),
[KMP_MODDIR=$withval
IN_KERNEL=''],[
AS_IF([test x$RHEL_KERNEL = xyes], [KMP_MODDIR="extra/kernel"],
[test x$SUSE_KERNEL = xyes], [KMP_MODDIR="updates/kernel"],
[test x$UBUNTU_KERNEL = xyes], [KMP_MODDIR="updates/kernel"],
- [test x$DEBIAN_KERNEL = xyes], [KMP_MODDIR="updates/kernel"],
- [AC_MSG_WARN([Kernel Distro seems to be neither RedHat, SuSE, Ubuntu nor Debian])]
+ [AC_MSG_WARN([Kernel Distro seems to be neither RedHat, SuSE nor Ubuntu])]
)
IN_KERNEL="${PACKAGE}"])
AC_MSG_RESULT($KMP_MODDIR)
AC_MSG_CHECKING([for Linux sources])
AC_ARG_WITH([linux],
- AC_HELP_STRING([--with-linux=path],
+ AS_HELP_STRING([--with-linux=path],
[set path to Linux source (default=/lib/modules/$(uname -r)/{source,build},/usr/src/linux)]),
[LB_ARG_CANON_PATH([linux], [LINUX])
DEFAULT_LINUX_OBJ=$LINUX],
[LINUX=$DEFAULT_LINUX])
AC_MSG_RESULT([$LINUX])
-AC_SUBST(LINUX)
# -------- check for linux --------
LB_CHECK_FILE([$LINUX], [],
# -------- linux objects (for 2.6) --
AC_MSG_CHECKING([for Linux objects])
AC_ARG_WITH([linux-obj],
- AC_HELP_STRING([--with-linux-obj=path],
+ AS_HELP_STRING([--with-linux-obj=path],
[set path to Linux objects (default=/lib/modules/$(uname -r)/build,/usr/src/linux)]),
[LB_ARG_CANON_PATH([linux-obj], [LINUX_OBJ])],
[LINUX_OBJ=$DEFAULT_LINUX_OBJ])
AC_MSG_RESULT([$LINUX_OBJ])
-AC_SUBST(LINUX_OBJ)
+## -------- with linux should point to <kernel>-common on Debian
+AS_IF([test ${LINUX} == ${LINUX_OBJ} -a ${LINUX} == $(realpath ${LINUX})],[
+ this_arch=$(realpath ${LINUX} | sed 's/-/\n/g' | tail -1)
+ linux_headers_common=$(realpath ${LINUX}|sed "s/-${this_arch}\$/-common/g")
+ AS_IF([test "${this_arch}" != common],[
+ _cah="${linux_headers_common}/include/linux/compiler_attributes.h"
+ _cgh="${linux_headers_common}/include/linux/compiler-gcc.h"
+ AS_IF([test -f "${_cah}" -o -f "${_cgh}"],[
+ AC_MSG_WARN([Setting LINUX to ${linux_headers_common} was ${LINUX}])
+ LINUX=${linux_headers_common}])
+ ])
+ ])
+AC_SUBST(LINUX)
+AC_SUBST(LINUX_OBJ)
# -------- check for .config --------
AC_ARG_WITH([linux-config],
- [AC_HELP_STRING([--with-linux-config=path],
+ [AS_HELP_STRING([--with-linux-config=path],
[set path to Linux .conf (default=$LINUX_OBJ/.config)])],
[LB_ARG_CANON_PATH([linux-config], [LINUX_CONFIG])],
[LINUX_CONFIG=$LINUX_OBJ/.config])
[KERNEL_SOURCE_HEADER='/var/adm/running-kernel.h'])])
AC_ARG_WITH([kernel-source-header],
- AC_HELP_STRING([--with-kernel-source-header=path],
+ AS_HELP_STRING([--with-kernel-source-header=path],
[Use a different kernel version header.]),
[LB_ARG_CANON_PATH([kernel-source-header], [KERNEL_SOURCE_HEADER])])
LB_CHECK_CONFIG([MODVERSIONS])
-LB_CHECK_CONFIG([KALLSYMS], [], [
- AC_MSG_ERROR([
-
-Lustre requires that CONFIG_KALLSYMS is enabled in your kernel.
-])
- ])
-
# 2.6.28
LC_MODULE_LOADING
])
[
#include <linux/kernel.h>
#include <linux/module.h>
+
+#if defined(NEED_LOCKDEP_IS_HELD_DISCARD_CONST) \
+ && defined(CONFIG_LOCKDEP) \
+ && defined(lockdep_is_held)
+#undef lockdep_is_held
+ #define lockdep_is_held(lock) \
+ lock_is_held((struct lockdep_map *)&(lock)->dep_map)
+#endif
+
$1
int
main (void)
[m4_ifvaln([$1], [AC_LANG_CONFTEST([AC_LANG_SOURCE([$1])])])dnl
rm -f build/conftest.o build/conftest.mod.c build/conftest.ko
SUBARCH=$(echo $target_cpu | sed -e 's/powerpc.*/powerpc/' -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/' -e 's/k1om/x86/' -e 's/aarch64.*/arm64/' -e 's/armv7.*/arm/')
-AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] LDFLAGS= ${LD:+LD="$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_CHECK_INCLUDE -I$LINUX/arch/$SUBARCH/include -Iinclude -Iarch/$SUBARCH/include/generated -I$LINUX/include -Iinclude2 -I$LINUX/include/uapi -Iinclude/generated -I$LINUX/arch/$SUBARCH/include/uapi -Iarch/$SUBARCH/include/generated/uapi -I$LINUX/include/uapi -Iinclude/generated/uapi ${SPL_OBJ:+-include $SPL_OBJ/spl_config.h} ${ZFS_OBJ:+-include $ZFS_OBJ/zfs_config.h} ${SPL:+-I$SPL/include } ${ZFS:+-I$ZFS -I$ZFS/include -I${SPL:-$ZFS/include/spl}} -include $CONFIG_INCLUDE" KBUILD_EXTRA_SYMBOLS=${ZFS_OBJ:+$ZFS_OBJ/Module.symvers} -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
+AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] LDFLAGS= ${LD:+LD="$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_CHECK_INCLUDE -I$LINUX/arch/$SUBARCH/include -Iinclude -Iarch/$SUBARCH/include/generated -I$LINUX/include -Iinclude2 -I$LINUX/include/uapi -Iinclude/generated -I$LINUX/arch/$SUBARCH/include/uapi -Iarch/$SUBARCH/include/generated/uapi -I$LINUX/include/uapi -Iinclude/generated/uapi ${SPL_OBJ:+-include $SPL_OBJ/spl_config.h} ${ZFS_OBJ:+-include $ZFS_OBJ/zfs_config.h} ${SPL:+-I$SPL/include } ${ZFS:+-I$ZFS -I$ZFS/include -I$ZFS/include/os/linux/kernel -I$ZFS/include/os/linux/spl -I$ZFS/include/os/linux/zfs -I${SPL:-$ZFS/include/spl}} -include $CONFIG_INCLUDE" KBUILD_EXTRA_SYMBOLS="${ZFS_OBJ:+$ZFS_OBJ/Module.symvers} $KBUILD_EXTRA_SYMBOLS" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
[$4],
[_AC_MSG_LOG_CONFTEST
m4_ifvaln([$5],[$5])dnl])
# source is generated.
#
AC_DEFUN([LB2_LINUX_TEST_SRC], [
- LB2_LINUX_CONFTEST_C([LB_LANG_PROGRAM([[$2]], [[$3]])], [$1])
- LB2_LINUX_CONFTEST_MAKEFILE([$1], [$4], [$5])
+ LB2_LINUX_CONFTEST_C([LB_LANG_PROGRAM([[$2]], [[$3]])], [$1_pc])
+ LB2_LINUX_CONFTEST_MAKEFILE([$1_pc], [$4], [$5])
])
#
# $3 - run on failure (unable to compile)
#
AC_DEFUN([LB2_LINUX_TEST_RESULT], [
- AS_IF([test -d ${TEST_DIR}/$1], [
- AS_IF([test -f ${TEST_DIR}/$1/$1.ko], [$2], [$3])
+ AS_IF([test -d ${TEST_DIR}/$1_pc], [
+ AS_IF([test -f ${TEST_DIR}/$1_pc/$1_pc.ko], [$2], [$3])
], [
AC_MSG_ERROR([
*** No matching source for the "$1" test, check that