added Win64 detection

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23816 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-09-22 12:43:36 +00:00
parent 014c5a64b5
commit ef620df011

View File

@@ -20,7 +20,7 @@
are included are included
*/ */
#if __MWERKS__ #if __MWERKS__
#include <stddef.h> # include <stddef.h>
#endif #endif
/* /*
@@ -30,53 +30,68 @@
#if defined(__CYGWIN32__) && !defined(__WXMOTIF__) && !defined(__WXGTK__) \ #if defined(__CYGWIN32__) && !defined(__WXMOTIF__) && !defined(__WXGTK__) \
&& !defined(__WXX11__) && !defined(__WXX11__)
/* for Cygwin, default to wxMSW unless otherwise specified */ /* for Cygwin, default to wxMSW unless otherwise specified */
#ifndef __WXMSW__ # ifndef __WXMSW__
#define __WXMSW__ # define __WXMSW__
#endif # endif
#ifndef _WIN32 # ifndef _WIN32
#define _WIN32 # define _WIN32
#endif # endif
#ifndef WIN32 # ifndef WIN32
#define WIN32 # define WIN32
#endif # endif
#endif #endif
#if defined(_WIN32) || defined(WIN32) || defined(__NT__) || defined(__WXWINCE__) #if defined(_WIN64)
#ifndef __WXMSW__ # ifndef _WIN32
#define __WXMSW__ /*
#endif a lot of code (mistakenly) uses #ifdef _WIN32 to either test for
Windows or to test for !__WIN16__, so we must define _WIN32 for
Win64 as well to ensure that the existing code continues to work.
*/
# define _WIN32
# endif /* !_WIN32 */
#ifndef __WIN32__ # ifndef __WIN64__
#define __WIN32__ # define __WIN64__
#endif # endif /* !__WIN64__ */
#endif /* _WIN64 */
#if defined(_WIN32) || defined(WIN32) || defined(__NT__) || defined(__WXWINCE__)
# ifndef __WXMSW__
# define __WXMSW__
# endif
# ifndef __WIN32__
# define __WIN32__
# endif
/* /*
see MSDN for the description of possible WINVER values, this one is a see MSDN for the description of possible WINVER values, this one is a
good default and, anyhow, we check for most of the features we use good default and, anyhow, we check for most of the features we use
during run-time. during run-time.
*/ */
#ifndef WINVER # ifndef WINVER
#define WINVER 0x0400 # define WINVER 0x0400
#endif # endif
/* Win95 means Win95-style UI, i.e. Win9x/NT 4+ */ /* Win95 means Win95-style UI, i.e. Win9x/NT 4+ */
#if !defined(__WIN95__) && (WINVER >= 0x0400) # if !defined(__WIN95__) && (WINVER >= 0x0400)
#define __WIN95__ # define __WIN95__
#endif # endif
#endif /* Win32 */ #endif /* Win32 */
#if defined(__WXMSW__) || defined(__WIN32__) #if defined(__WXMSW__) || defined(__WIN32__)
#if !defined(__WINDOWS__) # if !defined(__WINDOWS__)
#define __WINDOWS__ # define __WINDOWS__
#endif # endif
#endif #endif
#ifdef __WINE__ #ifdef __WINE__
#ifndef __WIN95__ # ifndef __WIN95__
#define __WIN95__ # define __WIN95__
#endif # endif
#endif /* WINE */ #endif /* WINE */
/* /*
@@ -93,8 +108,8 @@
setting here in such case. setting here in such case.
*/ */
#if defined(_MSC_VER) && (_MSC_VER >= 1310) #if defined(_MSC_VER) && (_MSC_VER >= 1310)
#undef wxUSE_IOSTREAMH # undef wxUSE_IOSTREAMH
#define wxUSE_IOSTREAMH 0 # define wxUSE_IOSTREAMH 0
#endif /* compilers not supporting iostream.h */ #endif /* compilers not supporting iostream.h */
/* /*
@@ -105,9 +120,9 @@
either case either case
*/ */
#if !wxUSE_IOSTREAMH #if !wxUSE_IOSTREAMH
#define wxSTD std:: # define wxSTD std::
#else #else
#define wxSTD # define wxSTD
#endif #endif
/* /*
@@ -115,19 +130,19 @@
for Unix, because DJGPP compiler defines __unix__ under MS-DOS for Unix, because DJGPP compiler defines __unix__ under MS-DOS
*/ */
#if defined(__GO32__) || defined(__DJGPP__) || defined(__DOS__) #if defined(__GO32__) || defined(__DJGPP__) || defined(__DOS__)
#ifndef __DOS__ # ifndef __DOS__
#define __DOS__ # define __DOS__
#endif # endif
/* size_t is the same as unsigned int for Watcom 11 compiler, */ /* size_t is the same as unsigned int for Watcom 11 compiler, */
/* so define it if it hadn't been done by configure yet */ /* so define it if it hadn't been done by configure yet */
#if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) # if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG)
#ifdef __WATCOMC__ # ifdef __WATCOMC__
#define wxSIZE_T_IS_UINT # define wxSIZE_T_IS_UINT
#endif # endif
#ifdef __DJGPP__ # ifdef __DJGPP__
#define wxSIZE_T_IS_ULONG # define wxSIZE_T_IS_ULONG
#endif # endif
#endif # endif
/* /*
OS: then test for generic Unix defines, then for particular flavours and OS: then test for generic Unix defines, then for particular flavours and
@@ -138,128 +153,128 @@
defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \ defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
defined(__EMX__) || defined(__VMS) || defined(__BEOS__) defined(__EMX__) || defined(__VMS) || defined(__BEOS__)
#define __UNIX_LIKE__ # define __UNIX_LIKE__
/* Helps SGI compilation, apparently */ /* Helps SGI compilation, apparently */
#ifdef __SGI__ # ifdef __SGI__
#ifdef __GNUG__ # ifdef __GNUG__
#define __need_wchar_t # define __need_wchar_t
#else /* !gcc */ # else /* !gcc */
/* /*
Note I use the term __SGI_CC__ for both cc and CC, its not a good Note I use the term __SGI_CC__ for both cc and CC, its not a good
idea to mix gcc and cc/CC, the name mangling is different idea to mix gcc and cc/CC, the name mangling is different
*/ */
#define __SGI_CC__ # define __SGI_CC__
#endif /* gcc/!gcc */ # endif /* gcc/!gcc */
#endif /* SGI */ # endif /* SGI */
#if defined(sun) || defined(__SUN__) # if defined(sun) || defined(__SUN__)
#ifndef __GNUG__ # ifndef __GNUG__
#ifndef __SUNCC__ # ifndef __SUNCC__
#define __SUNCC__ # define __SUNCC__
#endif /* Sun CC */ # endif /* Sun CC */
#endif # endif
#endif /* Sun */ # endif /* Sun */
#ifdef __EMX__ # ifdef __EMX__
#define OS2EMX_PLAIN_CHAR # define OS2EMX_PLAIN_CHAR
#endif # endif
/* define __HPUX__ for HP-UX where standard macro is __hpux */ /* define __HPUX__ for HP-UX where standard macro is __hpux */
#if defined(__hpux) && !defined(__HPUX__) # if defined(__hpux) && !defined(__HPUX__)
#define __HPUX__ # define __HPUX__
#endif /* HP-UX */ # endif /* HP-UX */
#if defined(__CYGWIN__) || defined(__WINE__) # if defined(__CYGWIN__) || defined(__WINE__)
#if !defined(wxSIZE_T_IS_UINT) # if !defined(wxSIZE_T_IS_UINT)
#define wxSIZE_T_IS_UINT # define wxSIZE_T_IS_UINT
#endif # endif
#endif # endif
#elif defined(applec) || \ #elif defined(applec) || \
defined(THINK_C) || \ defined(THINK_C) || \
(defined(__MWERKS__) && !defined(__INTEL__)) (defined(__MWERKS__) && !defined(__INTEL__))
/* MacOS */ /* MacOS */
#if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) # if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG)
#define wxSIZE_T_IS_ULONG # define wxSIZE_T_IS_ULONG
#endif # endif
#elif defined(__WXMAC__) && defined(__APPLE__) #elif defined(__WXMAC__) && defined(__APPLE__)
/* Mac OS X */ /* Mac OS X */
#define __UNIX_LIKE__ # define __UNIX_LIKE__
/* /*
These defines are needed when compiling using Project Builder These defines are needed when compiling using Project Builder
with a non generated setup0.h with a non generated setup0.h
*/ */
#ifndef __UNIX__ # ifndef __UNIX__
#define __UNIX__ 1 # define __UNIX__ 1
#endif # endif
#ifndef __BSD__ # ifndef __BSD__
#define __BSD__ 1 # define __BSD__ 1
#endif # endif
#ifndef __DARWIN__ # ifndef __DARWIN__
#define __DARWIN__ 1 # define __DARWIN__ 1
#endif # endif
#ifndef __POWERPC__ # ifndef __POWERPC__
#define __POWERPC__ 1 # define __POWERPC__ 1
#endif # endif
#ifndef TARGET_CARBON # ifndef TARGET_CARBON
#define TARGET_CARBON 1 # define TARGET_CARBON 1
#endif # endif
#if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) # if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG)
#define wxSIZE_T_IS_ULONG # define wxSIZE_T_IS_ULONG
#endif # endif
/* /*
Some code has been added to workaround defects(?) in the Some code has been added to workaround defects(?) in the
bundled gcc compiler. These corrections are identified by bundled gcc compiler. These corrections are identified by
__DARWIN__ for Darwin related corrections (wxMac, wxMotif) __DARWIN__ for Darwin related corrections (wxMac, wxMotif)
*/ */
#elif defined(__OS2__) #elif defined(__OS2__)
#if defined(__IBMCPP__) # if defined(__IBMCPP__)
#define __VISAGEAVER__ __IBMCPP__ # define __VISAGEAVER__ __IBMCPP__
#endif # endif
#ifndef __WXOS2__ # ifndef __WXOS2__
#define __WXOS2__ # define __WXOS2__
#endif # endif
#ifndef __WXPM__ # ifndef __WXPM__
#define __WXPM__ # define __WXPM__
#endif # endif
/* Place other OS/2 compiler environment defines here */ /* Place other OS/2 compiler environment defines here */
#if defined(__VISAGECPP__) # if defined(__VISAGECPP__)
/* VisualAge is the only thing that understands _Optlink */ /* VisualAge is the only thing that understands _Optlink */
#define LINKAGEMODE _Optlink # define LINKAGEMODE _Optlink
#endif # endif
#define wxSIZE_T_IS_UINT # define wxSIZE_T_IS_UINT
#else /* Windows */ #else /* Windows */
#ifndef __WINDOWS__ # ifndef __WINDOWS__
#define __WINDOWS__ # define __WINDOWS__
#endif /* Windows */ # endif /* Windows */
/* to be changed for Win64! */ /* to be changed for Win64! */
#ifndef __WIN32__ # ifndef __WIN32__
#define __WIN16__ # define __WIN16__
#endif # endif
/* /*
define another standard symbol for Microsoft Visual C++: the standard define another standard symbol for Microsoft Visual C++: the standard
one (_MSC_VER) is also defined by Metrowerks compiler one (_MSC_VER) is also defined by Metrowerks compiler
*/ */
#if defined(_MSC_VER) && !defined(__MWERKS__) # if defined(_MSC_VER) && !defined(__MWERKS__)
#define __VISUALC__ _MSC_VER # define __VISUALC__ _MSC_VER
#elif defined(__BCPLUSPLUS__) && !defined(__BORLANDC__) # elif defined(__BCPLUSPLUS__) && !defined(__BORLANDC__)
#define __BORLANDC__ # define __BORLANDC__
#elif defined(__WATCOMC__) # elif defined(__WATCOMC__)
#elif defined(__SC__) # elif defined(__SC__)
#define __SYMANTECC__ # define __SYMANTECC__
#endif /* compiler */ # endif /* compiler */
/* size_t is the same as unsigned int for all Windows compilers we know, */ /* size_t is the same as unsigned int for all Windows compilers we know, */
/* so define it if it hadn't been done by configure yet */ /* so define it if it hadn't been done by configure yet */
#if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) # if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG)
#define wxSIZE_T_IS_UINT # define wxSIZE_T_IS_UINT
#endif # endif
#endif /* OS */ #endif /* OS */
/* /*
@@ -267,35 +282,35 @@
define __UNIX__), do define __UNIX__ now define __UNIX__), do define __UNIX__ now
*/ */
#if !defined(__UNIX__) && defined(__UNIX_LIKE__) #if !defined(__UNIX__) && defined(__UNIX_LIKE__)
#define __UNIX__ # define __UNIX__
#endif /* Unix */ #endif /* Unix */
#if defined(__HPUX__) && !defined(__WXGTK__) #if defined(__HPUX__) && !defined(__WXGTK__)
#ifndef __WXMOTIF__ # ifndef __WXMOTIF__
#define __WXMOTIF__ # define __WXMOTIF__
#endif /* __WXMOTIF__ */ # endif /* __WXMOTIF__ */
#endif #endif
#if defined(__WXMOTIF__) || defined(__WXX11__) #if defined(__WXMOTIF__) || defined(__WXX11__)
#define __X__ # define __X__
#endif #endif
#ifdef __SC__ #ifdef __SC__
#ifdef __DMC__ # ifdef __DMC__
#define __DIGITALMARS__ # define __DIGITALMARS__
#else # else
#define __SYMANTEC__ # define __SYMANTEC__
#endif # endif
#endif #endif
/* /*
This macro can be used to test the gcc version and can be used like this: This macro can be used to test the gcc version and can be used like this:
#if wxCHECK_GCC_VERSION(3, 1) # if wxCHECK_GCC_VERSION(3, 1)
... we have gcc 3.1 or later ... ... we have gcc 3.1 or later ...
#else # else
... no gcc at all or gcc < 3.1 ... ... no gcc at all or gcc < 3.1 ...
#endif # endif
*/ */
#define wxCHECK_GCC_VERSION( major, minor ) \ #define wxCHECK_GCC_VERSION( major, minor ) \
( defined(__GNUC__) && defined(__GNUC_MINOR__) \ ( defined(__GNUC__) && defined(__GNUC_MINOR__) \
@@ -309,22 +324,22 @@
#if defined( __GNUWIN32__ ) || defined( __MINGW32__ ) || \ #if defined( __GNUWIN32__ ) || defined( __MINGW32__ ) || \
defined( __CYGWIN__ ) || \ defined( __CYGWIN__ ) || \
(defined(__WATCOMC__) && __WATCOMC__ >= 1200) (defined(__WATCOMC__) && __WATCOMC__ >= 1200)
#include "wx/msw/gccpriv.h" # include "wx/msw/gccpriv.h"
#else #else
#undef wxCHECK_W32API_VERSION # undef wxCHECK_W32API_VERSION
#define wxCHECK_W32API_VERSION(maj, min) (0) # define wxCHECK_W32API_VERSION(maj, min) (0)
#endif #endif
#if defined (__WXMSW__) #if defined (__WXMSW__)
#if !defined(__WATCOMC__) # if !defined(__WATCOMC__)
#define wxHAVE_RAW_BITMAP # define wxHAVE_RAW_BITMAP
#endif # endif
#endif #endif
#if defined (__WXMAC__) #if defined (__WXMAC__)
#ifndef WORDS_BIGENDIAN # ifndef WORDS_BIGENDIAN
#define WORDS_BIGENDIAN 1 # define WORDS_BIGENDIAN 1
#endif # endif
#endif #endif
/* Choose which method we will use for updating menus /* Choose which method we will use for updating menus
@@ -332,11 +347,11 @@
* Presently, only Windows and GTK+ support wxEVT_MENU_OPEN. * Presently, only Windows and GTK+ support wxEVT_MENU_OPEN.
*/ */
#ifndef wxUSE_IDLEMENUUPDATES #ifndef wxUSE_IDLEMENUUPDATES
#if defined(__WXMSW__) || defined(__WXGTK__) # if defined(__WXMSW__) || defined(__WXGTK__)
#define wxUSE_IDLEMENUUPDATES 0 # define wxUSE_IDLEMENUUPDATES 0
#else # else
#define wxUSE_IDLEMENUUPDATES 1 # define wxUSE_IDLEMENUUPDATES 1
#endif # endif
#endif #endif
/* /*
@@ -346,19 +361,19 @@
*/ */
#ifndef wxUSE_FILECONFIG #ifndef wxUSE_FILECONFIG
#if wxUSE_CONFIG # if wxUSE_CONFIG
#define wxUSE_FILECONFIG 1 # define wxUSE_FILECONFIG 1
#else # else
#define wxUSE_FILECONFIG 0 # define wxUSE_FILECONFIG 0
#endif # endif
#endif #endif
#ifndef wxUSE_HOTKEY #ifndef wxUSE_HOTKEY
#define wxUSE_HOTKEY 0 # define wxUSE_HOTKEY 0
#endif #endif
#if !defined(wxUSE_WXDIB) && defined(__WXMSW__) #if !defined(wxUSE_WXDIB) && defined(__WXMSW__)
#define wxUSE_WXDIB 1 # define wxUSE_WXDIB 1
#endif #endif
#endif /* _WX_PLATFORM_H_ */ #endif /* _WX_PLATFORM_H_ */