]> git.saurik.com Git - wxWidgets.git/commitdiff
Define __MINGW64_TOOLCHAIN__ and __MINGW32_TOOLCHAIN__ symbols.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 30 Sep 2013 23:49:02 +0000 (23:49 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 30 Sep 2013 23:49:02 +0000 (23:49 +0000)
__MINGW64_TOOLCHAIN__ macro is more readable and shorter than the standard
predefined __MINGW64_VERSION_MAJOR and __MINGW32_TOOLCHAIN__ is defined for
the symmetry and also because it will make many tests simpler as we often
need to test not so much for MinGW-w64 for its own sake but rather to disable
the workarounds for MinGW32 when using it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74885 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/doxygen/mainpages/const_cpp.h
include/wx/compiler.h
include/wx/msw/missing.h

index af2b12d4338f1c49d1e5582b295face51336ce1f..d995747c5d48ad49d769dd3638889354f6de4308 100644 (file)
@@ -147,7 +147,10 @@ compiler used.
 @itemdef{__EVC4__, Embedded Visual C++ 4 (can be only used for building wxWinCE)}
 @itemdef{__GNUG__, Gnu C++ on any platform, see also wxCHECK_GCC_VERSION}
 @itemdef{__GNUWIN32__, Gnu-Win32 compiler, see also wxCHECK_W32API_VERSION}
-@itemdef{__MINGW32__, MinGW}
+@itemdef{__MINGW32__, Either MinGW32 or MinGW-w64 in either 32 or 64 bits}
+@itemdef{__MINGW32_TOOLCHAIN, MinGW32 only (32 bits only right now)}
+@itemdef{__MINGW64__, MinGW-w64 in 64 bit builds}
+@itemdef{__MINGW64_TOOLCHAIN__, MinGW-w64 in either 32 or 64 bit builds}
 @itemdef{__SUNCC__, Sun CC, see also wxCHECK_SUNCC_VERSION}
 @itemdef{__SYMANTECC__, Symantec C++}
 @itemdef{__VISAGECPP__, IBM Visual Age (OS/2)}
index e633ca158e0476f150326679f5bebf3115b99062..a25eddc04cf51ff8a2ba06e5697e6cee51d11049 100644 (file)
     #define wxCHECK_MINGW32_VERSION( major, minor ) \
  ( ( ( __MINGW32_MAJOR_VERSION > (major) ) \
       || ( __MINGW32_MAJOR_VERSION == (major) && __MINGW32_MINOR_VERSION >= (minor) ) ) )
+
+/*
+    MinGW-w64 project provides compilers for both Win32 and Win64 but only
+    defines the same __MINGW32__ symbol for the former as MinGW32 toolchain
+    which is quite different (notably doesn't provide many SDK headers that
+    MinGW-w64 does include). So we define a separate symbol which, unlike the
+    predefined __MINGW64__, can be used to detect this toolchain in both 32 and
+    64 bit builds.
+
+    And define __MINGW32_TOOLCHAIN__ for consistency and also because it's
+    convenient as we often want to have some workarounds only for the (old)
+    MinGW32 but not (newer) MinGW-w64, which still predefines __MINGW32__.
+ */
+#   ifdef __MINGW64_VERSION_MAJOR
+#       ifndef __MINGW64_TOOLCHAIN__
+#           define __MINGW64_TOOLCHAIN__
+#       endif
+#   else
+#       ifndef __MINGW32_TOOLCHAIN__
+#           define __MINGW32_TOOLCHAIN__
+#       endif
+#   endif
 #else
     #define wxCHECK_MINGW32_VERSION( major, minor ) (0)
 #endif
index d2782ef5d57dc3493045369270840c2dc276d706..e7522ee753541e99b9accc176ada965eca3f6318 100644 (file)
@@ -664,7 +664,7 @@ typedef struct
 #include <_mingw.h>
 #endif
 
-#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+#ifdef __MINGW32_TOOLCHAIN__
 typedef enum CommandStateChangeConstants {
     CSC_UPDATECOMMANDS = (int) 0xFFFFFFFF,
     CSC_NAVIGATEFORWARD = 0x1,