]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/platform.h
Don't define __STRICT_ANSI__, we should build both with and without it.
[wxWidgets.git] / include / wx / platform.h
index e322e88fce92295497e16eef852b8955535f395b..53b04e522d69fb04e686279118fca6be7ae63c3a 100644 (file)
@@ -4,7 +4,6 @@
 * Author:      Vadim Zeitlin
 * Modified by:
 * Created:     29.10.01 (extracted from wx/defs.h)
 * Author:      Vadim Zeitlin
 * Modified by:
 * Created:     29.10.01 (extracted from wx/defs.h)
-* RCS-ID:      $Id$
 * Copyright:   (c) 1997-2001 Vadim Zeitlin
 * Licence:     wxWindows licence
 */
 * Copyright:   (c) 1997-2001 Vadim Zeitlin
 * Licence:     wxWindows licence
 */
 #endif
 
 /*
 #endif
 
 /*
-   first define Windows symbols if they're not defined on the command line: we
-   can autodetect everything we need if _WIN32 is defined
+    We use __WINDOWS__ as our main identification symbol for Microsoft Windows
+    but it's actually not predefined directly by any commonly used compilers
+    (only Watcom defines it itself and it's not supported any longer), so we
+    define it ourselves if any of the following macros is defined:
+
+    - MSVC _WIN32 (notice that this is also defined under Win64)
+    - Borland __WIN32__
+    - Our __WXMSW__ which selects Windows as platform automatically
  */
  */
-#if defined(__CYGWIN__) && defined(__WINDOWS__)
-#    ifndef __WXMSW__
-#        define __WXMSW__
-#    endif
-#endif
+#if defined(_WIN32) || defined(__WIN32__) || defined(__WXMSW__)
+#    ifndef __WINDOWS__
+#        define __WINDOWS__
+#    endif /* !__WINDOWS__ */
+#endif /* Any standard symbol indicating Windows */
 
 #if defined(_WIN64)
 #    ifndef _WIN32
 
 #if defined(_WIN64)
 #    ifndef _WIN32
 #   endif /* !__WIN64__ */
 #endif /* _WIN64 */
 
 #   endif /* !__WIN64__ */
 #endif /* _WIN64 */
 
-#if (defined(_WIN32) || defined(WIN32) || defined(__NT__) || defined(__WXWINCE__)) \
-    && !defined(__WXMOTIF__) && !defined(__WXGTK__) && !defined(__WXX11__)
-#    ifndef __WXMSW__
-#        define __WXMSW__
-#    endif
-#endif /* Win32 */
+#if defined(__WINDOWS__)
+    /* Select wxMSW under Windows if no other port is specified. */
+#   if !defined(__WXMSW__) && !defined(__WXMOTIF__) && !defined(__WXGTK__) && !defined(__WXX11__)
+#       define __WXMSW__
+#   endif
 
 
-#if defined(_WIN32)
 #   if !defined(__WINDOWS__)
 #       define __WINDOWS__
 #   endif
 
 #   if !defined(__WINDOWS__)
 #       define __WINDOWS__
 #   endif
 
+#   ifndef _WIN32
+#        define _WIN32
+#   endif
+
 #   ifndef WIN32
 #        define WIN32
 #   endif
 #   ifndef WIN32
 #        define WIN32
 #   endif
@@ -86,7 +93,7 @@
 #   ifndef __WIN32__
 #        define __WIN32__
 #   endif
 #   ifndef __WIN32__
 #        define __WIN32__
 #   endif
-#endif /* _WIN32 */
+#endif /* __WINDOWS__ */
 
 /* Don't use widget toolkit specific code in non-GUI code */
 #if defined(wxUSE_GUI) && !wxUSE_GUI
 
 /* Don't use widget toolkit specific code in non-GUI code */
 #if defined(wxUSE_GUI) && !wxUSE_GUI
 #   include "wx/android/config_android.h"
 #endif
 
 #   include "wx/android/config_android.h"
 #endif
 
+#include "wx/compiler.h"
+
 /*
    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
 /*
    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
+   could be already defined by configure but it must be included after defining
+   the compiler macros above as msvc/wx/setup.h relies on them under Windows.
  */
 #include "wx/setup.h"
 
  */
 #include "wx/setup.h"
 
 #   define wxCOMPILER_BROKEN_CONCAT_OPER
 #endif /* __BORLANDC__ */
 
 #   define wxCOMPILER_BROKEN_CONCAT_OPER
 #endif /* __BORLANDC__ */
 
