summaryrefslogtreecommitdiff
path: root/app-emulation/wine/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@rogentos.ro>2016-08-30 23:34:35 +0100
committerV3n3RiX <venerix@rogentos.ro>2016-08-30 23:34:35 +0100
commitffd8f3bea8c30f54fdf30a51930af2171ded6e85 (patch)
tree9029176976cdcc3594322ac4afed6ee14d0e1dcc /app-emulation/wine/files
parent4d698f438e5bf54f8d4e4ea46f88abf09b08270d (diff)
add gallium nine enabled wine
Diffstat (limited to 'app-emulation/wine/files')
-rw-r--r--app-emulation/wine/files/builtin_ms_va_list.c9
-rw-r--r--app-emulation/wine/files/pr66838.c36
-rw-r--r--app-emulation/wine/files/pr69140.c37
-rw-r--r--app-emulation/wine/files/wine-1.4_rc2-multilib-portage.patch40
-rw-r--r--app-emulation/wine/files/wine-1.5.26-winegcc.patch59
-rw-r--r--app-emulation/wine/files/wine-1.6-memset-O3.patch21
-rw-r--r--app-emulation/wine/files/wine-1.7.12-osmesa-check.patch38
-rw-r--r--app-emulation/wine/files/wine-1.8-gnutls-3.5-compat.patch39
-rw-r--r--app-emulation/wine/files/wine-1.9.5-multilib-portage.patch31
-rw-r--r--app-emulation/wine/files/wine-gcc-4.9-null-pointer.patch35
-rw-r--r--app-emulation/wine/files/wine-sysmacros.patch177
11 files changed, 522 insertions, 0 deletions
diff --git a/app-emulation/wine/files/builtin_ms_va_list.c b/app-emulation/wine/files/builtin_ms_va_list.c
new file mode 100644
index 00000000..f36fc260
--- /dev/null
+++ b/app-emulation/wine/files/builtin_ms_va_list.c
@@ -0,0 +1,9 @@
+/* Taken from Wine's configure script. LGPL 2.1+ */
+
+#include <stdarg.h>
+
+int main(void)
+{
+ void func(__builtin_ms_va_list *args);
+ return 0;
+}
diff --git a/app-emulation/wine/files/pr66838.c b/app-emulation/wine/files/pr66838.c
new file mode 100644
index 00000000..cd616859
--- /dev/null
+++ b/app-emulation/wine/files/pr66838.c
@@ -0,0 +1,36 @@
+/* From gcc svn, /branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/pr66838.c */
+/* Copyrighted and distributed under the same terms as gcc */
+
+void abort (void);
+
+char global;
+
+__attribute__((sysv_abi, noinline, noclone))
+void sysv_abi_func(char const *desc, void *local)
+{
+ register int esi asm ("esi");
+ register int edi asm ("edi");
+
+ if (local != &global)
+ abort ();
+
+ /* Clobber some of the extra SYSV ABI registers. */
+ asm volatile ("movl\t%2, %0\n\tmovl\t%2, %1"
+ : "=r" (esi), "=r" (edi)
+ : "i" (0xdeadbeef));
+}
+
+__attribute__((ms_abi, noinline, noclone))
+void ms_abi_func ()
+{
+ sysv_abi_func ("1st call", &global);
+ sysv_abi_func ("2nd call", &global);
+ sysv_abi_func ("3rd call", &global);
+}
+
+int
+main(void)
+{
+ ms_abi_func();
+ return 0;
+}
diff --git a/app-emulation/wine/files/pr69140.c b/app-emulation/wine/files/pr69140.c
new file mode 100644
index 00000000..7c9e001f
--- /dev/null
+++ b/app-emulation/wine/files/pr69140.c
@@ -0,0 +1,37 @@
+/* { dg-do compile { target lp64 } } */
+/* { dg-options "-O2 -mincoming-stack-boundary=3" } */
+
+typedef struct {
+ unsigned int buf[4];
+ unsigned char in[64];
+} MD4_CTX;
+
+static void
+MD4Transform (unsigned int buf[4], const unsigned int in[16])
+{
+ unsigned int a, b, c, d;
+ (b) += ((((c)) & ((d))) | ((~(c)) & ((a)))) + (in[7]);
+ (a) += ((((b)) & ((c))) | ((~(b)) & ((d)))) + (in[8]);
+ (d) += ((((a)) & ((b))) | ((~(a)) & ((c)))) + (in[9]);
+ buf[3] += d;
+}
+
+void __attribute__((ms_abi))
+MD4Update (MD4_CTX *ctx, const unsigned char *buf)
+{
+ MD4Transform( ctx->buf, (unsigned int *)ctx->in);
+ MD4Transform( ctx->buf, (unsigned int *)ctx->in);
+}
+
+int
+main(void)
+{
+ MD4_CTX ctx_test =
+ {
+ { 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476 },
+ { 0, 0 }
+ };
+ unsigned char buf[64];
+
+ MD4Update(&ctx_test, (const unsigned char *) &buf);
+}
diff --git a/app-emulation/wine/files/wine-1.4_rc2-multilib-portage.patch b/app-emulation/wine/files/wine-1.4_rc2-multilib-portage.patch
new file mode 100644
index 00000000..be6ffc56
--- /dev/null
+++ b/app-emulation/wine/files/wine-1.4_rc2-multilib-portage.patch
@@ -0,0 +1,40 @@
+https://bugs.gentoo.org/show_bug.cgi?id=395615
+
+Explicitly add the required -m32/m64 to *FLAGS; this overrides any
+arch-specific -m* flags that may have been appended by multilib-portage.
+
+Even though -m32/m64 is now added to *FLAGS, -m32/m64 still has to be
+explicitly added to CC and CXX due to wine's build system. For example,
+winegcc saves the build-time value of CC and uses it at runtime.
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -133,12 +133,18 @@
+ then
+ CC="$CC -m64"
+ CXX="$CXX -m64"
++ CFLAGS="$CFLAGS -m64"
++ LDFLAGS="$LDFLAGS -m64"
++ CXXFLAGS="$CXXFLAGS -m64"
+ host_cpu="x86_64"
+ notice_platform="64-bit "
+ AC_SUBST(TARGETFLAGS,"-m64")
+ else
+ CC="$CC -m32"
+ CXX="$CXX -m32"
++ CFLAGS="$CFLAGS -m32"
++ LDFLAGS="$LDFLAGS -m32"
++ CXXFLAGS="$CXXFLAGS -m32"
+ host_cpu="i386"
+ notice_platform="32-bit "
+ AC_SUBST(TARGETFLAGS,"-m32")
+@@ -150,6 +156,9 @@
+ then
+ CC="$CC -m32"
+ CXX="$CXX -m32"
++ CFLAGS="$CFLAGS -m32"
++ LDFLAGS="$LDFLAGS -m32"
++ CXXFLAGS="$CXXFLAGS -m32"
+ AC_MSG_CHECKING([whether $CC works])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM()],AC_MSG_RESULT([yes]),
+ [AC_MSG_RESULT([no])
diff --git a/app-emulation/wine/files/wine-1.5.26-winegcc.patch b/app-emulation/wine/files/wine-1.5.26-winegcc.patch
new file mode 100644
index 00000000..2045e343
--- /dev/null
+++ b/app-emulation/wine/files/wine-1.5.26-winegcc.patch
@@ -0,0 +1,59 @@
+http://bugs.gentoo.org/260726
+
+diff --git a/tools/winebuild/main.c b/tools/winebuild/main.c
+index 16b4165..5c77267 100644
+--- a/tools/winebuild/main.c
++++ b/tools/winebuild/main.c
+@@ -48,10 +48,13 @@ int link_ext_symbols = 0;
+ int force_pointer_size = 0;
+ int unwind_tables = 0;
+
++#undef FORCE_POINTER_SIZE
+ #ifdef __i386__
+ enum target_cpu target_cpu = CPU_x86;
++#define FORCE_POINTER_SIZE
+ #elif defined(__x86_64__)
+ enum target_cpu target_cpu = CPU_x86_64;
++#define FORCE_POINTER_SIZE
+ #elif defined(__powerpc__)
+ enum target_cpu target_cpu = CPU_POWERPC;
+ #elif defined(__arm__)
+@@ -611,6 +614,10 @@ int main(int argc, char **argv)
+ signal( SIGTERM, exit_on_signal );
+ signal( SIGINT, exit_on_signal );
+
++#ifdef FORCE_POINTER_SIZE
++ force_pointer_size = sizeof(size_t);
++#endif
++
+ output_file = stdout;
+ argv = parse_options( argc, argv, spec );
+
+diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
+index 06aa200..c44d2e3 100644
+--- a/tools/winegcc/winegcc.c
++++ b/tools/winegcc/winegcc.c
+@@ -213,10 +213,13 @@ struct options
+ strarray* files;
+ };
+
++#undef FORCE_POINTER_SIZE
+ #ifdef __i386__
+ static const enum target_cpu build_cpu = CPU_x86;
++#define FORCE_POINTER_SIZE
+ #elif defined(__x86_64__)
+ static const enum target_cpu build_cpu = CPU_x86_64;
++#define FORCE_POINTER_SIZE
+ #elif defined(__powerpc__)
+ static const enum target_cpu build_cpu = CPU_POWERPC;
+ #elif defined(__arm__)
+@@ -1258,6 +1261,9 @@ int main(int argc, char **argv)
+ opts.linker_args = strarray_alloc();
+ opts.compiler_args = strarray_alloc();
+ opts.winebuild_args = strarray_alloc();
++#ifdef FORCE_POINTER_SIZE
++ opts.force_pointer_size = sizeof(size_t);
++#endif
+
+ /* determine the processor type */
+ if (strendswith(argv[0], "winecpp")) opts.processor = proc_cpp;
diff --git a/app-emulation/wine/files/wine-1.6-memset-O3.patch b/app-emulation/wine/files/wine-1.6-memset-O3.patch
new file mode 100644
index 00000000..75372f86
--- /dev/null
+++ b/app-emulation/wine/files/wine-1.6-memset-O3.patch
@@ -0,0 +1,21 @@
+Avoid "undefined reference to `memset'" error when building with
+USE=custom-cflags and -O3 in CFLAGS with gcc-4.8.
+
+See:
+
+http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56888
+http://bugs.winehq.org/show_bug.cgi?id=33521
+https://bugs.gentoo.org/show_bug.cgi?id=480508
+
+diff --git a/configure.ac b/configure.ac
+index d8033cf..fe7cc7d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1767,6 +1767,7 @@ then
+
+ dnl Check for some compiler flags
+ WINE_TRY_CFLAGS([-fno-builtin],[AC_SUBST(BUILTINFLAG,"-fno-builtin")])
++ WINE_TRY_CFLAGS([-fno-tree-loop-distribute-patterns])
+ WINE_TRY_CFLAGS([-fno-strict-aliasing])
+ dnl clang needs to be told to fail on unknown options
+ saved_CFLAGS=$CFLAGS
diff --git a/app-emulation/wine/files/wine-1.7.12-osmesa-check.patch b/app-emulation/wine/files/wine-1.7.12-osmesa-check.patch
new file mode 100644
index 00000000..7cafcd4e
--- /dev/null
+++ b/app-emulation/wine/files/wine-1.7.12-osmesa-check.patch
@@ -0,0 +1,38 @@
+From 6932b9a17c4f64c13f7060895d46334bc7022430 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Tue, 7 Aug 2012 01:29:01 -0400
+Subject: [PATCH] Do not check for libGL symbols when checking libOSMesa
+
+If mesa had been built with shared glapi, glAccum is not available in
+libOSMesa without explicitly linking to libGL. In addition, in
+mesa-8.0.x and earlier, libOSMesa needs to be explicitly linked to
+libglapi if mesa was built with shared glapi, see
+https://bugs.gentoo.org/show_bug.cgi?id=399813
+And in mesa-8.1.x, libOSMesa in addition needs libdl, libpthread, and
+libstdc++, see https://bugs.gentoo.org/show_bug.cgi?id=431832
+---
+ configure.ac | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index de807d2..a2e8684 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1233,7 +1233,13 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
+
+ if test "x$with_osmesa" != "xno"
+ then
+- WINE_CHECK_SONAME(OSMesa,glAccum,,,[$X_LIBS -lm $X_EXTRA_LIBS])
++ WINE_CHECK_SONAME(OSMesa,OSMesaCreateContext,,,[$X_LIBS -lm $X_EXTRA_LIBS])
++ if test "x$ac_cv_lib_soname_OSMesa" = "x"; then
++ osmesa_save_CC=$CC
++ CC=$CXX
++ WINE_CHECK_SONAME(OSMesa,OSMesaCreateContext,,,[-lglapi -lpthread -ldl $X_LIBS -lm $X_EXTRA_LIBS])
++ CC=$osmesa_save_CC
++ fi
+ WINE_NOTICE_WITH(osmesa,[test "x$ac_cv_lib_soname_OSMesa" = "x"],
+ [libOSMesa ${notice_platform}development files not found (or too old), OpenGL rendering in bitmaps won't be supported.])
+ fi
+--
+1.8.5.3
+
diff --git a/app-emulation/wine/files/wine-1.8-gnutls-3.5-compat.patch b/app-emulation/wine/files/wine-1.8-gnutls-3.5-compat.patch
new file mode 100644
index 00000000..291c4a51
--- /dev/null
+++ b/app-emulation/wine/files/wine-1.8-gnutls-3.5-compat.patch
@@ -0,0 +1,39 @@
+From bf5ac531a030bce9e798ab66bc53e84a65ca8fdb Mon Sep 17 00:00:00 2001
+From: Michael Cronenworth <mike@cchtml.com>
+Date: Thu, 16 Jun 2016 00:21:13 -0500
+Subject: [PATCH] secur32: Provide a static declaration for
+ gnutls_cipher_get_block_size.
+
+Instead of providing an extern provide a static declaration. The
+function return type changed from signed to unsigned in GnuTLS 3.5.
+
+Signed-off-by: Michael Cronenworth <mike@cchtml.com>
+Signed-off-by: Alexandre Julliard <julliard@winehq.org>
+---
+ dlls/secur32/schannel_gnutls.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/dlls/secur32/schannel_gnutls.c b/dlls/secur32/schannel_gnutls.c
+index b10b629..bcadd47 100644
+--- a/dlls/secur32/schannel_gnutls.c
++++ b/dlls/secur32/schannel_gnutls.c
+@@ -42,7 +42,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(secur32);
+ WINE_DECLARE_DEBUG_CHANNEL(winediag);
+
+ /* Not present in gnutls version < 2.9.10. */
+-extern int gnutls_cipher_get_block_size(gnutls_cipher_algorithm_t algorithm);
++static int (*pgnutls_cipher_get_block_size)(gnutls_cipher_algorithm_t algorithm);
+
+ static void *libgnutls_handle;
+ #define MAKE_FUNCPTR(f) static typeof(f) * p##f
+@@ -52,7 +52,6 @@ MAKE_FUNCPTR(gnutls_certificate_allocate_credentials);
+ MAKE_FUNCPTR(gnutls_certificate_free_credentials);
+ MAKE_FUNCPTR(gnutls_certificate_get_peers);
+ MAKE_FUNCPTR(gnutls_cipher_get);
+-MAKE_FUNCPTR(gnutls_cipher_get_block_size);
+ MAKE_FUNCPTR(gnutls_cipher_get_key_size);
+ MAKE_FUNCPTR(gnutls_credentials_set);
+ MAKE_FUNCPTR(gnutls_deinit);
+--
+2.1.4
+
diff --git a/app-emulation/wine/files/wine-1.9.5-multilib-portage.patch b/app-emulation/wine/files/wine-1.9.5-multilib-portage.patch
new file mode 100644
index 00000000..c19d0d8a
--- /dev/null
+++ b/app-emulation/wine/files/wine-1.9.5-multilib-portage.patch
@@ -0,0 +1,31 @@
+https://bugs.gentoo.org/show_bug.cgi?id=395615
+
+Explicitly add the required -m32/m64 to *FLAGS; this overrides any
+arch-specific -m* flags that may have been appended by multilib-portage.
+
+Even though -m32/m64 is now added to *FLAGS, -m32/m64 still has to be
+explicitly added to CC and CXX due to wine's build system. For example,
+winegcc saves the build-time value of CC and uses it at runtime.
+
+--- a/configure.ac 2016-03-05 20:53:50.574628728 -0500
++++ b/configure.ac 2016-03-05 20:57:54.945617833 -0500
+@@ -141,6 +141,9 @@
+ then
+ CC="$CC -m32"
+ CXX="$CXX -m32"
++ CFLAGS="$CFLAGS -m32"
++ LDFLAGS="$LDFLAGS -m32"
++ CXXFLAGS="$CXXFLAGS -m32"
+ AC_MSG_CHECKING([whether $CC works])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM()],AC_MSG_RESULT([yes]),
+ [AC_MSG_RESULT([no])
+@@ -160,6 +163,9 @@
+ fi
+ CC="$CC -m64"
+ CXX="$CXX -m64"
++ CFLAGS="$CFLAGS -m64"
++ LDFLAGS="$LDFLAGS -m64"
++ CXXFLAGS="$CXXFLAGS -m64"
+ host_cpu="x86_64"
+ notice_platform="64-bit "
+ AC_SUBST(TARGETFLAGS,"-m64")
diff --git a/app-emulation/wine/files/wine-gcc-4.9-null-pointer.patch b/app-emulation/wine/files/wine-gcc-4.9-null-pointer.patch
new file mode 100644
index 00000000..213f2c6c
--- /dev/null
+++ b/app-emulation/wine/files/wine-gcc-4.9-null-pointer.patch
@@ -0,0 +1,35 @@
+From deb274226783ab886bdb44876944e156757efe2b Mon Sep 17 00:00:00 2001
+From: Daniel Beitler <dan@dablabs.com>
+Date: Sun, 18 May 2014 13:27:42 -0400
+Subject: [PATCH] msi: Prevent call to memset with a null pointer in
+ get_tablecolumns function.
+
+---
+ dlls/msi/table.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/dlls/msi/table.c b/dlls/msi/table.c
+index 8012369..9ed9421 100644
+--- a/dlls/msi/table.c
++++ b/dlls/msi/table.c
+@@ -671,7 +671,7 @@ static UINT get_tablecolumns( MSIDATABASE *db, LPCWSTR szTableName, MSICOLUMNINF
+ /* Note: _Columns table doesn't have non-persistent data */
+
+ /* if maxcount is non-zero, assume it's exactly right for this table */
+- memset( colinfo, 0, maxcount * sizeof(*colinfo) );
++ if (colinfo) memset( colinfo, 0, maxcount * sizeof(*colinfo) );
+ count = table->row_count;
+ for (i = 0; i < count; i++)
+ {
+@@ -684,7 +684,7 @@ static UINT get_tablecolumns( MSIDATABASE *db, LPCWSTR szTableName, MSICOLUMNINF
+ /* check the column number is in range */
+ if (col < 1 || col > maxcount)
+ {
+- ERR("column %d out of range\n", col);
++ ERR("column %d out of range (maxcount: %d)\n", col, maxcount);
+ continue;
+ }
+ /* check if this column was already set */
+--
+1.9.1
+
diff --git a/app-emulation/wine/files/wine-sysmacros.patch b/app-emulation/wine/files/wine-sysmacros.patch
new file mode 100644
index 00000000..4ea515df
--- /dev/null
+++ b/app-emulation/wine/files/wine-sysmacros.patch
@@ -0,0 +1,177 @@
+From ca8a08606d3f0900b3f4aa8f2e6547882a22dba8 Mon Sep 17 00:00:00 2001
+From: Seong-ho Cho <darkcircle.0426@gmail.com>
+Date: Mon, 18 Apr 2016 04:25:38 +0900
+Subject: [PATCH] configure: Add AC_HEADER_MAJOR to find where major() is
+ defined.
+
+Signed-off-by: Seong-ho Cho <darkcircle.0426@gmail.com>
+Signed-off-by: Alexandre Julliard <julliard@winehq.org>
+---
+ configure | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac | 1 +
+ dlls/ntdll/cdrom.c | 5 +++++
+ dlls/ntdll/directory.c | 5 +++++
+ dlls/ntdll/file.c | 5 +++++
+ include/config.h.in | 8 ++++++++
+ server/fd.c | 5 +++++
+ 7 files changed, 79 insertions(+)
+
+diff --git a/configure b/configure
+index 1cb0e59..ffb1825 100755
+--- a/configure
++++ b/configure
+@@ -6836,6 +6836,56 @@ fi
+
+ done
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5
++$as_echo_n "checking whether sys/types.h defines makedev... " >&6; }
++if ${ac_cv_header_sys_types_h_makedev+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <sys/types.h>
++int
++main ()
++{
++return makedev(0, 0);
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"; then :
++ ac_cv_header_sys_types_h_makedev=yes
++else
++ ac_cv_header_sys_types_h_makedev=no
++fi
++rm -f core conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_types_h_makedev" >&5
++$as_echo "$ac_cv_header_sys_types_h_makedev" >&6; }
++
++if test $ac_cv_header_sys_types_h_makedev = no; then
++ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
++if test "x$ac_cv_header_sys_mkdev_h" = xyes; then :
++
++$as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h
++
++fi
++
++
++
++ if test $ac_cv_header_sys_mkdev_h = no; then
++ ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
++if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then :
++
++$as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
++
++fi
++
++
++ fi
++fi
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5
+ $as_echo_n "checking whether stat file-mode macros are broken... " >&6; }
+ if ${ac_cv_header_stat_broken+:} false; then :
+diff --git a/configure.ac b/configure.ac
+index 6189aa9..201bc77 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -512,6 +512,7 @@ AC_CHECK_HEADERS(\
+ valgrind/valgrind.h \
+ zlib.h
+ )
++AC_HEADER_MAJOR()
+ AC_HEADER_STAT()
+
+ dnl **** Checks for headers that depend on other ones ****
+diff --git a/dlls/ntdll/cdrom.c b/dlls/ntdll/cdrom.c
+index ee36045..2c64106 100644
+--- a/dlls/ntdll/cdrom.c
++++ b/dlls/ntdll/cdrom.c
+@@ -38,6 +38,11 @@
+ #ifdef HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
++#ifdef MAJOR_IN_MKDEV
++# include <sys/mkdev.h>
++#elif defined(MAJOR_IN_SYSMACROS)
++# include <sys/sysmacros.h>
++#endif
+ #include <sys/types.h>
+
+ #ifdef HAVE_SYS_IOCTL_H
+diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
+index 93fe594..4d431c0 100644
+--- a/dlls/ntdll/directory.c
++++ b/dlls/ntdll/directory.c
+@@ -47,6 +47,11 @@
+ #ifdef HAVE_SYS_ATTR_H
+ #include <sys/attr.h>
+ #endif
++#ifdef MAJOR_IN_MKDEV
++# include <sys/mkdev.h>
++#elif defined(MAJOR_IN_SYSMACROS)
++# include <sys/sysmacros.h>
++#endif
+ #ifdef HAVE_SYS_VNODE_H
+ /* Work around a conflict with Solaris' system list defined in sys/list.h. */
+ #define list SYSLIST
+diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
+index 7e5da59..b3bd9d6 100644
+--- a/dlls/ntdll/file.c
++++ b/dlls/ntdll/file.c
+@@ -57,6 +57,11 @@
+ #ifdef HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+ #endif
++#ifdef MAJOR_IN_MKDEV
++# include <sys/mkdev.h>
++#elif defined(MAJOR_IN_SYSMACROS)
++# include <sys/sysmacros.h>
++#endif
+ #ifdef HAVE_UTIME_H
+ # include <utime.h>
+ #endif
+diff --git a/include/config.h.in b/include/config.h.in
+index 0650f31..06b192f 100644
+--- a/include/config.h.in
++++ b/include/config.h.in
+@@ -1335,6 +1335,14 @@
+ /* Define to 1 if you have the `__res_get_state' function. */
+ #undef HAVE___RES_GET_STATE
+
++/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
++ */
++#undef MAJOR_IN_MKDEV
++
++/* Define to 1 if `major', `minor', and `makedev' are declared in
++ <sysmacros.h>. */
++#undef MAJOR_IN_SYSMACROS
++
+ /* Define to the address where bug reports for this package should be sent. */
+ #undef PACKAGE_BUGREPORT
+
+diff --git a/server/fd.c b/server/fd.c
+index 1fd1ce7..17b1b66 100644
+--- a/server/fd.c
++++ b/server/fd.c
+@@ -83,6 +83,11 @@
+ #endif
+ #include <sys/stat.h>
+ #include <sys/time.h>
++#ifdef MAJOR_IN_MKDEV
++#include <sys/mkdev.h>
++#elif defined(MAJOR_IN_SYSMACROS)
++#include <sys/sysmacros.h>
++#endif
+ #include <sys/types.h>
+ #include <unistd.h>
+ #ifdef HAVE_SYS_SYSCALL_H
+--
+2.7.4
+