X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/00ba414f7f79f8842d25c8b47cb091e20487b819..438959cca892a7651634cc3a7aad4819ac49b23c:/include/wx/beforestd.h diff --git a/include/wx/beforestd.h b/include/wx/beforestd.h index 4c79e2660e..d4b8d940ce 100644 --- a/include/wx/beforestd.h +++ b/include/wx/beforestd.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: include/wx/beforestd.h +// Name: wx/beforestd.h // Purpose: #include before STL headers // Author: Vadim Zeitlin // Modified by: @@ -20,8 +20,23 @@ it can be included several times. */ -// VC 7.x isn't as bad as VC6 and doesn't give these warnings -#if defined(__VISUALC__) && __VISUALC__ <= 1200 +// VC 7.x isn't as bad as VC6 and doesn't give these warnings but eVC (which +// defines _MSC_VER as 1201) does need to be included as it's VC6-like +#if defined(__VISUALC__) && __VISUALC__ <= 1201 + // these warning have to be disabled and not just temporarily disabled + // because they will be given at the end of the compilation of the + // current source and there is absolutely nothing we can do about them so + // disable them before warning(push) below + + // 'foo': unreferenced inline function has been removed + #pragma warning(disable:4514) + + // 'function' : function not inlined + #pragma warning(disable:4710) + + // 'id': identifier was truncated to 'num' characters in the debug info + #pragma warning(disable:4786) + // MSVC 5 does not have this #if __VISUALC__ > 1100 // we have to disable (and reenable in afterstd.h) this one because, @@ -36,6 +51,9 @@ // 'expression' : signed/unsigned mismatch #pragma warning(disable:4018) + // 'identifier' : unreferenced formal parameter + #pragma warning(disable:4100) + // 'conversion' : conversion from 'type1' to 'type2', // possible loss of data #pragma warning(disable:4244) @@ -44,18 +62,15 @@ // 'identifier' use the following syntax #pragma warning(disable:4663) #endif - - // these warning have to be disabled and not just temporarily disabled - // because they will be given at the end of the compilation of the - // current source and there is absolutely nothing we can do about them - - // 'foo': unreferenced inline function has been removed - #pragma warning(disable:4514) - - // 'function' : function not inlined - #pragma warning(disable:4710) - - // 'id': identifier was truncated to 'num' characters in the debug info - #pragma warning(disable:4786) #endif // VC++ < 7 +/** + GCC's visibility support is broken for libstdc++ in some older versions + (namely Debian/Ubuntu's GCC 4.1, see + https://bugs.launchpad.net/ubuntu/+source/gcc-4.1/+bug/109262). We fix it + here by mimicking newer versions' behaviour of using default visibility + for libstdc++ code. + */ +#if defined(HAVE_VISIBILITY) && defined(HAVE_BROKEN_LIBSTDCXX_VISIBILITY) + #pragma GCC visibility push(default) +#endif