autoconf: add test for typedef'd structs
authorChristof Hanke <christof.hanke@rzg.mpg.de>
Wed, 25 May 2011 20:16:59 +0000 (22:16 +0200)
committerDerrick Brashear <shadow@dementia.org>
Thu, 26 May 2011 13:58:47 +0000 (06:58 -0700)
AC_CHECK_LINUX_STRUCT does not work for structs which are typedef'd.
The gcc will complain with "error: storage size of ‘_test’ isn’t known"
and fail the test.
Thus the new test-macro AC_CHECK_LINUX_TYPED_STRUCT.

Change-Id: Ib3e933c4e09a3e950ca8d8e7a66909d86f10cfdf
Reviewed-on: http://gerrit.openafs.org/4718
Reviewed-by: Christof Hanke <christof.hanke@rzg.mpg.de>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/cf/linux-test1.m4

index 6c096a4..106c5b5 100644 (file)
@@ -127,11 +127,16 @@ AC_DEFUN([AC_CHECK_LINUX_FUNC],
 
 dnl AC_CHECK_LINUX_STRUCT([structure], [element], [includes])
 AC_DEFUN([AC_CHECK_LINUX_STRUCT],
- [AC_CHECK_LINUX_BUILD([for $2 in struct $1],
-                      [ac_cv_linux_struct_$1_has_$2],
+ [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>],
-                      [struct $1 _test; printk("%x\n", &_test.$2); ],
-                      AS_TR_CPP(STRUCT_$1_HAS_$2),
-                      [Define if kernel struct $1 has the $2 element])
+                      [$1 _test; printk("%x\n", &_test.$2); ],
+                      AS_TR_CPP($1_HAS_$2),
+                      [Define if kernel typedef'd $1 has the $2 element])
  ])