Chris@16
|
1 //
|
Chris@16
|
2 // detail/push_options.hpp
|
Chris@16
|
3 // ~~~~~~~~~~~~~~~~~~~~~~~
|
Chris@16
|
4 //
|
Chris@16
|
5 // Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
Chris@16
|
6 //
|
Chris@16
|
7 // Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Chris@16
|
8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
9 //
|
Chris@16
|
10
|
Chris@16
|
11 // No header guard
|
Chris@16
|
12
|
Chris@16
|
13 #if defined(__COMO__)
|
Chris@16
|
14
|
Chris@16
|
15 // Comeau C++
|
Chris@16
|
16
|
Chris@16
|
17 #elif defined(__DMC__)
|
Chris@16
|
18
|
Chris@16
|
19 // Digital Mars C++
|
Chris@16
|
20
|
Chris@16
|
21 #elif defined(__INTEL_COMPILER) || defined(__ICL) \
|
Chris@16
|
22 || defined(__ICC) || defined(__ECC)
|
Chris@16
|
23
|
Chris@16
|
24 // Intel C++
|
Chris@16
|
25
|
Chris@16
|
26 #elif defined(__GNUC__)
|
Chris@16
|
27
|
Chris@16
|
28 // GNU C++
|
Chris@16
|
29
|
Chris@16
|
30 # if defined(__MINGW32__) || defined(__CYGWIN__)
|
Chris@16
|
31 # pragma pack (push, 8)
|
Chris@16
|
32 # endif
|
Chris@16
|
33
|
Chris@16
|
34 # if defined(__OBJC__)
|
Chris@16
|
35 # if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
|
Chris@16
|
36 # if !defined(BOOST_ASIO_DISABLE_OBJC_WORKAROUND)
|
Chris@16
|
37 # if !defined(Protocol) && !defined(id)
|
Chris@16
|
38 # define Protocol cpp_Protocol
|
Chris@16
|
39 # define id cpp_id
|
Chris@16
|
40 # define BOOST_ASIO_OBJC_WORKAROUND
|
Chris@16
|
41 # endif
|
Chris@16
|
42 # endif
|
Chris@16
|
43 # endif
|
Chris@16
|
44 # endif
|
Chris@16
|
45
|
Chris@16
|
46 #elif defined(__KCC)
|
Chris@16
|
47
|
Chris@16
|
48 // Kai C++
|
Chris@16
|
49
|
Chris@16
|
50 #elif defined(__sgi)
|
Chris@16
|
51
|
Chris@16
|
52 // SGI MIPSpro C++
|
Chris@16
|
53
|
Chris@16
|
54 #elif defined(__DECCXX)
|
Chris@16
|
55
|
Chris@16
|
56 // Compaq Tru64 Unix cxx
|
Chris@16
|
57
|
Chris@16
|
58 #elif defined(__ghs)
|
Chris@16
|
59
|
Chris@16
|
60 // Greenhills C++
|
Chris@16
|
61
|
Chris@16
|
62 #elif defined(__BORLANDC__)
|
Chris@16
|
63
|
Chris@16
|
64 // Borland C++
|
Chris@16
|
65
|
Chris@16
|
66 # pragma option push -a8 -b -Ve- -Vx- -w-inl -vi-
|
Chris@16
|
67 # pragma nopushoptwarn
|
Chris@16
|
68 # pragma nopackwarning
|
Chris@16
|
69 # if !defined(__MT__)
|
Chris@16
|
70 # error Multithreaded RTL must be selected.
|
Chris@16
|
71 # endif // !defined(__MT__)
|
Chris@16
|
72
|
Chris@16
|
73 #elif defined(__MWERKS__)
|
Chris@16
|
74
|
Chris@16
|
75 // Metrowerks CodeWarrior
|
Chris@16
|
76
|
Chris@16
|
77 #elif defined(__SUNPRO_CC)
|
Chris@16
|
78
|
Chris@16
|
79 // Sun Workshop Compiler C++
|
Chris@16
|
80
|
Chris@16
|
81 #elif defined(__HP_aCC)
|
Chris@16
|
82
|
Chris@16
|
83 // HP aCC
|
Chris@16
|
84
|
Chris@16
|
85 #elif defined(__MRC__) || defined(__SC__)
|
Chris@16
|
86
|
Chris@16
|
87 // MPW MrCpp or SCpp
|
Chris@16
|
88
|
Chris@16
|
89 #elif defined(__IBMCPP__)
|
Chris@16
|
90
|
Chris@16
|
91 // IBM Visual Age
|
Chris@16
|
92
|
Chris@16
|
93 #elif defined(_MSC_VER)
|
Chris@16
|
94
|
Chris@16
|
95 // Microsoft Visual C++
|
Chris@16
|
96 //
|
Chris@16
|
97 // Must remain the last #elif since some other vendors (Metrowerks, for example)
|
Chris@16
|
98 // also #define _MSC_VER
|
Chris@16
|
99
|
Chris@16
|
100 # pragma warning (disable:4103)
|
Chris@16
|
101 # pragma warning (push)
|
Chris@16
|
102 # pragma warning (disable:4127)
|
Chris@16
|
103 # pragma warning (disable:4180)
|
Chris@16
|
104 # pragma warning (disable:4244)
|
Chris@16
|
105 # pragma warning (disable:4355)
|
Chris@16
|
106 # pragma warning (disable:4510)
|
Chris@16
|
107 # pragma warning (disable:4512)
|
Chris@16
|
108 # pragma warning (disable:4610)
|
Chris@16
|
109 # pragma warning (disable:4675)
|
Chris@16
|
110 # if defined(_M_IX86) && defined(_Wp64)
|
Chris@16
|
111 // The /Wp64 option is broken. If you want to check 64 bit portability, use a
|
Chris@16
|
112 // 64 bit compiler!
|
Chris@16
|
113 # pragma warning (disable:4311)
|
Chris@16
|
114 # pragma warning (disable:4312)
|
Chris@16
|
115 # endif // defined(_M_IX86) && defined(_Wp64)
|
Chris@16
|
116 # pragma pack (push, 8)
|
Chris@16
|
117 // Note that if the /Og optimisation flag is enabled with MSVC6, the compiler
|
Chris@16
|
118 // has a tendency to incorrectly optimise away some calls to member template
|
Chris@16
|
119 // functions, even though those functions contain code that should not be
|
Chris@16
|
120 // optimised away! Therefore we will always disable this optimisation option
|
Chris@16
|
121 // for the MSVC6 compiler.
|
Chris@16
|
122 # if (_MSC_VER < 1300)
|
Chris@16
|
123 # pragma optimize ("g", off)
|
Chris@16
|
124 # endif
|
Chris@16
|
125 # if !defined(_MT)
|
Chris@16
|
126 # error Multithreaded RTL must be selected.
|
Chris@16
|
127 # endif // !defined(_MT)
|
Chris@16
|
128
|
Chris@16
|
129 # if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
|
Chris@16
|
130 # if !defined(BOOST_ASIO_DISABLE_CLR_WORKAROUND)
|
Chris@16
|
131 # if !defined(generic)
|
Chris@16
|
132 # define generic cpp_generic
|
Chris@16
|
133 # define BOOST_ASIO_CLR_WORKAROUND
|
Chris@16
|
134 # endif
|
Chris@16
|
135 # endif
|
Chris@16
|
136 # endif
|
Chris@16
|
137
|
Chris@16
|
138 #endif
|