aboutsummaryrefslogtreecommitdiff
path: root/m4/macros/linux_headers.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/macros/linux_headers.m4')
-rw-r--r--m4/macros/linux_headers.m449
1 files changed, 49 insertions, 0 deletions
diff --git a/m4/macros/linux_headers.m4 b/m4/macros/linux_headers.m4
new file mode 100644
index 000000000000..63c5d6a05acd
--- /dev/null
+++ b/m4/macros/linux_headers.m4
@@ -0,0 +1,49 @@
+dnl ######################################################################
+dnl ensure that linux kernel headers match running kernel
+AC_DEFUN([AMU_LINUX_HEADERS],
+[
+# test sanity of running kernel vs. kernel headers
+ AC_MSG_CHECKING("host headers version")
+ case ${host_os} in
+ linux )
+ host_header_version="bad"
+ AMU_EXPAND_RUN_STRING(
+[
+#include <stdio.h>
+#include <linux/version.h>
+],
+[
+if (argc > 1)
+#ifdef UTS_RELEASE
+ printf("%s", UTS_RELEASE);
+#else
+# define AMU_MA(a) ((a) >> 16)
+# define AMU_MI(a) (((a) & 0xffff) >> 8)
+# define AMU_PL(a) ((a) & 0xff)
+ printf("%d.%d.%d", AMU_MA(LINUX_VERSION_CODE), AMU_MI(LINUX_VERSION_CODE), AMU_PL(LINUX_VERSION_CODE));
+#endif
+],
+[ host_header_version=$value ],
+[ echo
+ AC_MSG_ERROR([cannot find UTS_RELEASE in <linux/version.h>.
+ This Linux system may be misconfigured or unconfigured!])
+])
+ ;;
+ * ) host_header_version=$host_os_version ;;
+ esac
+ AC_DEFINE_UNQUOTED(HOST_HEADER_VERSION, "$host_header_version")
+ AC_MSG_RESULT($host_header_version)
+
+ case ${host_os} in
+ linux )
+ if test "$host_os_version" != $host_header_version
+ then
+ AC_MSG_WARN([Linux kernel $host_os_version mismatch with $host_header_version headers!])
+ fi
+ ;;
+esac
+dnl cache these two for debugging purposes
+ac_cv_os_version=$host_os_version
+ac_cv_header_version=$host_header_version
+])
+dnl ======================================================================