# [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
#
AC_DEFUN([AC_TRY_KBUILD26],[ rm -fr conftest.dir
+ if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then
+ CFLAGS_PREFIX='EXTRA_'
+ fi
if mkdir conftest.dir &&
cat >conftest.dir/Makefile <<_ACEOF &&
-CFLAGS += $CPPFLAGS
+${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS
obj-m += conftest.o
_ACEOF
MODULE_LICENSE("http://www.openafs.org/dl/license10.html");
_ACEOF
- echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&AS_MESSAGE_LOG_FD
- make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&AS_MESSAGE_LOG_FD 2>conftest.err
+ echo make -C $LINUX_KERNEL_BUILD M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&AS_MESSAGE_LOG_FD &&
+ make -C $LINUX_KERNEL_BUILD M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&AS_MESSAGE_LOG_FD 2>conftest.err &&
+ ! grep -i "WARNING: .* undefined!$" conftest.err >/dev/null 2>&1
then [$3]
else
sed '/^ *+/d' conftest.err >&AS_MESSAGE_LOG_FD
#
AC_DEFUN([AC_TRY_KBUILD24], [
ac_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ $CPPFLAGS"
- AC_TRY_COMPILE([$1], [$2], [$3], [$4])
+ CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS"
+ AC_TRY_COMPILE([
+#include <linux/kernel.h>
+$1], [$2], [$3], [$4])
CPPFLAGS="$ac_save_CPPFLAGS"])
[],:,AC_MSG_RESULT(no)
AC_MSG_FAILURE([Fix problem or use --disable-kernel-module...]))
AC_MSG_RESULT(yes)])
+
+AC_DEFUN([LINUX_KBUILD_USES_EXTRA_CFLAGS], [
+ AC_MSG_CHECKING([if linux kbuild requires EXTRA_CFLAGS])
+ save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS=-Wall
+ AC_TRY_KBUILD(
+[#include <linux/sched.h>
+#include <linux/fs.h>],
+ [],
+ ac_linux_kbuild_requires_extra_cflags=no,
+ ac_linux_kbuild_requires_extra_cflags=yes)
+ CPPFLAGS="$save_CPPFLAGS"
+ AC_MSG_RESULT($ac_linux_kbuild_requires_extra_cflags)])
+
+dnl AC_CHECK_LINUX_HEADER(header)
+AC_DEFUN([AC_CHECK_LINUX_HEADER],
+ [AS_VAR_PUSHDEF([ac_linux_header], [ac_cv_linux_header_$1])dnl
+ AC_CACHE_CHECK([for linux/$1], [ac_linux_header],
+ [AC_TRY_KBUILD([#include <linux/$1>],
+ [return;],
+ AS_VAR_SET([ac_linux_header], [yes]),
+ AS_VAR_SET([ac_linux_header], [no]))
+ ])
+ AS_IF([test AS_VAR_GET([ac_linux_header]) = yes],
+ [AC_DEFINE(AS_TR_CPP(HAVE_LINUX_$1),
+ 1,
+ [Define if your kernel has linux/$1])])
+ ])
+
+dnl AC_CHECK_LINUX_FUNC([function], [includes], [code])
+AC_DEFUN([AC_CHECK_LINUX_FUNC],
+ [AS_VAR_PUSHDEF([ac_linux_func], [ac_cv_linux_func_$1])dnl
+ AC_CACHE_CHECK([for $1], [ac_linux_func],
+ [save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
+ AC_TRY_KBUILD([$2], [$3],
+ AS_VAR_SET([ac_linux_func], [yes]),
+ AS_VAR_SET([ac_linux_func], [no]))
+ CPPFLAGS="$save_CPPFLAGS"
+ ])
+ AS_IF([test AS_VAR_GET([ac_linux_func]) = yes],
+ [AC_DEFINE(AS_TR_CPP(HAVE_LINUX_$1), 1,
+ [Define if your kernel has the $1 function])])
+ ])
+
+dnl AC_CHECK_LINUX_STRUCT([structure], [element], [includes])
+AC_DEFUN([AC_CHECK_LINUX_STRUCT],
+ [AS_VAR_PUSHDEF([ac_linux_struct], [ac_cv_linux_struct_$1_has_$2])dnl
+ AC_CACHE_CHECK([for $2 in struct $1], [ac_linux_struct],
+ [AC_TRY_KBUILD([#include <linux/$3>],
+ [struct $1 _test; printk("%x\n", &_test.$2); ],
+ AS_VAR_SET([ac_linux_struct], [yes]),
+ AS_VAR_SET([ac_linux_struct], [no]))
+ ])
+ AS_IF([test AS_VAR_GET([ac_linux_struct]) = yes],
+ [AC_DEFINE(AS_TR_CPP(STRUCT_$1_HAS_$2), 1,
+ [Define if kernel struct $1 has the $2 element])])
+ ])
+