Chris@16
|
1 //
|
Chris@16
|
2 // detail/push_options.hpp
|
Chris@16
|
3 // ~~~~~~~~~~~~~~~~~~~~~~~
|
Chris@16
|
4 //
|
Chris@101
|
5 // Copyright (c) 2003-2015 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@101
|
26 # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
|
Chris@101
|
27 # pragma GCC visibility push (default)
|
Chris@101
|
28 # endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
|
Chris@101
|
29
|
Chris@101
|
30 #elif defined(__clang__)
|
Chris@101
|
31
|
Chris@101
|
32 // Clang
|
Chris@101
|
33
|
Chris@101
|
34 # if defined(__OBJC__)
|
Chris@101
|
35 # if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
|
Chris@101
|
36 # if !defined(BOOST_ASIO_DISABLE_OBJC_WORKAROUND)
|
Chris@101
|
37 # if !defined(Protocol) && !defined(id)
|
Chris@101
|
38 # define Protocol cpp_Protocol
|
Chris@101
|
39 # define id cpp_id
|
Chris@101
|
40 # define BOOST_ASIO_OBJC_WORKAROUND
|
Chris@101
|
41 # endif
|
Chris@101
|
42 # endif
|
Chris@101
|
43 # endif
|
Chris@101
|
44 # endif
|
Chris@101
|
45
|
Chris@101
|
46 # if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
|
Chris@101
|
47 # pragma GCC visibility push (default)
|
Chris@101
|
48 # endif // !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
|
Chris@101
|
49
|
Chris@16
|
50 #elif defined(__GNUC__)
|
Chris@16
|
51
|
Chris@16
|
52 // GNU C++
|
Chris@16
|
53
|
Chris@16
|
54 # if defined(__MINGW32__) || defined(__CYGWIN__)
|
Chris@16
|
55 # pragma pack (push, 8)
|
Chris@16
|
56 # endif
|
Chris@16
|
57
|
Chris@16
|
58 # if defined(__OBJC__)
|
Chris@16
|
59 # if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
|
Chris@16
|
60 # if !defined(BOOST_ASIO_DISABLE_OBJC_WORKAROUND)
|
Chris@16
|
61 # if !defined(Protocol) && !defined(id)
|
Chris@16
|
62 # define Protocol cpp_Protocol
|
Chris@16
|
63 # define id cpp_id
|
Chris@16
|
64 # define BOOST_ASIO_OBJC_WORKAROUND
|
Chris@16
|
65 # endif
|
Chris@16
|
66 # endif
|
Chris@16
|
67 # endif
|
Chris@16
|
68 # endif
|
Chris@16
|
69
|
Chris@101
|
70 # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
|
Chris@101
|
71 # pragma GCC visibility push (default)
|
Chris@101
|
72 # endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
|
Chris@101
|
73
|
Chris@16
|
74 #elif defined(__KCC)
|
Chris@16
|
75
|
Chris@16
|
76 // Kai C++
|
Chris@16
|
77
|
Chris@16
|
78 #elif defined(__sgi)
|
Chris@16
|
79
|
Chris@16
|
80 // SGI MIPSpro C++
|
Chris@16
|
81
|
Chris@16
|
82 #elif defined(__DECCXX)
|
Chris@16
|
83
|
Chris@16
|
84 // Compaq Tru64 Unix cxx
|
Chris@16
|
85
|
Chris@16
|
86 #elif defined(__ghs)
|
Chris@16
|
87
|
Chris@16
|
88 // Greenhills C++
|
Chris@16
|
89
|
Chris@16
|
90 #elif defined(__BORLANDC__)
|
Chris@16
|
91
|
Chris@16
|
92 // Borland C++
|
Chris@16
|
93
|
Chris@16
|
94 # pragma option push -a8 -b -Ve- -Vx- -w-inl -vi-
|
Chris@16
|
95 # pragma nopushoptwarn
|
Chris@16
|
96 # pragma nopackwarning
|
Chris@16
|
97 # if !defined(__MT__)
|
Chris@16
|
98 # error Multithreaded RTL must be selected.
|
Chris@16
|
99 # endif // !defined(__MT__)
|
Chris@16
|
100
|
Chris@16
|
101 #elif defined(__MWERKS__)
|
Chris@16
|
102
|
Chris@16
|
103 // Metrowerks CodeWarrior
|
Chris@16
|
104
|
Chris@16
|
105 #elif defined(__SUNPRO_CC)
|
Chris@16
|
106
|
Chris@16
|
107 // Sun Workshop Compiler C++
|
Chris@16
|
108
|
Chris@16
|
109 #elif defined(__HP_aCC)
|
Chris@16
|
110
|
Chris@16
|
111 // HP aCC
|
Chris@16
|
112
|
Chris@16
|
113 #elif defined(__MRC__) || defined(__SC__)
|
Chris@16
|
114
|
Chris@16
|
115 // MPW MrCpp or SCpp
|
Chris@16
|
116
|
Chris@16
|
117 #elif defined(__IBMCPP__)
|
Chris@16
|
118
|
Chris@16
|
119 // IBM Visual Age
|
Chris@16
|
120
|
Chris@16
|
121 #elif defined(_MSC_VER)
|
Chris@16
|
122
|
Chris@16
|
123 // Microsoft Visual C++
|
Chris@16
|
124 //
|
Chris@16
|
125 // Must remain the last #elif since some other vendors (Metrowerks, for example)
|
Chris@16
|
126 // also #define _MSC_VER
|
Chris@16
|
127
|
Chris@16
|
128 # pragma warning (disable:4103)
|
Chris@16
|
129 # pragma warning (push)
|
Chris@16
|
130 # pragma warning (disable:4127)
|
Chris@16
|
131 # pragma warning (disable:4180)
|
Chris@16
|
132 # pragma warning (disable:4244)
|
Chris@16
|
133 # pragma warning (disable:4355)
|
Chris@16
|
134 # pragma warning (disable:4510)
|
Chris@16
|
135 # pragma warning (disable:4512)
|
Chris@16
|
136 # pragma warning (disable:4610)
|
Chris@16
|
137 # pragma warning (disable:4675)
|
Chris@16
|
138 # if defined(_M_IX86) && defined(_Wp64)
|
Chris@16
|
139 // The /Wp64 option is broken. If you want to check 64 bit portability, use a
|
Chris@16
|
140 // 64 bit compiler!
|
Chris@16
|
141 # pragma warning (disable:4311)
|
Chris@16
|
142 # pragma warning (disable:4312)
|
Chris@16
|
143 # endif // defined(_M_IX86) && defined(_Wp64)
|
Chris@16
|
144 # pragma pack (push, 8)
|
Chris@16
|
145 // Note that if the /Og optimisation flag is enabled with MSVC6, the compiler
|
Chris@16
|
146 // has a tendency to incorrectly optimise away some calls to member template
|
Chris@16
|
147 // functions, even though those functions contain code that should not be
|
Chris@16
|
148 // optimised away! Therefore we will always disable this optimisation option
|
Chris@16
|
149 // for the MSVC6 compiler.
|
Chris@16
|
150 # if (_MSC_VER < 1300)
|
Chris@16
|
151 # pragma optimize ("g", off)
|
Chris@16
|
152 # endif
|
Chris@16
|
153 # if !defined(_MT)
|
Chris@16
|
154 # error Multithreaded RTL must be selected.
|
Chris@16
|
155 # endif // !defined(_MT)
|
Chris@16
|
156
|
Chris@16
|
157 # if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
|
Chris@16
|
158 # if !defined(BOOST_ASIO_DISABLE_CLR_WORKAROUND)
|
Chris@16
|
159 # if !defined(generic)
|
Chris@16
|
160 # define generic cpp_generic
|
Chris@16
|
161 # define BOOST_ASIO_CLR_WORKAROUND
|
Chris@16
|
162 # endif
|
Chris@16
|
163 # endif
|
Chris@16
|
164 # endif
|
Chris@16
|
165
|
Chris@16
|
166 #endif
|