Revert "Ugly, not-to-be-pushed sucking in of all of Boost to get windows to work."
[dyninst.git] / external / boost / config / auto_link.hpp
1 //  (C) Copyright John Maddock 2003.\r
2 //  Use, modification and distribution are subject to the\r
3 //  Boost Software License, Version 1.0. (See accompanying file\r
4 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\r
5 \r
6  /*\r
7   *   LOCATION:    see http://www.boost.org for most recent version.\r
8   *   FILE         auto_link.hpp\r
9   *   VERSION      see <boost/version.hpp>\r
10   *   DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers.\r
11   */\r
12 \r
13 /*************************************************************************\r
14 \r
15 USAGE:\r
16 ~~~~~~\r
17 \r
18 Before including this header you must define one or more of define the following macros:\r
19 \r
20 BOOST_LIB_NAME:           Required: A string containing the basename of the library,\r
21                           for example boost_regex.\r
22 BOOST_LIB_TOOLSET:        Optional: the base name of the toolset.\r
23 BOOST_DYN_LINK:           Optional: when set link to dll rather than static library.\r
24 BOOST_LIB_DIAGNOSTIC:     Optional: when set the header will print out the name\r
25                           of the library selected (useful for debugging).\r
26 BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,\r
27                           rather than a mangled-name version.\r
28 \r
29 These macros will be undef'ed at the end of the header, further this header\r
30 has no include guards - so be sure to include it only once from your library!\r
31 \r
32 Algorithm:\r
33 ~~~~~~~~~~\r
34 \r
35 Libraries for Borland and Microsoft compilers are automatically\r
36 selected here, the name of the lib is selected according to the following\r
37 formula:\r
38 \r
39 BOOST_LIB_PREFIX\r
40    + BOOST_LIB_NAME\r
41    + "_"\r
42    + BOOST_LIB_TOOLSET\r
43    + BOOST_LIB_THREAD_OPT\r
44    + BOOST_LIB_RT_OPT\r
45    "-"\r
46    + BOOST_LIB_VERSION\r
47 \r
48 These are defined as:\r
49 \r
50 BOOST_LIB_PREFIX:     "lib" for static libraries otherwise "".\r
51 \r
52 BOOST_LIB_NAME:       The base name of the lib ( for example boost_regex).\r
53 \r
54 BOOST_LIB_TOOLSET:    The compiler toolset name (vc6, vc7, bcb5 etc).\r
55 \r
56 BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing.\r
57 \r
58 BOOST_LIB_RT_OPT:     A suffix that indicates the runtime library used,\r
59                       contains one or more of the following letters after\r
60                       a hiphen:\r
61 \r
62                       s      static runtime (dynamic if not present).\r
63                       d      debug build (release if not present).\r
64                       g      debug/diagnostic runtime (release if not present).\r
65                       p      STLPort Build.\r
66 \r
67 BOOST_LIB_VERSION:    The Boost version, in the form x_y, for Boost version x.y.\r
68 \r
69 \r
70 ***************************************************************************/\r
71 \r
72 #ifdef __cplusplus\r
73 #  ifndef BOOST_CONFIG_HPP\r
74 #     include <boost/config.hpp>\r
75 #  endif\r
76 #elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)\r
77 //\r
78 // C language compatability (no, honestly)\r
79 //\r
80 #  define BOOST_MSVC _MSC_VER\r
81 #  define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)\r
82 #  define BOOST_DO_STRINGIZE(X) #X\r
83 #endif\r
84 //\r
85 // Only include what follows for known and supported compilers:\r
86 //\r
87 #if defined(BOOST_MSVC) \\r
88     || defined(__BORLANDC__) \\r
89     || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \\r
90     || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200))\r
91 \r
92 #ifndef BOOST_VERSION_HPP\r
93 #  include <boost/version.hpp>\r
94 #endif\r
95 \r
96 #ifndef BOOST_LIB_NAME\r
97 #  error "Macro BOOST_LIB_NAME not set (internal error)"\r
98 #endif\r
99 \r
100 //\r
101 // error check:\r
102 //\r
103 #if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG)\r
104 #  pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors")\r
105 #  pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes")\r
106 #  error "Incompatible build options"\r
107 #endif\r
108 //\r
109 // select toolset if not defined already:\r
110 //\r
111 #ifndef BOOST_LIB_TOOLSET\r
112 // Note: no compilers before 1200 are supported\r
113 #if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)\r
114 \r
115 #  ifdef UNDER_CE\r
116      // vc6:\r
117 #    define BOOST_LIB_TOOLSET "evc4"\r
118 #  else\r
119      // vc6:\r
120 #    define BOOST_LIB_TOOLSET "vc6"\r
121 #  endif\r
122 \r
123 #elif defined(BOOST_MSVC) && (BOOST_MSVC == 1300)\r
124 \r
125    // vc7:\r
126 #  define BOOST_LIB_TOOLSET "vc7"\r
127 \r
128 #elif defined(BOOST_MSVC) && (BOOST_MSVC == 1310)\r
129 \r
130    // vc71:\r
131 #  define BOOST_LIB_TOOLSET "vc71"\r
132 \r
133 #elif defined(BOOST_MSVC) && (BOOST_MSVC == 1400)\r
134 \r
135    // vc80:\r
136 #  define BOOST_LIB_TOOLSET "vc80"\r
137 \r
138 #elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1500)\r
139 \r
140    // vc90:\r
141 #  define BOOST_LIB_TOOLSET "vc90"\r
142 \r
143 #elif defined(__BORLANDC__)\r
144 \r
145    // CBuilder 6:\r
146 #  define BOOST_LIB_TOOLSET "bcb"\r
147 \r
148 #elif defined(__ICL)\r
149 \r
150    // Intel C++, no version number:\r
151 #  define BOOST_LIB_TOOLSET "iw"\r
152 \r
153 #elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )\r
154 \r
155    // Metrowerks CodeWarrior 8.x\r
156 #  define BOOST_LIB_TOOLSET "cw8"\r
157 \r
158 #elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )\r
159 \r
160    // Metrowerks CodeWarrior 9.x\r
161 #  define BOOST_LIB_TOOLSET "cw9"\r
162 \r
163 #endif\r
164 #endif // BOOST_LIB_TOOLSET\r
165 \r
166 //\r
167 // select thread opt:\r
168 //\r
169 #if defined(_MT) || defined(__MT__)\r
170 #  define BOOST_LIB_THREAD_OPT "-mt"\r
171 #else\r
172 #  define BOOST_LIB_THREAD_OPT\r
173 #endif\r
174 \r
175 #if defined(_MSC_VER) || defined(__MWERKS__)\r
176 \r
177 #  ifdef _DLL\r
178 \r
179 #     if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))\r
180 \r
181 #        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\r
182 #            define BOOST_LIB_RT_OPT "-gdp"\r
183 #        elif defined(_DEBUG)\r
184 #            define BOOST_LIB_RT_OPT "-gdp"\r
185 #            pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")\r
186 #            error "Build options aren't compatible with pre-built libraries"\r
187 #        else\r
188 #            define BOOST_LIB_RT_OPT "-p"\r
189 #        endif\r
190 \r
191 #     elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)\r
192 \r
193 #        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\r
194 #            define BOOST_LIB_RT_OPT "-gdpn"\r
195 #        elif defined(_DEBUG)\r
196 #            define BOOST_LIB_RT_OPT "-gdpn"\r
197 #            pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")\r
198 #            error "Build options aren't compatible with pre-built libraries"\r
199 #        else\r
200 #            define BOOST_LIB_RT_OPT "-pn"\r
201 #        endif\r
202 \r
203 #     else\r
204 \r
205 #        if defined(_DEBUG)\r
206 #            define BOOST_LIB_RT_OPT "-gd"\r
207 #        else\r
208 #            define BOOST_LIB_RT_OPT\r
209 #        endif\r
210 \r
211 #     endif\r
212 \r
213 #  else\r
214 \r
215 #     if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))\r
216 \r
217 #        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\r
218 #            define BOOST_LIB_RT_OPT "-sgdp"\r
219 #        elif defined(_DEBUG)\r
220 #             define BOOST_LIB_RT_OPT "-sgdp"\r
221 #            pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")\r
222 #            error "Build options aren't compatible with pre-built libraries"\r
223 #        else\r
224 #            define BOOST_LIB_RT_OPT "-sp"\r
225 #        endif\r
226 \r
227 #     elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)\r
228 \r
229 #        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\r
230 #            define BOOST_LIB_RT_OPT "-sgdpn"\r
231 #        elif defined(_DEBUG)\r
232 #             define BOOST_LIB_RT_OPT "-sgdpn"\r
233 #            pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")\r
234 #            error "Build options aren't compatible with pre-built libraries"\r
235 #        else\r
236 #            define BOOST_LIB_RT_OPT "-spn"\r
237 #        endif\r
238 \r
239 #     else\r
240 \r
241 #        if defined(_DEBUG)\r
242 #             define BOOST_LIB_RT_OPT "-sgd"\r
243 #        else\r
244 #            define BOOST_LIB_RT_OPT "-s"\r
245 #        endif\r
246 \r
247 #     endif\r
248 \r
249 #  endif\r
250 \r
251 #elif defined(__BORLANDC__)\r
252 \r
253 //\r
254 // figure out whether we want the debug builds or not:\r
255 //\r
256 #if __BORLANDC__ > 0x561\r
257 #pragma defineonoption BOOST_BORLAND_DEBUG -v\r
258 #endif\r
259 //\r
260 // sanity check:\r
261 //\r
262 #if defined(__STL_DEBUG) || defined(_STLP_DEBUG)\r
263 #error "Pre-built versions of the Boost libraries are not provided in STLPort-debug form"\r
264 #endif\r
265 \r
266 #  ifdef _RTLDLL\r
267 \r
268 #     ifdef BOOST_BORLAND_DEBUG\r
269 #         define BOOST_LIB_RT_OPT "-d"\r
270 #     else\r
271 #         define BOOST_LIB_RT_OPT\r
272 #     endif\r
273 \r
274 #  else\r
275 \r
276 #     ifdef BOOST_BORLAND_DEBUG\r
277 #         define BOOST_LIB_RT_OPT "-sd"\r
278 #     else\r
279 #         define BOOST_LIB_RT_OPT "-s"\r
280 #     endif\r
281 \r
282 #  endif\r
283 \r
284 #endif\r
285 \r
286 //\r
287 // select linkage opt:\r
288 //\r
289 #if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)\r
290 #  define BOOST_LIB_PREFIX\r
291 #elif defined(BOOST_DYN_LINK)\r
292 #  error "Mixing a dll boost library with a static runtime is a really bad idea..."\r
293 #else\r
294 #  define BOOST_LIB_PREFIX "lib"\r
295 #endif\r
296 \r
297 //\r
298 // now include the lib:\r
299 //\r
300 #if defined(BOOST_LIB_NAME) \\r
301       && defined(BOOST_LIB_PREFIX) \\r
302       && defined(BOOST_LIB_TOOLSET) \\r
303       && defined(BOOST_LIB_THREAD_OPT) \\r
304       && defined(BOOST_LIB_RT_OPT) \\r
305       && defined(BOOST_LIB_VERSION)\r
306 \r
307 #ifndef BOOST_AUTO_LINK_NOMANGLE\r
308 #  pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")\r
309 #  ifdef BOOST_LIB_DIAGNOSTIC\r
310 #     pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")\r
311 #  endif\r
312 #else\r
313 #  pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")\r
314 #  ifdef BOOST_LIB_DIAGNOSTIC\r
315 #     pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")\r
316 #  endif\r
317 #endif\r
318 \r
319 #else\r
320 #  error "some required macros where not defined (internal logic error)."\r
321 #endif\r
322 \r
323 \r
324 #endif // _MSC_VER || __BORLANDC__\r
325 \r
326 //\r
327 // finally undef any macros we may have set:\r
328 //\r
329 #ifdef BOOST_LIB_PREFIX\r
330 #  undef BOOST_LIB_PREFIX\r
331 #endif\r
332 #if defined(BOOST_LIB_NAME)\r
333 #  undef BOOST_LIB_NAME\r
334 #endif\r
335 // Don't undef this one: it can be set by the user and should be the \r
336 // same for all libraries:\r
337 //#if defined(BOOST_LIB_TOOLSET)\r
338 //#  undef BOOST_LIB_TOOLSET\r
339 //#endif\r
340 #if defined(BOOST_LIB_THREAD_OPT)\r
341 #  undef BOOST_LIB_THREAD_OPT\r
342 #endif\r
343 #if defined(BOOST_LIB_RT_OPT)\r
344 #  undef BOOST_LIB_RT_OPT\r
345 #endif\r
346 #if defined(BOOST_LIB_LINK_OPT)\r
347 #  undef BOOST_LIB_LINK_OPT\r
348 #endif\r
349 #if defined(BOOST_LIB_DEBUG_OPT)\r
350 #  undef BOOST_LIB_DEBUG_OPT\r
351 #endif\r
352 #if defined(BOOST_DYN_LINK)\r
353 #  undef BOOST_DYN_LINK\r
354 #endif\r
355 #if defined(BOOST_AUTO_LINK_NOMANGLE)\r
356 #  undef BOOST_AUTO_LINK_NOMANGLE\r
357 #endif\r
358 \r
359 \r
360 \r
361 \r
362 \r
363 \r
364 \r
365 \r
366 \r
367 \r
368 \r