summaryrefslogtreecommitdiff
path: root/emulators
diff options
context:
space:
mode:
authormarino <marino@pkgsrc.org>2012-05-23 17:48:53 +0000
committermarino <marino@pkgsrc.org>2012-05-23 17:48:53 +0000
commit29e926a382dd7441b631bbdacae5708b37878a97 (patch)
treed4a4fa46f073d24e769fb5410c1427ab554cb510 /emulators
parent87339e95389bdf8789eb3912a7cd0aa2b3bf7541 (diff)
downloadpkgsrc-29e926a382dd7441b631bbdacae5708b37878a97.tar.gz
emulators/wine-devel: Add DragonFly support
I have no idea if this actually works, but at least it builds which was not the case before.
Diffstat (limited to 'emulators')
-rw-r--r--emulators/wine-devel/distinfo13
-rw-r--r--emulators/wine-devel/patches/patch-ab142
-rw-r--r--emulators/wine-devel/patches/patch-ac64
-rw-r--r--emulators/wine-devel/patches/patch-ad22
-rw-r--r--emulators/wine-devel/patches/patch-dlls_kernel32_heap.c25
-rw-r--r--emulators/wine-devel/patches/patch-dlls_ntdll_file.c25
-rw-r--r--emulators/wine-devel/patches/patch-dlls_ntdll_nt.c14
-rw-r--r--emulators/wine-devel/patches/patch-dlls_ntdll_server.c13
-rw-r--r--emulators/wine-devel/patches/patch-libs_wine_ldt.c24
9 files changed, 326 insertions, 16 deletions
diff --git a/emulators/wine-devel/distinfo b/emulators/wine-devel/distinfo
index b6261c7ca83..521aee9730f 100644
--- a/emulators/wine-devel/distinfo
+++ b/emulators/wine-devel/distinfo
@@ -1,12 +1,12 @@
-$NetBSD: distinfo,v 1.18 2011/08/20 20:47:35 adam Exp $
+$NetBSD: distinfo,v 1.19 2012/05/23 17:48:53 marino Exp $
SHA1 (wine-1.3.26.tar.bz2) = a609ebb1f8c0908fb86948edcb1f7f9ccca47e7f
RMD160 (wine-1.3.26.tar.bz2) = c1d98690ff16a63cea6c04c64444c075ad7ab472
Size (wine-1.3.26.tar.bz2) = 19540784 bytes
SHA1 (patch-aa) = d3dfe9fe061271e83b75fcfd10fb0ed85e6549b1
-SHA1 (patch-ab) = 90cb810b02d22f8e96389e6c1d4f230c11fb1d8c
-SHA1 (patch-ac) = e534b092242b19fe25b2761339c42341734fe0e8
-SHA1 (patch-ad) = 54df859456f8f6efcddfcdbb5b3fd514e48e8045
+SHA1 (patch-ab) = c5ef7e5742188ac7e93657288fce67646cfe15d6
+SHA1 (patch-ac) = 7bb71730ea802c4df252bccae2d1bc30ad886410
+SHA1 (patch-ad) = bda97f700bfdb1f4ab3e8a2fc859ec3febd9723a
SHA1 (patch-ae) = 9d216294340483f37223c186e5d76ae34880b0a6
SHA1 (patch-af) = 32a23d042a2d4f76898dff76e981166ade9e0275
SHA1 (patch-ai) = 54453ed21f52d1da6a7f89bc437f7b318db5058f
@@ -21,3 +21,8 @@ SHA1 (patch-cd) = aec27ca5616625e80123e92b3db1abdd90d212a0
SHA1 (patch-ce) = 23088aac01e74164ec6d4a42f96ab7fa34d002c3
SHA1 (patch-cf) = 6a1c8ce2c77de0eebb9aad9cd5078cf18538d8d8
SHA1 (patch-cg) = a4ed965470b150f619e5ca673138fe07094963b2
+SHA1 (patch-dlls_kernel32_heap.c) = 46faf6b31182b88de2260190113098512f00c108
+SHA1 (patch-dlls_ntdll_file.c) = df3aa27b5d4ffc24b9bd0f8272ab273a3d4cb559
+SHA1 (patch-dlls_ntdll_nt.c) = 4e47a00b3f7303425a8f64825a23675acf1325d1
+SHA1 (patch-dlls_ntdll_server.c) = 7c7051fdae3f5c6b4671219932c517f460e05dda
+SHA1 (patch-libs_wine_ldt.c) = f2575c80599229eda197726797b2432d2fba0228
diff --git a/emulators/wine-devel/patches/patch-ab b/emulators/wine-devel/patches/patch-ab
index c9ff016802a..271e886d5fc 100644
--- a/emulators/wine-devel/patches/patch-ab
+++ b/emulators/wine-devel/patches/patch-ab
@@ -1,4 +1,4 @@
-$NetBSD: patch-ab,v 1.1.1.1 2008/11/21 17:40:31 adam Exp $
+$NetBSD: patch-ab,v 1.2 2012/05/23 17:48:54 marino Exp $
--- dlls/ntdll/cdrom.c.orig 2008-06-27 16:24:42.000000000 +0200
+++ dlls/ntdll/cdrom.c
@@ -19,3 +19,143 @@ $NetBSD: patch-ab,v 1.1.1.1 2008/11/21 17:40:31 adam Exp $
#endif
#ifdef HAVE_LINUX_UCDROM_H
# include <linux/ucdrom.h>
+@@ -473,7 +483,8 @@ static NTSTATUS CDROM_SyncCache(int dev,
+ cdrom_cache[dev].toc_good = 1;
+ return STATUS_SUCCESS;
+
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+
+ int i, tsz;
+ struct ioc_toc_header hdr;
+@@ -784,7 +795,8 @@ static NTSTATUS CDROM_ResetAudio(int fd)
+ {
+ #if defined(linux)
+ return CDROM_GetStatusCode(ioctl(fd, CDROMRESET));
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ return CDROM_GetStatusCode(ioctl(fd, CDIOCRESET, NULL));
+ #else
+ FIXME("not supported on this O/S\n");
+@@ -801,7 +813,8 @@ static NTSTATUS CDROM_SetTray(int fd, BO
+ {
+ #if defined(linux)
+ return CDROM_GetStatusCode(ioctl(fd, doEject ? CDROMEJECT : CDROMCLOSETRAY));
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ return CDROM_GetStatusCode((ioctl(fd, CDIOCALLOW, NULL)) ||
+ (ioctl(fd, doEject ? CDIOCEJECT : CDIOCCLOSE, NULL)) ||
+ (ioctl(fd, CDIOCPREVENT, NULL)));
+@@ -823,7 +836,8 @@ static NTSTATUS CDROM_ControlEjection(in
+ {
+ #if defined(linux)
+ return CDROM_GetStatusCode(ioctl(fd, CDROM_LOCKDOOR, rmv->PreventMediaRemoval));
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ return CDROM_GetStatusCode(ioctl(fd, (rmv->PreventMediaRemoval) ? CDIOCPREVENT : CDIOCALLOW, NULL));
+ #else
+ FIXME("not supported on this O/S\n");
+@@ -978,7 +992,8 @@ static NTSTATUS CDROM_ReadQChannel(int d
+
+ end:
+ ret = CDROM_GetStatusCode(io);
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ SUB_Q_HEADER* hdr = (SUB_Q_HEADER*)data;
+ int io;
+ struct ioc_read_subchannel read_sc;
+@@ -1134,7 +1149,8 @@ static NTSTATUS CDROM_Verify(int dev, in
+ return STATUS_SUCCESS;
+ else
+ return STATUS_NO_MEDIA_IN_DEVICE;
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__DragonFly__)
+ int ret;
+ ret = ioctl(fd, CDIOCSTART, NULL);
+ if(ret == 0)
+@@ -1187,7 +1203,8 @@ static NTSTATUS CDROM_PlayAudioMSF(int f
+ msf.cdmsf_min1, msf.cdmsf_sec1, msf.cdmsf_frame1);
+ end:
+ ret = CDROM_GetStatusCode(io);
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ struct ioc_play_msf msf;
+ int io;
+
+@@ -1232,7 +1249,8 @@ static NTSTATUS CDROM_SeekAudioMSF(int d
+ #if defined(linux)
+ struct cdrom_msf0 msf;
+ struct cdrom_subchnl sc;
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ struct ioc_play_msf msf;
+ struct ioc_read_subchannel read_sc;
+ struct cd_sub_channel_info sc;
+@@ -1285,7 +1303,8 @@ static NTSTATUS CDROM_SeekAudioMSF(int d
+ return CDROM_GetStatusCode(ioctl(fd, CDROMSEEK, &msf));
+ }
+ return STATUS_SUCCESS;
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ read_sc.address_format = CD_MSF_FORMAT;
+ read_sc.track = 0;
+ read_sc.data_len = sizeof(sc);
+@@ -1326,7 +1345,8 @@ static NTSTATUS CDROM_PauseAudio(int fd)
+ {
+ #if defined(linux)
+ return CDROM_GetStatusCode(ioctl(fd, CDROMPAUSE));
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ return CDROM_GetStatusCode(ioctl(fd, CDIOCPAUSE, NULL));
+ #else
+ FIXME(": not supported on this O/S\n");
+@@ -1343,7 +1363,8 @@ static NTSTATUS CDROM_ResumeAudio(int fd
+ {
+ #if defined(linux)
+ return CDROM_GetStatusCode(ioctl(fd, CDROMRESUME));
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ return CDROM_GetStatusCode(ioctl(fd, CDIOCRESUME, NULL));
+ #else
+ FIXME("not supported on this O/S\n");
+@@ -1360,7 +1381,8 @@ static NTSTATUS CDROM_StopAudio(int fd)
+ {
+ #if defined(linux)
+ return CDROM_GetStatusCode(ioctl(fd, CDROMSTOP));
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ return CDROM_GetStatusCode(ioctl(fd, CDIOCSTOP, NULL));
+ #else
+ FIXME("not supported on this O/S\n");
+@@ -1388,7 +1410,8 @@ static NTSTATUS CDROM_GetVolume(int fd,
+ vc->PortVolume[3] = volc.channel3;
+ }
+ return CDROM_GetStatusCode(io);
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ struct ioc_vol volc;
+ int io;
+
+@@ -1423,7 +1446,8 @@ static NTSTATUS CDROM_SetVolume(int fd,
+ volc.channel3 = vc->PortVolume[3];
+
+ return CDROM_GetStatusCode(ioctl(fd, CDROMVOLCTRL, &volc));
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__DragonFly__)
+ struct ioc_vol volc;
+
+ volc.vol[0] = vc->PortVolume[0];
diff --git a/emulators/wine-devel/patches/patch-ac b/emulators/wine-devel/patches/patch-ac
index 2a52af2df0e..4611b39689e 100644
--- a/emulators/wine-devel/patches/patch-ac
+++ b/emulators/wine-devel/patches/patch-ac
@@ -1,8 +1,8 @@
-$NetBSD: patch-ac,v 1.3 2011/05/02 21:23:01 adam Exp $
+$NetBSD: patch-ac,v 1.4 2012/05/23 17:48:54 marino Exp $
--- dlls/ntdll/directory.c.orig 2010-06-18 17:36:58.000000000 +0000
+++ dlls/ntdll/directory.c
-@@ -128,6 +128,20 @@ static inline int getdents64( int fd, ch
+@@ -129,6 +129,20 @@ static inline int getdents64( int fd, ch
#endif /* linux */
#define IS_OPTION_TRUE(ch) ((ch) == 'y' || (ch) == 'Y' || (ch) == 't' || (ch) == 'T' || (ch) == '1')
@@ -23,3 +23,63 @@ $NetBSD: patch-ac,v 1.3 2011/05/02 21:23:01 adam Exp $
#define IS_SEPARATOR(ch) ((ch) == '\\' || (ch) == '/')
#define INVALID_NT_CHARS '*','?','<','>','|','"'
+@@ -313,7 +327,8 @@ static char *get_default_com_device( int
+ strcpy( ret, "/dev/ttyS0" );
+ ret[strlen(ret) - 1] = '0' + num - 1;
+ }
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__DragonFly__)
+ ret = RtlAllocateHeap( GetProcessHeap(), 0, sizeof("/dev/cuad0") );
+ if (ret)
+ {
+@@ -486,7 +501,8 @@ static char *parse_mount_entries( FILE *
+ }
+ #endif
+
+-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__DragonFly__)
+ #include <fstab.h>
+ static char *parse_mount_entries( FILE *f, dev_t dev, ino_t ino )
+ {
+@@ -587,7 +603,8 @@ static char *get_default_drive_device( c
+ }
+ RtlLeaveCriticalSection( &dir_section );
+
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__ )
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__ ) \
++ || defined(__DragonFly__)
+ char *device = NULL;
+ int fd, res = -1;
+ struct stat st;
+@@ -920,7 +937,8 @@ static int get_dir_case_sensitivity_attr
+ */
+ static BOOLEAN get_dir_case_sensitivity_stat( const char *dir )
+ {
+-#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__DragonFly__)
+ struct statfs stfs;
+
+ if (statfs( dir, &stfs ) == -1) return FALSE;
+@@ -1667,6 +1685,9 @@ static int read_directory_getdirentries(
+ BOOLEAN single_entry, const UNICODE_STRING *mask,
+ BOOLEAN restart_scan, FILE_INFORMATION_CLASS class )
+ {
++#ifdef __DragonFly__
++#define d_reclen d_namlen
++#endif
+ long restart_pos;
+ ULONG_PTR restart_info_pos = 0;
+ size_t size, initial_size = length;
+@@ -1799,6 +1820,9 @@ done:
+ return res;
+ }
+
++#ifdef __DragonFly__
++#undef d_reclen
++#endif
+ #ifdef _DARWIN_FEATURE_64_BIT_INODE
+ #undef getdirentries
+ #undef dirent
diff --git a/emulators/wine-devel/patches/patch-ad b/emulators/wine-devel/patches/patch-ad
index b7b393d9ac6..6f3b58489bb 100644
--- a/emulators/wine-devel/patches/patch-ad
+++ b/emulators/wine-devel/patches/patch-ad
@@ -1,7 +1,7 @@
-$NetBSD: patch-ad,v 1.6 2011/05/02 21:23:01 adam Exp $
+$NetBSD: patch-ad,v 1.7 2012/05/23 17:48:54 marino Exp $
--- dlls/iphlpapi/ipstats.c.orig 2010-12-10 22:33:07.000000000 +0300
-+++ dlls/iphlpapi/ipstats.c 2010-12-22 00:38:30.000000000 +0300
++++ dlls/iphlpapi/ipstats.c
@@ -27,6 +27,10 @@
#include <string.h>
#include <errno.h>
@@ -13,7 +13,7 @@ $NetBSD: patch-ad,v 1.6 2011/05/02 21:23:01 adam Exp $
#ifdef HAVE_ALIAS_H
#include <alias.h>
#endif
-@@ -489,7 +493,7 @@
+@@ -489,7 +493,7 @@ DWORD WINAPI GetIcmpStatistics(PMIB_ICMP
}
if (kc) kstat_close( kc );
}
@@ -22,25 +22,29 @@ $NetBSD: patch-ad,v 1.6 2011/05/02 21:23:01 adam Exp $
{
int mib[] = {CTL_NET, PF_INET, IPPROTO_ICMP, ICMPCTL_STATS};
#define MIB_LEN (sizeof(mib) / sizeof(mib[0]))
-@@ -655,7 +659,7 @@
+@@ -655,7 +659,9 @@ DWORD WINAPI GetIpStatistics(PMIB_IPSTAT
}
if (kc) kstat_close( kc );
}
-#elif defined(HAVE_SYS_SYSCTL_H) && defined(IPCTL_STATS)
-+#elif defined(HAVE_SYS_SYSCTL_H) && defined(IPCTL_STATS) && !defined(__NetBSD__)
++#elif defined(HAVE_SYS_SYSCTL_H) && defined(IPCTL_STATS) \
++ && !defined(__NetBSD__) \
++ && !defined(__DragonFly__)
{
int mib[] = {CTL_NET, PF_INET, IPPROTO_IP, IPCTL_STATS};
#define MIB_LEN (sizeof(mib) / sizeof(mib[0]))
-@@ -804,7 +808,7 @@
+@@ -804,7 +810,9 @@ DWORD WINAPI GetTcpStatistics(PMIB_TCPST
}
if (kc) kstat_close( kc );
}
-#elif defined(HAVE_SYS_SYSCTL_H) && defined(UDPCTL_STATS)
-+#elif defined(HAVE_SYS_SYSCTL_H) && defined(UDPCTL_STATS) && !defined(__NetBSD__)
++#elif defined(HAVE_SYS_SYSCTL_H) && defined(UDPCTL_STATS) \
++ && !defined(__NetBSD__) \
++ && !defined(__DragonFly__)
{
#ifndef TCPTV_MIN /* got removed in Mac OS X for some reason */
#define TCPTV_MIN 2
-@@ -915,7 +919,7 @@
+@@ -915,7 +923,7 @@ DWORD WINAPI GetUdpStatistics(PMIB_UDPST
}
if (kc) kstat_close( kc );
}
@@ -49,7 +53,7 @@ $NetBSD: patch-ad,v 1.6 2011/05/02 21:23:01 adam Exp $
{
int mib[] = {CTL_NET, PF_INET, IPPROTO_UDP, UDPCTL_STATS};
#define MIB_LEN (sizeof(mib) / sizeof(mib[0]))
-@@ -1347,7 +1351,7 @@
+@@ -1347,7 +1355,7 @@ DWORD WINAPI AllocateAndGetIpNetTableFro
}
else ret = ERROR_NOT_SUPPORTED;
}
diff --git a/emulators/wine-devel/patches/patch-dlls_kernel32_heap.c b/emulators/wine-devel/patches/patch-dlls_kernel32_heap.c
new file mode 100644
index 00000000000..f8cbeeb0779
--- /dev/null
+++ b/emulators/wine-devel/patches/patch-dlls_kernel32_heap.c
@@ -0,0 +1,25 @@
+$NetBSD: patch-dlls_kernel32_heap.c,v 1.1 2012/05/23 17:48:54 marino Exp $
+
+--- dlls/kernel32/heap.c.orig 2011-08-05 17:24:22.000000000 +0000
++++ dlls/kernel32/heap.c
+@@ -1146,7 +1146,8 @@ BOOL WINAPI GlobalMemoryStatusEx( LPMEMO
+ SYSTEM_INFO si;
+ #ifdef linux
+ FILE *f;
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+ unsigned long val;
+ int mib[2];
+ size_t size_sys;
+@@ -1218,7 +1219,9 @@ BOOL WINAPI GlobalMemoryStatusEx( LPMEMO
+ }
+ fclose( f );
+ }
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) \
++ || defined(__DragonFly__)
+ mib[0] = CTL_HW;
+ mib[1] = HW_PHYSMEM;
+ size_sys = sizeof(val);
diff --git a/emulators/wine-devel/patches/patch-dlls_ntdll_file.c b/emulators/wine-devel/patches/patch-dlls_ntdll_file.c
new file mode 100644
index 00000000000..c2771ca9e9c
--- /dev/null
+++ b/emulators/wine-devel/patches/patch-dlls_ntdll_file.c
@@ -0,0 +1,25 @@
+$NetBSD: patch-dlls_ntdll_file.c,v 1.1 2012/05/23 17:48:54 marino Exp $
+
+--- dlls/ntdll/file.c.orig 2011-08-05 17:24:22.000000000 +0000
++++ dlls/ntdll/file.c
+@@ -2256,7 +2256,9 @@ NTSTATUS WINAPI NtQueryAttributesFile( c
+ }
+
+
+-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) \
++ || defined(__DragonFly__)
+ /* helper for FILE_GetDeviceInfo to hide some platform differences in fstatfs */
+ static inline void get_device_info_fstatfs( FILE_FS_DEVICE_INFORMATION *info, const char *fstypename,
+ unsigned int flags )
+@@ -2377,7 +2379,8 @@ static NTSTATUS get_device_info( int fd,
+ info->DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
+ break;
+ }
+-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__) || defined(__APPLE__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__)
+ struct statfs stfs;
+
+ if (fstatfs( fd, &stfs ) < 0)
diff --git a/emulators/wine-devel/patches/patch-dlls_ntdll_nt.c b/emulators/wine-devel/patches/patch-dlls_ntdll_nt.c
new file mode 100644
index 00000000000..c8f334e3ea8
--- /dev/null
+++ b/emulators/wine-devel/patches/patch-dlls_ntdll_nt.c
@@ -0,0 +1,14 @@
+$NetBSD: patch-dlls_ntdll_nt.c,v 1.1 2012/05/23 17:48:54 marino Exp $
+
+--- dlls/ntdll/nt.c.orig 2011-08-05 17:24:22.000000000 +0000
++++ dlls/ntdll/nt.c
+@@ -1172,7 +1172,8 @@ void fill_cpu_info(void)
+ fclose(f);
+ }
+ }
+-#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__)
++#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__) \
++ || defined(__DragonFly__)
+ {
+ int ret, num;
+ size_t len;
diff --git a/emulators/wine-devel/patches/patch-dlls_ntdll_server.c b/emulators/wine-devel/patches/patch-dlls_ntdll_server.c
new file mode 100644
index 00000000000..3fc2b952cf9
--- /dev/null
+++ b/emulators/wine-devel/patches/patch-dlls_ntdll_server.c
@@ -0,0 +1,13 @@
+$NetBSD: patch-dlls_ntdll_server.c,v 1.1 2012/05/23 17:48:54 marino Exp $
+
+--- dlls/ntdll/server.c.orig 2011-08-05 17:24:22.000000000 +0000
++++ dlls/ntdll/server.c
+@@ -946,7 +946,7 @@ static int get_unix_tid(void)
+ int ret = -1;
+ #ifdef linux
+ ret = syscall( SYS_gettid );
+-#elif defined(__sun)
++#elif defined(__sun) || defined(__DragonFly__)
+ ret = pthread_self();
+ #elif defined(__APPLE__)
+ ret = mach_thread_self();
diff --git a/emulators/wine-devel/patches/patch-libs_wine_ldt.c b/emulators/wine-devel/patches/patch-libs_wine_ldt.c
new file mode 100644
index 00000000000..f3491ae1d74
--- /dev/null
+++ b/emulators/wine-devel/patches/patch-libs_wine_ldt.c
@@ -0,0 +1,24 @@
+$NetBSD: patch-libs_wine_ldt.c,v 1.1 2012/05/23 17:48:54 marino Exp $
+
+--- libs/wine/ldt.c.orig 2011-08-05 17:24:22.000000000 +0000
++++ libs/wine/ldt.c
+@@ -87,7 +87,8 @@ static inline int set_thread_area( struc
+ #endif
+ #endif
+
+-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+ #include <machine/segments.h>
+ #include <machine/sysarch.h>
+ #endif /* __NetBSD__ || __FreeBSD__ || __OpenBSD__ */
+@@ -175,7 +176,8 @@ static int internal_set_entry( unsigned
+ if ((ret = modify_ldt(0x11, &ldt_info, sizeof(ldt_info))) < 0)
+ perror( "modify_ldt" );
+ }
+-#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
++ || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+ {
+ LDT_ENTRY entry_copy = *entry;
+ /* The kernel will only let us set LDTs with user priority level */