X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7047ddc0cfda29bce70136d1d15d03af3b6f7d00..259c43f679ca655362b5a439e11c87fc0666d663:/include/wx/platform.h diff --git a/include/wx/platform.h b/include/wx/platform.h index 9cb9554af7..601f6d2ce0 100644 --- a/include/wx/platform.h +++ b/include/wx/platform.h @@ -5,7 +5,7 @@ * Modified by: * Created: 29.10.01 (extracted from wx/defs.h) * RCS-ID: $Id$ -* Copyright: (c) 1997-2001 wxWindows team +* Copyright: (c) 1997-2001 Vadim Zeitlin * Licence: wxWindows licence */ @@ -19,17 +19,45 @@ Codewarrior doesn't define any Windows symbols until some headers are included */ -#if __MWERKS__ +#ifdef __MWERKS__ # include #endif +/* + WXMAC variants + __WXMAC_CLASSIC__ means ppc non-carbon builds, __WXMAC_CARBON__ means + carbon API available (mach or cfm builds) , __WXMAC_OSX__ means mach-o + builds, running under 10.2 + only +*/ +#ifdef __WXMAC__ +# if defined(__MACH__) +# define __WXMAC_OSX__ +# define __WXMAC_CARBON__ +# ifdef __WXMAC_XCODE__ +# include +# include "wx/mac/carbon/config_xcode.h" +# endif +# else +# if TARGET_CARBON +# define __WXMAC_CARBON__ +# else +# define __WXMAC_CLASSIC__ +# endif +# endif +#endif + +/* + __WXOSX__ is a common define to wxMac (Carbon) and wxCocoa ports under OS X. + */ +#if defined(__WXMAC_OSX__) || defined(__WXCOCOA__) +# define __WXOSX__ +#endif + /* first define Windows symbols if they're not defined on the command line: we can autodetect everything we need if _WIN32 is defined */ -#if defined(__CYGWIN32__) && !defined(__WXMOTIF__) && !defined(__WXGTK__) \ - && !defined(__WXX11__) - /* for Cygwin, default to wxMSW unless otherwise specified */ +#if defined(__CYGWIN__) && defined(__WINDOWS__) # ifndef __WXMSW__ # define __WXMSW__ # endif @@ -43,6 +71,27 @@ # endif #endif +#if defined(__PALMOS__) +# ifndef __WXPALMOS__ +# define __WXPALMOS__ +# endif +# ifdef __WXMSW__ +# undef __WXMSW__ +# endif +# ifdef __WINDOWS__ +# undef __WINDOWS__ +# endif +# ifdef __WIN32__ +# undef __WIN32__ +# endif +# ifdef WIN32 +# undef WIN32 +# endif +# ifdef _WIN32 +# undef _WIN32 +# endif +#endif + #if defined(_WIN64) # ifndef _WIN32 /* @@ -58,7 +107,8 @@ # endif /* !__WIN64__ */ #endif /* _WIN64 */ -#if defined(_WIN32) || defined(WIN32) || defined(__NT__) || defined(__WXWINCE__) +#if (defined(_WIN32) || defined(WIN32) || defined(__NT__) || defined(__WXWINCE__)) \ + && !defined(__WXMOTIF__) && !defined(__WXGTK__) && !defined(__WXX11__) # ifndef __WXMSW__ # define __WXMSW__ # endif @@ -67,45 +117,111 @@ # define __WIN32__ # endif - /* - 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 - during run-time. - */ -# ifndef WINVER -# define WINVER 0x0400 -# endif - - /* Win95 means Win95-style UI, i.e. Win9x/NT 4+ */ -# if !defined(__WIN95__) && (WINVER >= 0x0400) + /* this means Win95-style UI, i.e. Win9x/NT 4+: always true now */ +# if !defined(__WIN95__) # define __WIN95__ # endif #endif /* Win32 */ #if defined(__WXMSW__) || defined(__WIN32__) -# if !defined(__WINDOWS__) -# define __WINDOWS__ -# endif +# if !defined(__WINDOWS__) +# define __WINDOWS__ +# endif #endif #ifdef __WINE__ -# ifndef __WIN95__ -# define __WIN95__ -# endif +# ifndef __WIN95__ +# define __WIN95__ +# endif #endif /* WINE */ +/* detect MS SmartPhone */ +#if defined( WIN32_PLATFORM_WFSP ) +# ifndef __SMARTPHONE__ +# define __SMARTPHONE__ +# endif +# ifndef __WXWINCE__ +# define __WXWINCE__ +# endif +#endif + +/* detect PocketPC */ +#if defined( WIN32_PLATFORM_PSPC ) +# ifndef __POCKETPC__ +# define __POCKETPC__ +# endif +# ifndef __WXWINCE__ +# define __WXWINCE__ +# endif +#endif + +/* detect Standard WinCE SDK */ +#if defined( WCE_PLATFORM_STANDARDSDK ) +# ifndef __WINCE_STANDARDSDK__ +# define __WINCE_STANDARDSDK__ +# endif +# ifndef __WXWINCE__ +# define __WXWINCE__ +# endif +#endif + +#if defined(_WIN32_WCE) && !defined(WIN32_PLATFORM_WFSP) && !defined(WIN32_PLATFORM_PSPC) +# if (_WIN32_WCE >= 400) +# ifndef __WINCE_NET__ +# define __WINCE_NET__ +# endif +# elif (_WIN32_WCE >= 200) +# ifndef __HANDHELDPC__ +# define __HANDHELDPC__ +# endif +# endif +# ifndef __WXWINCE__ +# define __WXWINCE__ +# endif +#endif + /* Include wx/setup.h for the Unix platform defines generated by configure and the library compilation options + + Note that it must be included before defining hardware symbols below as they + could be already defined by configure */ #include "wx/setup.h" -/* check the consistency of the settings in setup.h */ -#include "wx/chkconf.h" +/* + Hardware platform detection. + + VC++ defines _M_xxx symbols. + */ +#if defined(_M_IX86) || defined(i386) || defined(__i386) || defined(__i386__) + #ifndef __INTEL__ + #define __INTEL__ + #endif +#endif /* x86 */ + +#if defined(_M_IA64) + #ifndef __IA64__ + #define __IA64__ + #endif +#endif /* ia64 */ + +#if defined(_M_MPPC) || defined(__PPC__) + #ifndef __POWERPC__ + #define __POWERPC__ + #endif +#endif /* alpha */ + +#if defined(_M_ALPHA) || defined(__AXP__) + #ifndef __ALPHA__ + #define __ALPHA__ + #endif +#endif /* alpha */ + /* adjust the Unicode setting: wxUSE_UNICODE should be defined as 0 or 1 - and is used by wxWindows, _UNICODE and/or UNICODE may be defined or used by + and is used by wxWidgets, _UNICODE and/or UNICODE may be defined or used by the system headers so bring these settings in sync */ @@ -129,28 +245,44 @@ # endif #endif /* wxUSE_UNICODE */ +#if defined( __MWERKS__ ) && !defined(__INTEL__) +// otherwise MSL headers bring in WIN32 dependant APIs +#undef UNICODE +#endif + + +/* + check the consistency of the settings in setup.h: note that this must be + done after setting wxUSE_UNICODE correctly as it is used in wx/chkconf.h + */ +#include "wx/chkconf.h" + /* some compilers don't support iostream.h any longer, while some of theme - are not updated with yet, so override the users setting here + are not updated with yet, so override the users setting here in such case. */ #if defined(_MSC_VER) && (_MSC_VER >= 1310) # undef wxUSE_IOSTREAMH # define wxUSE_IOSTREAMH 0 -#elif defined(__DMC__) +#elif defined(__DMC__) || defined(__WATCOMC__) +# undef wxUSE_IOSTREAMH +# define wxUSE_IOSTREAMH 1 +#elif defined(__MINGW32__) # undef wxUSE_IOSTREAMH -# define wxUSE_IOSTREAMH 1 -#endif /* compilers not supporting iostream.h */ +# define wxUSE_IOSTREAMH 0 +#endif /* compilers with/without iostream.h */ /* old C++ headers (like ) declare classes in the global namespace - while the new, standard ones (like ) do it in std:: namespace + while the new, standard ones (like ) do it in std:: namespace, + unless it's an old gcc version. using this macro allows constuctions like "wxSTD iostream" to work in either case */ -#if !wxUSE_IOSTREAMH +#if !wxUSE_IOSTREAMH && (!defined(__GNUC__) || ( __GNUC__ > 2 ) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) # define wxSTD std:: #else # define wxSTD @@ -197,6 +329,11 @@ */ # define __SGI_CC__ # endif /* gcc/!gcc */ + + /* system headers use this symbol and not __cplusplus in some places */ +# ifndef _LANGUAGE_C_PLUS_PLUS +# define _LANGUAGE_C_PLUS_PLUS +# endif # endif /* SGI */ # if defined(sun) || defined(__SUN__) @@ -209,9 +346,6 @@ # ifdef __EMX__ # define OS2EMX_PLAIN_CHAR -# ifdef __INNOTEK_LIBC__ -# define wxSIZE_T_IS_UINT -# endif # endif /* define __HPUX__ for HP-UX where standard macro is __hpux */ @@ -281,6 +415,17 @@ # endif # define wxSIZE_T_IS_UINT +#elif defined(__PALMOS__) +# ifdef __WIN32__ +# error "__WIN32__ should not be defined for PalmOS" +# endif +# ifdef __WINDOWS__ +# error "__WINDOWS__ should not be defined for PalmOS" +# endif +# ifdef __WXMSW__ +# error "__WXMSW__ should not be defined for PalmOS" +# endif + #else /* Windows */ # ifndef __WINDOWS__ # define __WINDOWS__ @@ -288,7 +433,7 @@ /* to be changed for Win64! */ # ifndef __WIN32__ -# define __WIN16__ +# error "__WIN32__ should be defined for Win32 and Win64, Win16 is not supported" # endif /* @@ -319,12 +464,6 @@ # define __UNIX__ #endif /* Unix */ -#if defined(__HPUX__) && !defined(__WXGTK__) -# ifndef __WXMOTIF__ -# define __WXMOTIF__ -# endif /* __WXMOTIF__ */ -#endif - #if defined(__WXMOTIF__) || defined(__WXX11__) # define __X__ #endif @@ -337,6 +476,19 @@ # endif #endif +/* + We get "Large Files (ILP32) not supported in strict ANSI mode." #error + from HP-UX standard headers when compiling with g++ without this: + */ +#if defined(__HPUX__) && !defined(__STDC_EXT__) +# define __STDC_EXT__ 1 +#endif + +/* Force linking against required libraries under Windows CE: */ +#ifdef __WXWINCE__ +# include "wx/msw/wince/libraries.h" +#endif + /* This macro can be used to test the gcc version and can be used like this: @@ -356,9 +508,14 @@ at least maj.min */ #if ( defined( __GNUWIN32__ ) || defined( __MINGW32__ ) || \ - defined( __CYGWIN__ ) || \ + ( defined( __CYGWIN__ ) && defined( __WINDOWS__ ) ) || \ (defined(__WATCOMC__) && __WATCOMC__ >= 1200) ) && \ - !defined(__DOS__) + !defined(__DOS__) && \ + !defined(__WXOS2__) && \ + !defined(__WXMOTIF__) && \ + !defined(__WXGTK__) && \ + !defined(__WXX11__) && \ + !defined(__WXPALMOS__) # include "wx/msw/gccpriv.h" #else # undef wxCHECK_W32API_VERSION @@ -372,7 +529,7 @@ #endif #if defined (__WXMAC__) -# ifndef WORDS_BIGENDIAN +# if !defined(WORDS_BIGENDIAN) && ( !defined(__MACH__) || ( defined(__BIG_ENDIAN__) && __BIG_ENDIAN__ ) ) # define WORDS_BIGENDIAN 1 # endif #endif @@ -411,5 +568,13 @@ # define wxUSE_WXDIB 1 #endif -#endif /* _WX_PLATFORM_H_ */ +/* + We need AvailabilityMacros.h for ifdefing out things that don't exist on + OSX 10.2 and lower + FIXME: We need a better way to detect for 10.3 then including a system header +*/ +#ifdef __DARWIN__ + #include +#endif +#endif /* _WX_PLATFORM_H_ */