Note this requires either the following fix in autoconf:
http://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=e17a30e98
OR gnulib sys_types module plus gnulib
commit a512e041120e9012e69afa2f5c3adc196ec4999a (any gnulib more
recent than Sep 2016) which corrects the AC_HEADER_MAJOR macro in a
similar way.
---
configure.ac | 3 +++
init/init.c | 6 ++++++
m4/gnulib-cache.m4 | 1 +
src/ext2fs-c.c | 6 ++++++
4 files changed, 16 insertions(+)
diff --git a/configure.ac b/configure.ac
index 72ffb92..24c0dcd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -42,6 +42,9 @@ AC_SYS_LARGEFILE
dnl Enable GNU stuff.
AC_USE_SYSTEM_EXTENSIONS
+dnl Which header file defines major, minor, makedev.
+AC_HEADER_MAJOR
+
dnl Define the host CPU architecture (defines host_cpu).
AC_CANONICAL_HOST
diff --git a/init/init.c b/init/init.c
index ef74332..e6fd0e6 100644
--- a/init/init.c
+++ b/init/init.c
@@ -40,7 +40,13 @@
#include <sys/mount.h>
#include <sys/stat.h>
#include <sys/wait.h>
+
+#if MAJOR_IN_MKDEV
+#include <sys/mkdev.h>
+#elif MAJOR_IN_SYSMACROS
#include <sys/sysmacros.h>
+/* else it's in sys/types.h, included above */
+#endif
/* Maximum time to wait for the root device to appear (seconds).
*
diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4
index 2abd246..9a0a802 100644
--- a/m4/gnulib-cache.m4
+++ b/m4/gnulib-cache.m4
@@ -33,6 +33,7 @@
gl_LOCAL_DIR([])
gl_MODULES([
fts
+ sys_types
])
gl_AVOID([])
gl_SOURCE_BASE([lib])
diff --git a/src/ext2fs-c.c b/src/ext2fs-c.c
index 733c901..2743da7 100644
--- a/src/ext2fs-c.c
+++ b/src/ext2fs-c.c
@@ -32,7 +32,13 @@
#include <errno.h>
#include <assert.h>
#include <inttypes.h>
+
+#if MAJOR_IN_MKDEV
+#include <sys/mkdev.h>
+#elif MAJOR_IN_SYSMACROS
#include <sys/sysmacros.h>
+/* else it's in sys/types.h, included above */
+#endif
/* Inlining is broken in the ext2fs header file. Disable it by
* defining the following:
--
2.9.3