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 # speeding up the process.
|
||||||
dnl #
|
dnl #
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
|
AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
|
||||||
|
ZFS_AC_KERNEL_SRC_TYPES
|
||||||
ZFS_AC_KERNEL_SRC_OBJTOOL
|
ZFS_AC_KERNEL_SRC_OBJTOOL
|
||||||
ZFS_AC_KERNEL_SRC_GLOBAL_PAGE_STATE
|
ZFS_AC_KERNEL_SRC_GLOBAL_PAGE_STATE
|
||||||
ZFS_AC_KERNEL_SRC_ACCESS_OK_TYPE
|
ZFS_AC_KERNEL_SRC_ACCESS_OK_TYPE
|
||||||
|
@ -187,6 +188,7 @@ dnl #
|
||||||
dnl # Check results of kernel interface tests.
|
dnl # Check results of kernel interface tests.
|
||||||
dnl #
|
dnl #
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
|
AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
|
||||||
|
ZFS_AC_KERNEL_TYPES
|
||||||
ZFS_AC_KERNEL_ACCESS_OK_TYPE
|
ZFS_AC_KERNEL_ACCESS_OK_TYPE
|
||||||
ZFS_AC_KERNEL_GLOBAL_PAGE_STATE
|
ZFS_AC_KERNEL_GLOBAL_PAGE_STATE
|
||||||
ZFS_AC_KERNEL_OBJTOOL
|
ZFS_AC_KERNEL_OBJTOOL
|
||||||
|
|
|
@ -38,7 +38,9 @@ typedef unsigned long ulong_t;
|
||||||
typedef unsigned long long u_longlong_t;
|
typedef unsigned long long u_longlong_t;
|
||||||
typedef long long longlong_t;
|
typedef long long longlong_t;
|
||||||
|
|
||||||
|
#ifndef HAVE_KERNEL_INTPTR_T
|
||||||
typedef long intptr_t;
|
typedef long intptr_t;
|
||||||
|
#endif
|
||||||
typedef unsigned long long rlim64_t;
|
typedef unsigned long long rlim64_t;
|
||||||
|
|
||||||
typedef struct task_struct kthread_t;
|
typedef struct task_struct kthread_t;
|
||||||
|
|
Loading…
Reference in New Issue