Chris@16: // Chris@16: // detail/push_options.hpp Chris@16: // ~~~~~~~~~~~~~~~~~~~~~~~ Chris@16: // Chris@101: // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com) Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: // Chris@16: Chris@16: // No header guard Chris@16: Chris@16: #if defined(__COMO__) Chris@16: Chris@16: // Comeau C++ Chris@16: Chris@16: #elif defined(__DMC__) Chris@16: Chris@16: // Digital Mars C++ Chris@16: Chris@16: #elif defined(__INTEL_COMPILER) || defined(__ICL) \ Chris@16: || defined(__ICC) || defined(__ECC) Chris@16: Chris@16: // Intel C++ Chris@16: Chris@101: # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) Chris@101: # pragma GCC visibility push (default) Chris@101: # endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) Chris@101: Chris@101: #elif defined(__clang__) Chris@101: Chris@101: // Clang Chris@101: Chris@101: # if defined(__OBJC__) Chris@101: # if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1) Chris@101: # if !defined(BOOST_ASIO_DISABLE_OBJC_WORKAROUND) Chris@101: # if !defined(Protocol) && !defined(id) Chris@101: # define Protocol cpp_Protocol Chris@101: # define id cpp_id Chris@101: # define BOOST_ASIO_OBJC_WORKAROUND Chris@101: # endif Chris@101: # endif Chris@101: # endif Chris@101: # endif Chris@101: Chris@101: # if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32) Chris@101: # pragma GCC visibility push (default) Chris@101: # endif // !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32) Chris@101: Chris@16: #elif defined(__GNUC__) Chris@16: Chris@16: // GNU C++ Chris@16: Chris@16: # if defined(__MINGW32__) || defined(__CYGWIN__) Chris@16: # pragma pack (push, 8) Chris@16: # endif Chris@16: Chris@16: # if defined(__OBJC__) Chris@16: # if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1) Chris@16: # if !defined(BOOST_ASIO_DISABLE_OBJC_WORKAROUND) Chris@16: # if !defined(Protocol) && !defined(id) Chris@16: # define Protocol cpp_Protocol Chris@16: # define id cpp_id Chris@16: # define BOOST_ASIO_OBJC_WORKAROUND Chris@16: # endif Chris@16: # endif Chris@16: # endif Chris@16: # endif Chris@16: Chris@101: # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) Chris@101: # pragma GCC visibility push (default) Chris@101: # endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) Chris@101: Chris@16: #elif defined(__KCC) Chris@16: Chris@16: // Kai C++ Chris@16: Chris@16: #elif defined(__sgi) Chris@16: Chris@16: // SGI MIPSpro C++ Chris@16: Chris@16: #elif defined(__DECCXX) Chris@16: Chris@16: // Compaq Tru64 Unix cxx Chris@16: Chris@16: #elif defined(__ghs) Chris@16: Chris@16: // Greenhills C++ Chris@16: Chris@16: #elif defined(__BORLANDC__) Chris@16: Chris@16: // Borland C++ Chris@16: Chris@16: # pragma option push -a8 -b -Ve- -Vx- -w-inl -vi- Chris@16: # pragma nopushoptwarn Chris@16: # pragma nopackwarning Chris@16: # if !defined(__MT__) Chris@16: # error Multithreaded RTL must be selected. Chris@16: # endif // !defined(__MT__) Chris@16: Chris@16: #elif defined(__MWERKS__) Chris@16: Chris@16: // Metrowerks CodeWarrior Chris@16: Chris@16: #elif defined(__SUNPRO_CC) Chris@16: Chris@16: // Sun Workshop Compiler C++ Chris@16: Chris@16: #elif defined(__HP_aCC) Chris@16: Chris@16: // HP aCC Chris@16: Chris@16: #elif defined(__MRC__) || defined(__SC__) Chris@16: Chris@16: // MPW MrCpp or SCpp Chris@16: Chris@16: #elif defined(__IBMCPP__) Chris@16: Chris@16: // IBM Visual Age Chris@16: Chris@16: #elif defined(_MSC_VER) Chris@16: Chris@16: // Microsoft Visual C++ Chris@16: // Chris@16: // Must remain the last #elif since some other vendors (Metrowerks, for example) Chris@16: // also #define _MSC_VER Chris@16: Chris@16: # pragma warning (disable:4103) Chris@16: # pragma warning (push) Chris@16: # pragma warning (disable:4127) Chris@16: # pragma warning (disable:4180) Chris@16: # pragma warning (disable:4244) Chris@16: # pragma warning (disable:4355) Chris@16: # pragma warning (disable:4510) Chris@16: # pragma warning (disable:4512) Chris@16: # pragma warning (disable:4610) Chris@16: # pragma warning (disable:4675) Chris@16: # if defined(_M_IX86) && defined(_Wp64) Chris@16: // The /Wp64 option is broken. If you want to check 64 bit portability, use a Chris@16: // 64 bit compiler! Chris@16: # pragma warning (disable:4311) Chris@16: # pragma warning (disable:4312) Chris@16: # endif // defined(_M_IX86) && defined(_Wp64) Chris@16: # pragma pack (push, 8) Chris@16: // Note that if the /Og optimisation flag is enabled with MSVC6, the compiler Chris@16: // has a tendency to incorrectly optimise away some calls to member template Chris@16: // functions, even though those functions contain code that should not be Chris@16: // optimised away! Therefore we will always disable this optimisation option Chris@16: // for the MSVC6 compiler. Chris@16: # if (_MSC_VER < 1300) Chris@16: # pragma optimize ("g", off) Chris@16: # endif Chris@16: # if !defined(_MT) Chris@16: # error Multithreaded RTL must be selected. Chris@16: # endif // !defined(_MT) Chris@16: Chris@16: # if defined(__cplusplus_cli) || defined(__cplusplus_winrt) Chris@16: # if !defined(BOOST_ASIO_DISABLE_CLR_WORKAROUND) Chris@16: # if !defined(generic) Chris@16: # define generic cpp_generic Chris@16: # define BOOST_ASIO_CLR_WORKAROUND Chris@16: # endif Chris@16: # endif Chris@16: # endif Chris@16: Chris@16: #endif