-/*
-   Define Watcom-specific macros.
-*/
-#ifndef __WATCOMC__
-#   define wxWATCOM_VERSION(major,minor) 0
-#   define wxCHECK_WATCOM_VERSION(major,minor) 0
-#   define wxONLY_WATCOM_EARLIER_THAN(major,minor) 0
-#   define WX_WATCOM_ONLY_CODE( x )
-#else
-#   if __WATCOMC__ < 1200
-#       error "Only Open Watcom is supported in this release"
-#   endif
-
-#   define wxWATCOM_VERSION(major,minor) ( major * 100 + minor * 10 + 1100 )
-#   define wxCHECK_WATCOM_VERSION(major,minor) ( __WATCOMC__ >= wxWATCOM_VERSION(major,minor) )
-#   define wxONLY_WATCOM_EARLIER_THAN(major,minor) ( __WATCOMC__ < wxWATCOM_VERSION(major,minor) )
-#   define WX_WATCOM_ONLY_CODE( x )  x
-#endif
-
 /*
    OS: first of all, test for MS-DOS platform. We must do this before testing
        for Unix, because DJGPP compiler defines __unix__ under MS-DOS
 /*
    OS: first of all, test for MS-DOS platform. We must do this before testing
        for Unix, because DJGPP compiler defines __unix__ under MS-DOS
 #       endif
 #    endif  /* SGI */
 
 #       endif
 #    endif  /* SGI */
 
-#    if defined(__SUNPRO_CC)
-#       ifndef __SUNCC__
-#           define __SUNCC__ __SUNPRO_CC
-#       endif /* Sun CC */
-#    endif /* Sun CC */
-
 #    ifdef __EMX__
 #        define OS2EMX_PLAIN_CHAR
 #    endif
 #    ifdef __EMX__
 #        define OS2EMX_PLAIN_CHAR
 #    endif
 #    define wxSIZE_T_IS_UINT
 
 /*
 #    define wxSIZE_T_IS_UINT
 
 /*
-   OS: Otherwise it must be Windows
+   OS: Windows
  */
  */
-#else   /* Windows */
-#    ifndef __WINDOWS__
-#        define __WINDOWS__
-#    endif  /* Windows */
+#elif defined(__WINDOWS__)
 
     /* to be changed for Win64! */
 #    ifndef __WIN32__
 #        error "__WIN32__ should be defined for Win32 and Win64, Win16 is not supported"
 #    endif
 
 
     /* to be changed for Win64! */
 #    ifndef __WIN32__
 #        error "__WIN32__ should be defined for Win32 and Win64, Win16 is not supported"
 #    endif
 
-    /*
-       define another standard symbol for Microsoft Visual C++: the standard
-       one (_MSC_VER) is also defined by some other compilers.
-     */
-#    if defined(_MSC_VER)
-#        define __VISUALC__ _MSC_VER
-
-    /*
-       define special symbols for different VC version instead of writing tests
-       for magic numbers such as 1200, 1300 &c repeatedly
-     */
-#   if __VISUALC__ < 1100
-#       error "This Visual C++ version is too old and not supported any longer."
-#   elif __VISUALC__ < 1200
-#       define __VISUALC5__
-#   elif __VISUALC__ < 1300
-#       define __VISUALC6__
-#   elif __VISUALC__ < 1400
-#       define __VISUALC7__
-#   elif __VISUALC__ < 1500
-#       define __VISUALC8__
-#   elif __VISUALC__ < 1600
-#       define __VISUALC9__
-#   elif __VISUALC__ < 1700
-#       define __VISUALC10__
-#   elif __VISUALC__ < 1800
-#       define __VISUALC11__
-#   elif __VISUALC__ < 1900
-#       define __VISUALC12__
-#   else
-#       pragma message("Please update wx/platform.h to recognize this VC++ version")
-#   endif
-
-#    elif defined(__BCPLUSPLUS__) && !defined(__BORLANDC__)
-#        define __BORLANDC__
-#    elif defined(__WATCOMC__)
-#    elif defined(__SC__)
-#        define __SYMANTECC__
-#    endif  /* compiler */
-
     /* 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 */
 #    if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) && !defined(__WIN64__)
 #        define wxSIZE_T_IS_UINT
 #    endif
     /* 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 */
 #    if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) && !defined(__WIN64__)
 #        define wxSIZE_T_IS_UINT
 #    endif
