diff --git a/Makefile.in b/Makefile.in index 5b41d4fc33b..6d89a5f43d7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -240,7 +240,7 @@ htmlpages: clean:: for i in $(BUILDSUBDIRS); do (cd $$i; $(MAKE) clean) || exit 1; done - for i in include include/bitmaps include/server include/wine; do (cd $$i; $(RM) *.o \#*\# .#* *~ *% *.bak *.orig *.rej *.flc); done + for i in include include/bitmaps include/wine; do (cd $$i; $(RM) *.o \#*\# .#* *~ *% *.bak *.orig *.rej *.flc); done $(RM) wine wine.sym libwine.a libwine.so.1.0 libwine.so TAGS .#* distclean: clean diff --git a/graphics/ddraw.c b/graphics/ddraw.c index 65e91cbd75f..d16385a430a 100644 --- a/graphics/ddraw.c +++ b/graphics/ddraw.c @@ -33,10 +33,6 @@ #endif /* defined(HAVE_LIBXXF86DGA) */ #ifdef HAVE_LIBXXF86VM -/* X is retarted and insists on declaring INT32, INT16 etc in Xmd.h, - this is a crude hack to get around it */ -#define XMD_H -typedef int INT32; #include "ts_xf86vmode.h" #endif /* defined(HAVE_LIBXXF86VM) */ diff --git a/include/basetsd.h b/include/basetsd.h new file mode 100644 index 00000000000..075516fb15f --- /dev/null +++ b/include/basetsd.h @@ -0,0 +1,145 @@ +/* + * Compilers that uses ILP32, LP64 or P64 type models + * for both Win32 and Win64 are supported by this file. + */ + +#ifndef __WINE_BASETSD_H +#define __WINE_BASETSD_H + +#ifdef __WINE__ +#include "config.h" +#endif /* defined(__WINE__) */ + +#ifdef __cplusplus +extern "C" { +#endif /* defined(__cplusplus) */ + +/* + * Win32 was easy to implement under Unix since most (all?) 32-bit + * Unices uses the same type model (ILP32) as Win32, where int, long + * and pointer are 32-bit. + * + * Win64, however, will cause some problems when implemented under Unix. + * Linux/{Alpha, Sparc64} and most (all?) other 64-bit Unices uses + * the LP64 type model where int is 32-bit and long and pointer are + * 64-bit. Win64 on the other hand uses the P64 (sometimes called LLP64) + * type model where int and long are 32 bit and pointer is 64-bit. + */ + +/* Type model indepent typedefs */ + +typedef char __int8; +typedef unsigned char __uint8; + +typedef short __int16; +typedef unsigned short __uint16; + +typedef int __int32; +typedef unsigned int __uint32; + +typedef long long __int64; +typedef unsigned long long __uint64; + +#if defined(_WIN64) + +typedef __uint32 __ptr32; +typedef void *__ptr64; + +#else /* FIXME: defined(_WIN32) */ + +typedef void *__ptr32; +typedef __uint64 __ptr64; + +#endif + +/* Always signed and 32 bit wide */ + +typedef __int32 LONG32; +typedef __int32 INT32; + +typedef LONG32 *PLONG32; +typedef INT32 *PINT32; + +/* Always unsigned and 32 bit wide */ + +typedef __uint32 ULONG32; +typedef __uint32 DWORD32; +typedef __uint32 UINT32; + +typedef ULONG32 *PULONG32; +typedef DWORD32 *PDWORD32; +typedef UINT32 *PUINT32; + +/* Always signed and 64 bit wide */ + +typedef __int64 LONG64; +typedef __int64 INT64; + +typedef LONG64 *PLONG64; +typedef INT64 *PINT64; + +/* Always unsigned and 64 bit wide */ + +typedef __uint64 ULONG64; +typedef __uint64 DWORD64; +typedef __uint64 UINT64; + +typedef ULONG64 *PULONG64; +typedef DWORD64 *PDWORD64; +typedef UINT64 *PUINT64; + +/* Win32 or Win64 dependent typedef/defines. */ + +#ifdef _WIN64 + +typedef __int64 INT_PTR, *PINT_PTR; +typedef __uint64 UINT_PTR, *PUINT_PTR; + +#define MAXINT_PTR 0x7fffffffffffffff +#define MININT_PTR 0x8000000000000000 +#define MAXUINT_PTR 0xffffffffffffffff + +typedef __int32 HALF_PTR, *PHALF_PTR; +typedef __int32 UHALF_PTR, *PUHALF_PTR; + +#define MAXHALF_PTR 0x7fffffff +#define MINHALF_PTR 0x80000000 +#define MAXUHALF_PTR 0xffffffff + +typedef __int64 LONG_PTR, *PLONG_PTR; +typedef __uint64 ULONG_PTR, *PULONG_PTR; +typedef __uint64 DWORD_PTR, *PDWORD_PTR; + +#else /* FIXME: defined(_WIN32) */ + +typedef __int32 INT_PTR, *PINT_PTR; +typedef __uint32 UINT_PTR, *PUINT_PTR; + +#define MAXINT_PTR 0x7fffffff +#define MININT_PTR 0x80000000 +#define MAXUINT_PTR 0xffffffff + +typedef __int16 HALF_PTR, *PHALF_PTR; +typedef __uint16 UHALF_PTR, *PUHALF_PTR; + +#define MAXUHALF_PTR 0xffff +#define MAXHALF_PTR 0x7fff +#define MINHALF_PTR 0x8000 + +typedef __int32 LONG_PTR, *PLONG_PTR; +typedef __uint32 ULONG_PTR, *PULONG_PTR; +typedef __uint32 DWORD_PTR, *PDWORD_PTR; + +#endif /* defined(_WIN64) || defined(_WIN32) */ + +typedef INT_PTR SSIZE_T, *PSSIZE_T; +typedef UINT_PTR SIZE_T, *PSIZE_T; + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* defined(__cplusplus) */ + +#endif /* !defined(__WINE_BASETSD_H) */ + + + diff --git a/include/ntdef.h b/include/ntdef.h index c42e4b70be9..dc07f68a59d 100644 --- a/include/ntdef.h +++ b/include/ntdef.h @@ -1,7 +1,7 @@ #ifndef __WINE_NTDEF_H #define __WINE_NTDEF_H -/* fixme: include basestd.h instead */ +#include "basetsd.h" #include "windef.h" #ifdef __cplusplus diff --git a/include/ts_xf86vmode.h b/include/ts_xf86vmode.h index 69e95ee553c..77911f5a5d0 100644 --- a/include/ts_xf86vmode.h +++ b/include/ts_xf86vmode.h @@ -16,7 +16,7 @@ #include "windef.h" #ifdef HAVE_LIBXXF86VM #define XMD_H -#define INT32 INT +#include "basetsd.h" #include #include diff --git a/include/winbase.h b/include/winbase.h index 0fcd0a82f7a..ba6eaafbe89 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -1,6 +1,7 @@ #ifndef __WINE_WINBASE_H #define __WINE_WINBASE_H +#include "basetsd.h" #include "winnt.h" #include "wine/winestring.h" diff --git a/include/windef.h b/include/windef.h index eee23d568e5..d6274d8913b 100644 --- a/include/windef.h +++ b/include/windef.h @@ -113,8 +113,6 @@ typedef unsigned short WCHAR; typedef unsigned short BOOL16; typedef int BOOL; typedef double DATE; -typedef long LONG_PTR; -typedef unsigned long ULONG_PTR; typedef double DOUBLE; typedef double LONGLONG; typedef double ULONGLONG; @@ -152,7 +150,6 @@ typedef DWORD LCID; typedef WORD LANGID; typedef DWORD LCTYPE; typedef float FLOAT; -typedef long long __int64; /* Pointers types. These are the same for emulator and library. */ /* winnt types */ diff --git a/include/winreg.h b/include/winreg.h index c7fd07acc4d..2dacb556615 100644 --- a/include/winreg.h +++ b/include/winreg.h @@ -80,10 +80,6 @@ extern "C" { KEY_CREATE_LINK \ ) -/* fixme: move it to basetsd.h */ -typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; -/* end fixme */ - /* * registry provider structs */ diff --git a/tools/make_X11wrappers b/tools/make_X11wrappers index 47affcbf149..05f28785425 100755 --- a/tools/make_X11wrappers +++ b/tools/make_X11wrappers @@ -69,7 +69,7 @@ foreach $name (@dolist) { if($name eq "xf86vmode") { $x11_incl = "#include \n"; $extensions_dir = "extensions/"; - $pre_file = "#include \"windef.h\"\n#ifdef HAVE_LIBXXF86VM\n#define XMD_H\n#define INT32 INT\n"; + $pre_file = "#include \"windef.h\"\n#ifdef HAVE_LIBXXF86VM\n#define XMD_H\n#include \"basetsd.h\"\n"; $post_file = "#endif /* defined(HAVE_LIBXXF86VM) */\n"; } diff --git a/tsx11/ts_xf86vmode.c b/tsx11/ts_xf86vmode.c index 21161e1ad5b..78cb208ad1b 100644 --- a/tsx11/ts_xf86vmode.c +++ b/tsx11/ts_xf86vmode.c @@ -11,7 +11,7 @@ #include "windef.h" #ifdef HAVE_LIBXXF86VM #define XMD_H -#define INT32 INT +#include "basetsd.h" #include #include