1 # AC_TRY_KBUILD26([INCLUDES], [FUNCTION-BODY],
2 # [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
4 AC_DEFUN([AC_TRY_KBUILD26],[ rm -fr conftest.dir
5 if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then
8 if mkdir conftest.dir &&
9 cat >conftest.dir/Makefile <<_ACEOF &&
10 ${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS
14 cat >conftest.dir/conftest.c <<\_ACEOF &&
17 cat confdefs.h >>conftest.dir/conftest.c &&
18 cat >>conftest.dir/conftest.c <<\_ACEOF &&
20 #include <linux/module.h>
28 MODULE_LICENSE("http://www.openafs.org/dl/license10.html");
30 echo make -C $LINUX_KERNEL_BUILD M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&AS_MESSAGE_LOG_FD &&
31 make -C $LINUX_KERNEL_BUILD M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&AS_MESSAGE_LOG_FD 2>conftest.err &&
32 ! grep -i "WARNING: .* undefined!$" conftest.err >/dev/null 2>&1
35 sed '/^ *+/d' conftest.err >&AS_MESSAGE_LOG_FD
36 echo "$as_me: failed using Makefile:" >&AS_MESSAGE_LOG_FD
37 sed 's/^/| /' conftest.dir/Makefile >&AS_MESSAGE_LOG_FD
38 echo "$as_me: and program was:" >&AS_MESSAGE_LOG_FD
39 sed 's/^/| /' conftest.dir/conftest.c >&AS_MESSAGE_LOG_FD
41 fi; rm -fr conftest.err conftest.dir])
44 # AC_TRY_KBUILD24([INCLUDES], [FUNCTION-BODY],
45 # [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
47 AC_DEFUN([AC_TRY_KBUILD24], [
48 ac_save_CPPFLAGS="$CPPFLAGS"
49 CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS"
51 #include <linux/kernel.h>
52 $1], [$2], [$3], [$4])
53 CPPFLAGS="$ac_save_CPPFLAGS"])
56 # AC_TRY_KBUILD([INCLUDES], [FUNCTION-BODY],
57 # [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
59 AC_DEFUN([AC_TRY_KBUILD], [
60 if test $AFS_SYSKVERS -ge 26 ; then
61 AC_TRY_KBUILD26([$1], [$2], [$3], [$4])
63 AC_TRY_KBUILD24([$1], [$2], [$3], [$4])
66 AC_DEFUN([LINUX_KERNEL_COMPILE_WORKS], [
67 AC_MSG_CHECKING([if linux kernel module build works])
69 [#include <linux/sched.h>
70 #include <linux/fs.h>],
71 [],:,AC_MSG_RESULT(no)
72 AC_MSG_FAILURE([Fix problem or use --disable-kernel-module...]))
75 AC_DEFUN([LINUX_KBUILD_USES_EXTRA_CFLAGS], [
76 AC_MSG_CHECKING([if linux kbuild requires EXTRA_CFLAGS])
77 save_CPPFLAGS="$CPPFLAGS"
80 [#include <linux/sched.h>
81 #include <linux/fs.h>],
83 ac_linux_kbuild_requires_extra_cflags=no,
84 ac_linux_kbuild_requires_extra_cflags=yes)
85 CPPFLAGS="$save_CPPFLAGS"
86 AC_MSG_RESULT($ac_linux_kbuild_requires_extra_cflags)])
88 dnl AC_CHECK_LINUX_BUILD([msg], [var], [includes], [code], [define], [CFLAGS])
89 AC_DEFUN([AC_CHECK_LINUX_BUILD],
90 [AS_VAR_PUSHDEF([ac_linux_build], [$2])dnl
91 AC_CACHE_CHECK([$1], [ac_linux_build],
92 [save_CPPFLAGS="$CPPFLAGS"
93 CPPFLAGS="$CPPFLAGS $7"
94 AC_TRY_KBUILD([$3], [$4],
95 AS_VAR_SET([ac_linux_build], [yes]),
96 AS_VAR_SET([ac_linux_build], [no]))
97 CPPFLAGS="$save_CPPFLAGS"
99 AS_IF([test AS_VAR_GET([ac_linux_build]) = yes],
100 [AC_DEFINE([$5],1,[$6])])
103 dnl AC_CHECK_LINUX_HEADER(header)
104 AC_DEFUN([AC_CHECK_LINUX_HEADER],
105 [AC_CHECK_LINUX_BUILD([for linux/$1], [ac_cv_linux_header_$1],
106 [#include <linux/$1>],
108 AS_TR_CPP(HAVE_LINUX_$1),
109 [Define if your kernel has linux/$1])
112 dnl AC_CHECK_LINUX_FUNC([function], [includes], [code])
113 AC_DEFUN([AC_CHECK_LINUX_FUNC],
114 [AS_VAR_PUSHDEF([ac_linux_func], [ac_cv_linux_func_$1])dnl
115 AC_CACHE_CHECK([for $1], [ac_linux_func],
116 [save_CPPFLAGS="$CPPFLAGS"
117 CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
118 AC_TRY_KBUILD([$2], [$3],
119 AS_VAR_SET([ac_linux_func], [yes]),
120 AS_VAR_SET([ac_linux_func], [no]))
121 CPPFLAGS="$save_CPPFLAGS"
123 AS_IF([test AS_VAR_GET([ac_linux_func]) = yes],
124 [AC_DEFINE(AS_TR_CPP(HAVE_LINUX_$1), 1,
125 [Define if your kernel has the $1 function])])
128 dnl AC_CHECK_LINUX_TYPE([type], [includes])
129 AC_DEFUN([AC_CHECK_LINUX_TYPE],
130 [AC_CHECK_LINUX_BUILD([for $1],
131 [ac_cv_linux_type_$1_exists],
132 [#include <linux/$2>],
134 AS_TR_CPP(HAVE_LINUX_$1),
135 [Define if kernel defines $1])
138 dnl AC_CHECK_LINUX_STRUCT([structure], [element], [includes])
139 AC_DEFUN([AC_CHECK_LINUX_STRUCT],
140 [AC_CHECK_LINUX_TYPED_STRUCT([struct $1], [$2], [$3])
143 dnl AC_CHECK_LINUX_TYPED_STRUCT([structure], [element], [includes])
144 AC_DEFUN([AC_CHECK_LINUX_TYPED_STRUCT],
145 [AC_CHECK_LINUX_BUILD([for $2 in $1],
146 [ac_cv_linux_$1_has_$2],
147 [#include <linux/$3>],
148 [$1 _test; printk("%x\n", &_test.$2); ],
149 AS_TR_CPP($1_HAS_$2),
150 [Define if kernel $1 has the $2 element])
153 dnl AC_CHECK_LINUX_OPERATION([structure], [operation], [label], [includes], [return_type], [args])
154 AC_DEFUN([AC_CHECK_LINUX_OPERATION],
155 [AS_VAR_PUSHDEF([ac_linux_operation], [ac_cv_linux_operation_$1_$2_$3])
156 AC_CACHE_CHECK([operation $2 in $1], [ac_linux_operation],
157 [save_CPPFLAGS="$CPPFLAGS"
158 CPPFLAGS="$CPPFLAGS -Werror"
159 AC_TRY_KBUILD([$4], [struct $1 ops; $5 op($6) { return ($5)0; }; ops.$2 = op;],
160 AS_VAR_SET([ac_linux_operation], [yes]),
161 AS_VAR_SET([ac_linux_operation], [no]))
162 CPPFLAGS="$save_CPPFLAGS"
164 AS_IF([test AS_VAR_GET([ac_linux_operation]) = yes],
165 [AC_DEFINE(AS_TR_CPP(HAVE_LINUX_$1_$2_$3), 1,
166 [Define if $1 has $2 operation of form $6])])