Linux 6.7 compat: detect if kernel defines intptr_t
Since Linux 6.7 the kernel has defined intptr_t. Clang has -Wtypedef-redefinition by default, which causes the build to fail because we also have a typedef for intptr_t. Since its better to use the kernel's if it exists, detect it and skip our own. Sponsored-by: https://despairlabs.com/sponsor/ Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rob Norris <robn@despairlabs.com> Closes #16201
This commit is contained in:
parent
54ef0fdf60
commit
f4e2aed42a
|
@ -0,0 +1,40 @@
|
|||
dnl #
|
||||
dnl # check if kernel provides definitions for given types
|
||||
dnl #
|
||||
|
||||
dnl _ZFS_AC_KERNEL_SRC_TYPE(type)
|
||||
AC_DEFUN([_ZFS_AC_KERNEL_SRC_TYPE], [
|
||||
ZFS_LINUX_TEST_SRC([type_$1], [
|
||||
#include <linux/types.h>
|
||||
],[
|
||||
const $1 __attribute__((unused)) x = ($1) 0;
|
||||
])
|
||||
])
|
||||
|
||||
dnl _ZFS_AC_KERNEL_TYPE(type)
|
||||
AC_DEFUN([_ZFS_AC_KERNEL_TYPE], [
|
||||
AC_MSG_CHECKING([whether kernel defines $1])
|
||||
ZFS_LINUX_TEST_RESULT([type_$1], [
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAVE_KERNEL_]m4_quote(m4_translit([$1], [a-z], [A-Z])),
|
||||
1, [kernel defines $1])
|
||||
], [
|
||||
AC_MSG_RESULT([no])
|
||||
])
|
||||
])
|
||||
|
||||
dnl ZFS_AC_KERNEL_TYPES([types...])
|
||||
AC_DEFUN([ZFS_AC_KERNEL_TYPES], [
|
||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_TYPES], [
|
||||
m4_foreach_w([type], [$1], [
|
||||
_ZFS_AC_KERNEL_SRC_TYPE(type)
|
||||
])
|
||||
])
|
||||
AC_DEFUN([ZFS_AC_KERNEL_TYPES], [
|
||||
m4_foreach_w([type], [$1], [
|
||||
_ZFS_AC_KERNEL_TYPE(type)
|
||||
])
|
||||
])
|
||||
])
|
||||
|
||||
ZFS_AC_KERNEL_TYPES([intptr_t])
|
|
@ -37,6 +37,7 @@ dnl # only once the compilation can be done in parallel significantly
|
|||
dnl # speeding up the process.
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
|
||||
ZFS_AC_KERNEL_SRC_TYPES
|
||||
ZFS_AC_KERNEL_SRC_OBJTOOL
|
||||
ZFS_AC_KERNEL_SRC_GLOBAL_PAGE_STATE
|
||||
ZFS_AC_KERNEL_SRC_ACCESS_OK_TYPE
|
||||
|
@ -187,6 +188,7 @@ dnl #
|
|||
dnl # Check results of kernel interface tests.
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
|
||||
ZFS_AC_KERNEL_TYPES
|
||||
ZFS_AC_KERNEL_ACCESS_OK_TYPE
|
||||
ZFS_AC_KERNEL_GLOBAL_PAGE_STATE
|
||||
ZFS_AC_KERNEL_OBJTOOL
|
||||
|
|
|
@ -38,7 +38,9 @@ typedef unsigned long ulong_t;
|
|||
typedef unsigned long long u_longlong_t;
|
||||
typedef long long longlong_t;
|
||||
|
||||
#ifndef HAVE_KERNEL_INTPTR_T
|
||||
typedef long intptr_t;
|
||||
#endif
|
||||
typedef unsigned long long rlim64_t;
|
||||
|
||||
typedef struct task_struct kthread_t;
|
||||
|
|
Loading…
Reference in New Issue