autoconf: autoupdate macros
[openafs.git] / src / cf / linux-test1.m4
index 6545717..02f3f90 100644 (file)
@@ -47,9 +47,9 @@ _ACEOF
 AC_DEFUN([AC_TRY_KBUILD24], [
   ac_save_CPPFLAGS="$CPPFLAGS"
   CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS"
-  AC_TRY_COMPILE([
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 #include <linux/kernel.h>
-$1], [$2], [$3], [$4])
+$1]], [[$2]])],[$3],[$4])
   CPPFLAGS="$ac_save_CPPFLAGS"])
 
 
@@ -64,7 +64,7 @@ AC_DEFUN([AC_TRY_KBUILD], [
   fi])
 
 AC_DEFUN([LINUX_KERNEL_COMPILE_WORKS], [
-  AC_MSG_CHECKING([for linux kernel module build works])
+  AC_MSG_CHECKING([if linux kernel module build works])
   AC_TRY_KBUILD(
 [#include <linux/sched.h>
 #include <linux/fs.h>],
@@ -85,19 +85,28 @@ AC_DEFUN([LINUX_KBUILD_USES_EXTRA_CFLAGS], [
     CPPFLAGS="$save_CPPFLAGS"
     AC_MSG_RESULT($ac_linux_kbuild_requires_extra_cflags)])
 
+dnl AC_CHECK_LINUX_BUILD([msg], [var], [includes], [code], [define], [CFLAGS])
+AC_DEFUN([AC_CHECK_LINUX_BUILD],
+ [AS_VAR_PUSHDEF([ac_linux_build], [$2])dnl
+  AC_CACHE_CHECK([$1], [ac_linux_build],
+   [save_CPPFLAGS="$CPPFLAGS"
+     CPPFLAGS="$CPPFLAGS $7"
+     AC_TRY_KBUILD([$3], [$4],
+                 AS_VAR_SET([ac_linux_build], [yes]),
+                 AS_VAR_SET([ac_linux_build], [no]))
+     CPPFLAGS="$save_CPPFLAGS"
+   ])
+  AS_IF([test AS_VAR_GET([ac_linux_build]) = yes],
+        [AC_DEFINE([$5],1,[$6])])
+ ])
+
 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])])
+ [AC_CHECK_LINUX_BUILD([for linux/$1], [ac_cv_linux_header_$1],
+                      [#include <linux/$1>],
+                      [return;],
+                      AS_TR_CPP(HAVE_LINUX_$1),
+                      [Define if your kernel has linux/$1])
  ])
 
 dnl AC_CHECK_LINUX_FUNC([function], [includes], [code])
@@ -116,17 +125,43 @@ AC_DEFUN([AC_CHECK_LINUX_FUNC],
                   [Define if your kernel has the $1 function])])
  ])
 
+dnl AC_CHECK_LINUX_TYPE([type], [includes])
+AC_DEFUN([AC_CHECK_LINUX_TYPE],
+ [AC_CHECK_LINUX_BUILD([for $1],
+                       [ac_cv_linux_type_$1_exists],
+                       [#include <linux/$2>],
+                       [$1 _test; ],
+                       AS_TR_CPP(HAVE_LINUX_$1),
+                       [Define if kernel defines $1])
+ ])
+
 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])])
+ [AC_CHECK_LINUX_TYPED_STRUCT([struct $1], [$2], [$3])
+ ])
+
+dnl AC_CHECK_LINUX_TYPED_STRUCT([structure], [element], [includes])
+AC_DEFUN([AC_CHECK_LINUX_TYPED_STRUCT],
+ [AC_CHECK_LINUX_BUILD([for $2 in $1],
+                      [ac_cv_linux_$1_has_$2],
+                      [#include <linux/$3>],
+                      [$1 _test; printk("%x\n", &_test.$2); ],
+                      AS_TR_CPP($1_HAS_$2),
+                      [Define if kernel $1 has the $2 element])
  ])
 
+dnl AC_CHECK_LINUX_OPERATION([structure], [operation], [label], [includes], [return_type], [args])
+AC_DEFUN([AC_CHECK_LINUX_OPERATION],
+ [AS_VAR_PUSHDEF([ac_linux_operation], [ac_cv_linux_operation_$1_$2_$3])
+  AC_CACHE_CHECK([operation $2 in $1], [ac_linux_operation],
+    [save_CPPFLAGS="$CPPFLAGS"
+     CPPFLAGS="$CPPFLAGS -Werror"
+     AC_TRY_KBUILD([$4], [struct $1 ops; $5 op($6) { return ($5)0; }; ops.$2 = op;],
+                  AS_VAR_SET([ac_linux_operation], [yes]),
+                  AS_VAR_SET([ac_linux_operation], [no]))
+     CPPFLAGS="$save_CPPFLAGS"
+    ])
+  AS_IF([test AS_VAR_GET([ac_linux_operation]) = yes],
+       [AC_DEFINE(AS_TR_CPP(HAVE_LINUX_$1_$2_$3), 1,
+                  [Define if $1 has $2 operation of form $6])])
+ ])