aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorRob N <[email protected]>2024-05-25 11:54:24 +1000
committerGitHub <[email protected]>2024-05-24 18:54:24 -0700
commit708be0f415c83c941d3ed5153fafc5d3766e4cdd (patch)
tree7e1137b1f326308b81a107de72e9085a5a213ac2 /config
parent7572e8ca04adda7af207dd27d643d241351680e7 (diff)
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 <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Rob Norris <[email protected]> Closes #16201
Diffstat (limited to 'config')
-rw-r--r--config/kernel-types.m440
-rw-r--r--config/kernel.m42
2 files changed, 42 insertions, 0 deletions
diff --git a/config/kernel-types.m4 b/config/kernel-types.m4
new file mode 100644
index 000000000..ed76af283
--- /dev/null
+++ b/config/kernel-types.m4
@@ -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])
diff --git a/config/kernel.m4 b/config/kernel.m4
index 548905ccd..b51477b6a 100644
--- a/config/kernel.m4
+++ b/config/kernel.m4
@@ -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