+#else
+#   error "Unknown platform."
 #endif  /* OS */
 
 /*
 #endif  /* OS */
 
 /*
 #    define __X__
 #endif
 
 #    define __X__
 #endif
 
-#ifdef __SC__
-#    ifdef __DMC__
-#         define __DIGITALMARS__
-#    else
-#         define __SYMANTEC__
-#    endif
-#endif
-
-#ifdef __INTEL_COMPILER
-#   define __INTELC__
-#endif
-
 /*
    We get "Large Files (ILP32) not supported in strict ANSI mode." #error
    from HP-UX standard headers when compiling with g++ without this:
 /*
    We get "Large Files (ILP32) not supported in strict ANSI mode." #error
    from HP-UX standard headers when compiling with g++ without this:
 #   include "wx/msw/libraries.h"
 #endif
 
 #   include "wx/msw/libraries.h"
 #endif
 
-/*
-   This macro can be used to test the gcc version and can be used like this:
-
-#    if wxCHECK_GCC_VERSION(3, 1)
-        ... we have gcc 3.1 or later ...
-#    else
-        ... no gcc at all or gcc < 3.1 ...
-#    endif
-*/
-#if defined(__GNUC__) && defined(__GNUC_MINOR__)
-    #define wxCHECK_GCC_VERSION( major, minor ) \
-        ( ( __GNUC__ > (major) ) \
-            || ( __GNUC__ == (major) && __GNUC_MINOR__ >= (minor) ) )
-#else
-    #define wxCHECK_GCC_VERSION( major, minor ) 0
-#endif
-
 #if defined(__BORLANDC__) || (defined(__GNUC__) && __GNUC__ < 3)
 #define wxNEEDS_CHARPP
 #endif
 
 #if defined(__BORLANDC__) || (defined(__GNUC__) && __GNUC__ < 3)
 #define wxNEEDS_CHARPP
 #endif
 
-/*
-   This macro can be used to test the Visual C++ version.
-*/
-#ifndef __VISUALC__
-#   define wxVISUALC_VERSION(major) 0
-#   define wxCHECK_VISUALC_VERSION(major) 0
-#else
-#   define wxVISUALC_VERSION(major) ( (6 + major) * 100 )
-#   define wxCHECK_VISUALC_VERSION(major) ( __VISUALC__ >= wxVISUALC_VERSION(major) )
-#endif
-
-/*
-   This macro can be used to check that the version of mingw32 compiler is
-   at least maj.min
- */
 #if ( defined( __GNUWIN32__ ) || defined( __MINGW32__ ) || \
     ( defined( __CYGWIN__ ) && defined( __WINDOWS__ ) ) || \
       wxCHECK_WATCOM_VERSION(1,0) ) && \
 #if ( defined( __GNUWIN32__ ) || defined( __MINGW32__ ) || \
     ( defined( __CYGWIN__ ) && defined( __WINDOWS__ ) ) || \
       wxCHECK_WATCOM_VERSION(1,0) ) && \
 #else
 #    undef wxCHECK_W32API_VERSION
 #    define wxCHECK_W32API_VERSION(maj, min) (0)
 #else
 #    undef wxCHECK_W32API_VERSION
 #    define wxCHECK_W32API_VERSION(maj, min) (0)
-#    undef wxCHECK_MINGW32_VERSION
-#    define wxCHECK_MINGW32_VERSION(maj, min) (0)
 #endif
 
 #endif
 
-/**
-    This is similar to wxCHECK_GCC_VERSION but for Sun CC compiler.
- */
-#ifdef __SUNCC__
-    /*
-       __SUNCC__ is 0xVRP where V is major version, R release and P patch level
-     */
-    #define wxCHECK_SUNCC_VERSION(maj, min) (__SUNCC__ >= (((maj)<<8) | ((min)<<4)))
-#else
-    #define wxCHECK_SUNCC_VERSION(maj, min) (0)
-#endif
 
 /*
     Handle Darwin gcc universal compilation.  Don't do this in an Apple-
 
 /*
     Handle Darwin gcc universal compilation.  Don't do this in an Apple-