From ec8c1a258c18a07171f5316f5150da9b15ad53c3 Mon Sep 17 00:00:00 2001 From: Marc Dionne Date: Mon, 6 Jul 2015 12:00:10 -0300 Subject: [PATCH 4/6] Linux: Add AC_CHECK_LINUX_OPERATION configure macro Add a new macro to check the signature of a particular operation against a provided typed argument list. One of the arguments is an arbitrary label that is used to construct the pre-processor define name. This will allow for testing of different forms for the same operation. This can be used to replace many of the remaining odd checks in src/cf/linux_test4.m4. Reviewed-on: http://gerrit.openafs.org/11927 Tested-by: BuildBot Reviewed-by: Jeffrey Altman (cherry picked from commit c2c0b6bc86c6d67814d0f7fe14fa8eefc445b4a4) Change-Id: Id929412d87bb9fc38b2b599abbe3fddca3cda4b1 Reviewed-on: http://gerrit.openafs.org/11950 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand (cherry picked from commit dfcf0b348886b4a97d2c8a8b90eae98ad9e25834) --- src/cf/linux-test1.m4 | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/cf/linux-test1.m4 b/src/cf/linux-test1.m4 index f7176d2..fd5bfd8 100644 --- a/src/cf/linux-test1.m4 +++ b/src/cf/linux-test1.m4 @@ -150,3 +150,18 @@ AC_DEFUN([AC_CHECK_LINUX_TYPED_STRUCT], [Define if kernel typedef'd $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])]) + ]) -- 2.5.1