229 lines
5.4 KiB
C++
229 lines
5.4 KiB
C++
//
|
|
// detail/push_options.hpp
|
|
// ~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
//
|
|
|
|
// No header guard
|
|
|
|
#if defined(__COMO__)
|
|
|
|
// Comeau C++
|
|
|
|
#elif defined(__DMC__)
|
|
|
|
// Digital Mars C++
|
|
|
|
#elif defined(__INTEL_COMPILER) || defined(__ICL) \
|
|
|| defined(__ICC) || defined(__ECC)
|
|
|
|
// Intel C++
|
|
|
|
# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
|
|
# if !defined(ASIO_DISABLE_VISIBILITY)
|
|
# pragma GCC visibility push (default)
|
|
# endif // !defined(ASIO_DISABLE_VISIBILITY)
|
|
# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
|
|
|
|
# pragma push_macro ("emit")
|
|
# undef emit
|
|
|
|
# pragma push_macro ("signal")
|
|
# undef signal
|
|
|
|
# pragma push_macro ("slot")
|
|
# undef slot
|
|
|
|
#elif defined(__clang__)
|
|
|
|
// Clang
|
|
|
|
# if defined(__OBJC__)
|
|
# if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
|
|
# if !defined(ASIO_DISABLE_OBJC_WORKAROUND)
|
|
# if !defined(Protocol) && !defined(id)
|
|
# define Protocol cpp_Protocol
|
|
# define id cpp_id
|
|
# define ASIO_OBJC_WORKAROUND
|
|
# endif
|
|
# endif
|
|
# endif
|
|
# endif
|
|
|
|
# if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
|
|
# if !defined(ASIO_DISABLE_VISIBILITY)
|
|
# pragma GCC visibility push (default)
|
|
# endif // !defined(ASIO_DISABLE_VISIBILITY)
|
|
# endif // !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
|
|
|
|
# pragma GCC diagnostic push
|
|
# pragma GCC diagnostic ignored "-Wnon-virtual-dtor"
|
|
# if (__clang_major__ >= 6)
|
|
# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
|
|
# endif // (__clang_major__ >= 6)
|
|
|
|
# pragma push_macro ("emit")
|
|
# undef emit
|
|
|
|
# pragma push_macro ("signal")
|
|
# undef signal
|
|
|
|
# pragma push_macro ("slot")
|
|
# undef slot
|
|
|
|
#elif defined(__GNUC__)
|
|
|
|
// GNU C++
|
|
|
|
# if defined(__MINGW32__) || defined(__CYGWIN__)
|
|
# pragma pack (push, 8)
|
|
# endif
|
|
|
|
# if defined(__OBJC__)
|
|
# if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
|
|
# if !defined(ASIO_DISABLE_OBJC_WORKAROUND)
|
|
# if !defined(Protocol) && !defined(id)
|
|
# define Protocol cpp_Protocol
|
|
# define id cpp_id
|
|
# define ASIO_OBJC_WORKAROUND
|
|
# endif
|
|
# endif
|
|
# endif
|
|
# endif
|
|
|
|
# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
|
|
# if !defined(ASIO_DISABLE_VISIBILITY)
|
|
# pragma GCC visibility push (default)
|
|
# endif // !defined(ASIO_DISABLE_VISIBILITY)
|
|
# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
|
|
|
|
# pragma GCC diagnostic push
|
|
# pragma GCC diagnostic ignored "-Wnon-virtual-dtor"
|
|
# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) || (__GNUC__ > 4)
|
|
# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
|
|
# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) || (__GNUC__ > 4)
|
|
# if (__GNUC__ >= 7)
|
|
# pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
|
|
# endif // (__GNUC__ >= 7)
|
|
|
|
# pragma push_macro ("emit")
|
|
# undef emit
|
|
|
|
# pragma push_macro ("signal")
|
|
# undef signal
|
|
|
|
# pragma push_macro ("slot")
|
|
# undef slot
|
|
|
|
#elif defined(__KCC)
|
|
|
|
// Kai C++
|
|
|
|
#elif defined(__sgi)
|
|
|
|
// SGI MIPSpro C++
|
|
|
|
#elif defined(__DECCXX)
|
|
|
|
// Compaq Tru64 Unix cxx
|
|
|
|
#elif defined(__ghs)
|
|
|
|
// Greenhills C++
|
|
|
|
#elif defined(__BORLANDC__) && !defined(__clang__)
|
|
|
|
// Borland C++
|
|
|
|
# pragma option push -a8 -b -Ve- -Vx- -w-inl -vi-
|
|
# pragma nopushoptwarn
|
|
# pragma nopackwarning
|
|
# if !defined(__MT__)
|
|
# error Multithreaded RTL must be selected.
|
|
# endif // !defined(__MT__)
|
|
|
|
#elif defined(__MWERKS__)
|
|
|
|
// Metrowerks CodeWarrior
|
|
|
|
#elif defined(__SUNPRO_CC)
|
|
|
|
// Sun Workshop Compiler C++
|
|
|
|
#elif defined(__HP_aCC)
|
|
|
|
// HP aCC
|
|
|
|
#elif defined(__MRC__) || defined(__SC__)
|
|
|
|
// MPW MrCpp or SCpp
|
|
|
|
#elif defined(__IBMCPP__)
|
|
|
|
// IBM Visual Age
|
|
|
|
#elif defined(_MSC_VER)
|
|
|
|
// Microsoft Visual C++
|
|
//
|
|
// Must remain the last #elif since some other vendors (Metrowerks, for example)
|
|
// also #define _MSC_VER
|
|
# pragma warning (disable:4103)
|
|
# pragma warning (push)
|
|
# pragma warning (disable:4619) // suppress 'there is no warning number XXXX'
|
|
# pragma warning (disable:4127)
|
|
# pragma warning (disable:4180)
|
|
# pragma warning (disable:4244)
|
|
# pragma warning (disable:4265)
|
|
# pragma warning (disable:4355)
|
|
# pragma warning (disable:4510)
|
|
# pragma warning (disable:4512)
|
|
# pragma warning (disable:4610)
|
|
# pragma warning (disable:4675)
|
|
# if (_MSC_VER < 1600)
|
|
// Visual Studio 2008 generates spurious warnings about unused parameters.
|
|
# pragma warning (disable:4100)
|
|
# endif // (_MSC_VER < 1600)
|
|
# if defined(_M_IX86) && defined(_Wp64)
|
|
// The /Wp64 option is broken. If you want to check 64 bit portability, use a
|
|
// 64 bit compiler!
|
|
# pragma warning (disable:4311)
|
|
# pragma warning (disable:4312)
|
|
# endif // defined(_M_IX86) && defined(_Wp64)
|
|
# pragma pack (push, 8)
|
|
// Note that if the /Og optimisation flag is enabled with MSVC6, the compiler
|
|
// has a tendency to incorrectly optimise away some calls to member template
|
|
// functions, even though those functions contain code that should not be
|
|
// optimised away! Therefore we will always disable this optimisation option
|
|
// for the MSVC6 compiler.
|
|
# if (_MSC_VER < 1300)
|
|
# pragma optimize ("g", off)
|
|
# endif
|
|
# if !defined(_MT)
|
|
# error Multithreaded RTL must be selected.
|
|
# endif // !defined(_MT)
|
|
|
|
# if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
|
|
# if !defined(ASIO_DISABLE_CLR_WORKAROUND)
|
|
# if !defined(generic)
|
|
# define generic cpp_generic
|
|
# define ASIO_CLR_WORKAROUND
|
|
# endif
|
|
# endif
|
|
# endif
|
|
|
|
# pragma push_macro ("emit")
|
|
# undef emit
|
|
|
|
# pragma push_macro ("signal")
|
|
# undef signal
|
|
|
|
# pragma push_macro ("slot")
|
|
# undef slot
|
|
|
|
#endif
|