autoconf: add test for typedef'd structs

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>
This commit is contained in:
Christof Hanke 2011-05-25 22:16:59 +02:00 committed by Derrick Brashear
parent 9703b023cc
commit baf7656f66

View 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],
[#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])
[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 typedef'd $1 has the $2 element])
])