]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/config/doc/html/index.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / config / doc / html / index.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Boost.Config</title>
5 <link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
7 <link rel="home" href="index.html" title="Boost.Config">
8 <link rel="next" href="boost_config/boost_macro_reference.html" title="Boost Macro Reference">
9 </head>
10 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
11 <table cellpadding="2" width="100%"><tr>
12 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
13 <td align="center"><a href="../../../../index.html">Home</a></td>
14 <td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
15 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
16 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
17 <td align="center"><a href="../../../../more/index.htm">More</a></td>
18 </tr></table>
19 <hr>
20 <div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
21 <div class="article">
22 <div class="titlepage">
23 <div>
24 <div><h2 class="title">
25 <a name="config"></a>Boost.Config</h2></div>
26 <div><div class="authorgroup"><div class="author"><h3 class="author">
27 <span class="firstname">Vesa Karvonen, John Maddock</span> <span class="surname">Beman Dawes</span>
28 </h3></div></div></div>
29 <div><p class="copyright">Copyright &#169; 2001-2007 Beman Dawes, Vesa Karvonen, John
30 Maddock</p></div>
31 <div><div class="legalnotice">
32 <a name="config.legal"></a><p>
33 Distributed under the Boost Software License, Version 1.0. (See accompanying
34 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
35 </p>
36 </div></div>
37 </div>
38 <hr>
39 </div>
40 <div class="toc">
41 <p><b>Table of Contents</b></p>
42 <dl>
43 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform">Configuring
44 Boost for Your Platform</a></span></dt>
45 <dd><dl>
46 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using
47 the default boost configuration</a></span></dt>
48 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The
49 &lt;boost/config.hpp&gt; header</a></span></dt>
50 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using
51 the configure script</a></span></dt>
52 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User
53 settable options</a></span></dt>
54 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced
55 configuration usage</a></span></dt>
56 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing
57 the boost configuration</a></span></dt>
58 </dl></dd>
59 <dt><span class="section"><a href="boost_config/boost_macro_reference.html">Boost Macro Reference</a></span></dt>
60 <dd><dl>
61 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects">Macros
62 that describe C++03 defects</a></span></dt>
63 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros
64 that describe optional features</a></span></dt>
65 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features">Macros
66 that describe possible C++ future features</a></span></dt>
67 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported">Macros
68 that describe C++11 features not supported</a></span></dt>
69 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">Macros
70 that allow use of C++11 features with C++03 compilers</a></span></dt>
71 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__14_features_not_supported">Macros
72 that describe C++14 features not supported</a></span></dt>
73 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__14_features_with_c__11_or_earlier_compilers">Macros
74 that allow use of C++14 features with C++11 or earlier compilers</a></span></dt>
75 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost
76 Helper Macros</a></span></dt>
77 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
78 Informational Macros</a></span></dt>
79 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros">Boost
80 Deprecated Macros</a></span></dt>
81 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code">Macros
82 for libraries with separate source code</a></span></dt>
83 </dl></dd>
84 <dt><span class="section"><a href="boost_config/build_config.html">Build Time Configuration</a></span></dt>
85 <dt><span class="section"><a href="boost_config/cstdint.html">Standard Integer Types</a></span></dt>
86 <dd><dl>
87 <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.overview">Overview</a></span></dt>
88 <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.rationale">Rationale</a></span></dt>
89 <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.ce"><span class="emphasis"><em>Caveat emptor</em></span></a></span></dt>
90 <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.exact_width_integer_types">Exact-width
91 integer types</a></span></dt>
92 <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.minimum_width_integer_types">Minimum-width
93 integer types</a></span></dt>
94 <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.fastest_minimum_width_integer_types">Fastest
95 minimum-width integer types</a></span></dt>
96 <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.greatest_width_integer_types">Greatest-width
97 integer types</a></span></dt>
98 <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.integer_constant_macros">Integer
99 Constant Macros</a></span></dt>
100 </dl></dd>
101 <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html">Guidelines for
102 Boost Authors</a></span></dt>
103 <dd><dl>
104 <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">Disabling
105 Compiler Warnings</a></span></dt>
106 <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding
107 New Defect Macros</a></span></dt>
108 <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding
109 New Feature Test Macros</a></span></dt>
110 <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers">Modifying
111 the Boost Configuration Headers</a></span></dt>
112 </dl></dd>
113 <dt><span class="section"><a href="boost_config/rationale.html">Rationale</a></span></dt>
114 <dd><dl>
115 <dt><span class="section"><a href="boost_config/rationale.html#boost_config.rationale.the_problem">The problem</a></span></dt>
116 <dt><span class="section"><a href="boost_config/rationale.html#boost_config.rationale.the_solution">The solution</a></span></dt>
117 </dl></dd>
118 <dt><span class="section"><a href="boost_config/acknowledgements.html">Acknowledgements</a></span></dt>
119 </dl>
120 </div>
121 <div class="section">
122 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
123 <a name="boost_config.configuring_boost_for_your_platform"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform" title="Configuring Boost for Your Platform">Configuring
124 Boost for Your Platform</a>
125 </h2></div></div></div>
126 <div class="toc"><dl>
127 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using
128 the default boost configuration</a></span></dt>
129 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The
130 &lt;boost/config.hpp&gt; header</a></span></dt>
131 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using
132 the configure script</a></span></dt>
133 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User
134 settable options</a></span></dt>
135 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced
136 configuration usage</a></span></dt>
137 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing
138 the boost configuration</a></span></dt>
139 </dl></div>
140 <div class="section">
141 <div class="titlepage"><div><div><h3 class="title">
142 <a name="boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration" title="Using the default boost configuration">Using
143 the default boost configuration</a>
144 </h3></div></div></div>
145 <p>
146 Boost comes already configured for most common compilers and platforms; you
147 should be able to use boost "as is". Since the compiler is configured
148 separately from the standard library, the default configuration should work
149 even if you replace the compiler's standard library with a third-party standard
150 library (like <a href="http://stlport.sourceforge.net" target="_top">STLport</a>).
151 </p>
152 <p>
153 Using boost "as is" without trying to reconfigure is the recommended
154 method for using boost. You can, however, run the configure script if you
155 want to, and there are regression tests provided that allow you to test the
156 current boost configuration with your particular compiler setup.
157 </p>
158 <p>
159 Boost library users can request support for additional compilers or platforms
160 by visiting our <a href="https://svn.boost.org/trac/boost/newticket" target="_top">Trac</a>
161 and submitting a support request.
162 </p>
163 </div>
164 <div class="section">
165 <div class="titlepage"><div><div><h3 class="title">
166 <a name="boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header" title="The &lt;boost/config.hpp&gt; header">The
167 &lt;boost/config.hpp&gt; header</a>
168 </h3></div></div></div>
169 <p>
170 Boost library implementations access configuration macros via
171 </p>
172 <pre class="programlisting"><span class="preprocessor">#include</span> <a href="../../../../boost/config.hpp" target="_top">&lt;boost/config.hpp&gt;</a>
173 </pre>
174 <p>
175 While Boost library users are not required to include that file directly,
176 or use those configuration macros, such use is acceptable. The configuration
177 macros are documented as to their purpose, usage, and limitations which makes
178 them usable by both Boost library and user code.
179 </p>
180 <p>
181 Boost <a class="link" href="boost_config/boost_macro_reference.html#config_info_macros">informational</a> or <a class="link" href="boost_config/boost_macro_reference.html#config_helpers">helper</a>
182 macros are designed for use by Boost users as well as for our own internal
183 use. Note however, that the <a class="link" href="boost_config/boost_macro_reference.html#config_features">feature test</a>
184 and <a class="link" href="boost_config/boost_macro_reference.html#config_defects">defect test</a> macros were designed
185 for internal use by Boost libraries, not user code, so they can change at
186 any time (though no gratuitous changes are made to them). Boost library problems
187 resulting from changes to the configuration macros are caught by the Boost
188 regression tests, so the Boost libraries are updated to account for those
189 changes. By contrast, Boost library user code can be adversely affected by
190 changes to the macros without warning. The best way to keep abreast of changes
191 to the macros used in user code is to monitor the discussions on the Boost
192 developers list.
193 </p>
194 </div>
195 <div class="section">
196 <div class="titlepage"><div><div><h3 class="title">
197 <a name="boost_config.configuring_boost_for_your_platform.using_the_configure_script"></a><a name="config_config_script"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script" title="Using the configure script">Using
198 the configure script</a>
199 </h3></div></div></div>
200 <div class="important"><table border="0" summary="Important">
201 <tr>
202 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/src/images/important.png"></td>
203 <th align="left">Important</th>
204 </tr>
205 <tr><td align="left" valign="top"><p>
206 This configure script only sets up the Boost headers for use with a particular
207 compiler. It has no effect on Boost.Build, or how the libraries are built.
208 </p></td></tr>
209 </table></div>
210 <p>
211 If you know that boost is incorrectly configured for your particular setup,
212 and you are on a UNIX like platform, then you may want to try and improve
213 things by running the boost configure script. From a shell command prompt
214 you will need to cd into <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>
215 and type:
216 </p>
217 <div class="blockquote"><blockquote class="blockquote"><p>
218 <code class="computeroutput"><span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span></code>
219 </p></blockquote></div>
220 <p>
221 you will see a list of the items being checked as the script works its way
222 through the regression tests. Note that the configure script only really
223 auto-detects your compiler if it's called g++, c++ or CC. If you are using
224 some other compiler you will need to set one or more of the following environment
225 variables:
226 </p>
227 <div class="informaltable"><table class="table">
228 <colgroup>
229 <col>
230 <col>
231 </colgroup>
232 <thead><tr>
233 <th>
234 <p>
235 Variable
236 </p>
237 </th>
238 <th>
239 <p>
240 Description
241 </p>
242 </th>
243 </tr></thead>
244 <tbody>
245 <tr>
246 <td>
247 <p>
248 CXX
249 </p>
250 </td>
251 <td>
252 <p>
253 The name of the compiler, for example <code class="computeroutput"><span class="identifier">c</span><span class="special">++</span></code>.
254 </p>
255 </td>
256 </tr>
257 <tr>
258 <td>
259 <p>
260 CXXFLAGS
261 </p>
262 </td>
263 <td>
264 <p>
265 The compiler flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">O2</span></code>.
266 </p>
267 </td>
268 </tr>
269 <tr>
270 <td>
271 <p>
272 LDFLAGS
273 </p>
274 </td>
275 <td>
276 <p>
277 The linker flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">L</span><span class="special">/</span><span class="identifier">mypath</span></code>.
278 </p>
279 </td>
280 </tr>
281 <tr>
282 <td>
283 <p>
284 LIBS
285 </p>
286 </td>
287 <td>
288 <p>
289 Any libraries to link in, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">lpthread</span></code>.
290 </p>
291 </td>
292 </tr>
293 </tbody>
294 </table></div>
295 <p>
296 For example to run the configure script with HP aCC, you might use something
297 like:
298 </p>
299 <pre class="programlisting"><span class="keyword">export</span> <span class="identifier">CXX</span><span class="special">=</span><span class="string">"aCC"</span>
300 <span class="keyword">export</span> <span class="identifier">CXXFLAGS</span><span class="special">=</span><span class="string">"-Aa -DAportable -D__HPACC_THREAD_SAFE_RB_TREE \
301 -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD -D_REENTRANT -D_THREAD_SAFE"</span>
302 <span class="keyword">export</span> <span class="identifier">LDFLAGS</span><span class="special">=</span><span class="string">"-DAportable"</span>
303 <span class="keyword">export</span> <span class="identifier">LIBS</span><span class="special">=</span><span class="string">"-lpthread"</span>
304 <span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span>
305 </pre>
306 <p>
307 However you run the configure script, when it finishes you will find a new
308 header -<code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code>- located in the <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>
309 directory. <span class="bold"><strong>Note that configure does not install this
310 header into your boost include path by default</strong></span>. This header contains
311 all the options generated by the configure script, plus a header-section
312 that contains the user settable options from the default version of <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</a>
313 (located under <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>).
314 There are two ways you can use this header:
315 </p>
316 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
317 <li class="listitem">
318 <span class="bold"><strong>Option 1:</strong></span> copy the header into <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> so that it replaces the default user.hpp
319 provided by boost. This option allows only one configure-generated setup;
320 boost developers should avoid this option, as it incurs the danger of
321 accidentally committing a configure-modified <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</a>
322 to the svn repository (something you will not be thanked for!).
323 </li>
324 <li class="listitem">
325 <span class="bold"><strong>Option 2:</strong></span> give the header a more memorable
326 name, and place it somewhere convenient; then, define the macro <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> to point to it. For
327 example create a new sub-directory <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> <code class="computeroutput"><span class="identifier">user</span><span class="special">/</span></code>, and copy the header there; for example
328 as <code class="computeroutput"><span class="identifier">multithread</span><span class="special">-</span><span class="identifier">gcc</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>. Then, when compiling add the command
329 line option: <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_USER_CONFIG</span><span class="special">=</span><span class="string">"&lt;boost/config/user/multithread-gcc-config.hpp&gt;"</span></code>,
330 and boost will use the new configuration header. This option allows you
331 to generate more than one configuration header, and to keep them separate
332 from the boost source - so that updates to the source do not interfere
333 with your configuration.
334 </li>
335 </ul></div>
336 </div>
337 <div class="section">
338 <div class="titlepage"><div><div><h3 class="title">
339 <a name="boost_config.configuring_boost_for_your_platform.user_settable_options"></a><a name="config_user_settable"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options" title="User settable options">User
340 settable options</a>
341 </h3></div></div></div>
342 <p>
343 There are some configuration-options that represent user choices, rather
344 than compiler defects or platform specific options. These are listed in
345 <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
346 and at the start of a configure-generated <code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code> header.
347 You can define these on the command line, or by editing <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>, they are listed in the following table:
348 </p>
349 <div class="informaltable"><table class="table">
350 <colgroup>
351 <col>
352 <col>
353 </colgroup>
354 <thead><tr>
355 <th>
356 <p>
357 Macro
358 </p>
359 </th>
360 <th>
361 <p>
362 Description
363 </p>
364 </th>
365 </tr></thead>
366 <tbody>
367 <tr>
368 <td>
369 <p>
370 <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>
371 </p>
372 </td>
373 <td>
374 <p>
375 When defined, it should point to the name of the user configuration
376 file to include prior to any boost configuration files. When not
377 defined, defaults to <a href="../../../../boost/config/user.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>.
378 </p>
379 </td>
380 </tr>
381 <tr>
382 <td>
383 <p>
384 <code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code>
385 </p>
386 </td>
387 <td>
388 <p>
389 When defined, it should point to the name of the compiler configuration
390 file to use. Defining this cuts out the compiler selection logic,
391 and eliminates the dependency on the header containing that logic.
392 For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG
393 to <a href="../../../../boost/config/compiler/gcc.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">compiler</span><span class="special">/</span><span class="identifier">gcc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>.
394 </p>
395 </td>
396 </tr>
397 <tr>
398 <td>
399 <p>
400 <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
401 </p>
402 </td>
403 <td>
404 <p>
405 When defined, it should point to the name of the standard library
406 configuration file to use. Defining this cuts out the standard
407 library selection logic, and eliminates the dependency on the header
408 containing that logic. For example if you are using STLport, then
409 you could define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
410 to <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">stdlib</span><span class="special">/</span><span class="identifier">stlport</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>.
411 </p>
412 </td>
413 </tr>
414 <tr>
415 <td>
416 <p>
417 <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code>
418 </p>
419 </td>
420 <td>
421 <p>
422 When defined, it should point to the name of the platform configuration
423 file to use. Defining this cuts out the platform selection logic,
424 and eliminates the dependency on the header containing that logic.
425 For example if you are compiling on linux, then you could define
426 <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code>
427 to <a href="../../../../boost/config/platform/linux.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">platform</span><span class="special">/</span><span class="identifier">linux</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>.
428 </p>
429 </td>
430 </tr>
431 <tr>
432 <td>
433 <p>
434 <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
435 </p>
436 </td>
437 <td>
438 <p>
439 When defined, no compiler configuration file is selected or included,
440 define when the compiler is fully conformant with the standard,
441 or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
442 has had any options necessary added to it, for example by an autoconf
443 generated configure script.
444 </p>
445 </td>
446 </tr>
447 <tr>
448 <td>
449 <p>
450 <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code>
451 </p>
452 </td>
453 <td>
454 <p>
455 When defined, no standard library configuration file is selected
456 or included, define when the standard library is fully conformant
457 with the standard, or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), has had any
458 options necessary added to it, for example by an autoconf generated
459 configure script.
460 </p>
461 </td>
462 </tr>
463 <tr>
464 <td>
465 <p>
466 <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code>
467 </p>
468 </td>
469 <td>
470 <p>
471 When defined, no platform configuration file is selected or included,
472 define when the platform is fully conformant with the standard
473 (and has no useful extra features), or where the user header (see
474 <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
475 has had any options necessary added to it, for example by an autoconf
476 generated configure script.
477 </p>
478 </td>
479 </tr>
480 <tr>
481 <td>
482 <p>
483 <code class="computeroutput"><span class="identifier">BOOST_NO_CONFIG</span></code>
484 </p>
485 </td>
486 <td>
487 <p>
488 Equivalent to defining all of <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>,
489 <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code>
490 and <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code>.
491 </p>
492 </td>
493 </tr>
494 <tr>
495 <td>
496 <p>
497 <code class="computeroutput"><span class="identifier">BOOST_STRICT_CONFIG</span></code>
498 </p>
499 </td>
500 <td>
501 <p>
502 The normal behavior for compiler versions that are newer than the
503 last known version, is to assume that they have all the same defects
504 as the last known version. By setting this define, then compiler
505 versions that are newer than the last known version are assumed
506 to be fully conforming with the standard. This is probably most
507 useful for boost developers or testers, and for those who want
508 to use boost to test beta compiler versions.
509 </p>
510 </td>
511 </tr>
512 <tr>
513 <td>
514 <p>
515 <code class="computeroutput"><span class="identifier">BOOST_ASSERT_CONFIG</span></code>
516 </p>
517 </td>
518 <td>
519 <p>
520 When this flag is set, if the config finds anything unknown, then
521 it will stop with a #error rather than continue. Boost regression
522 testers should set this define, as should anyone who wants to quickly
523 check whether boost is supported on their platform.
524 </p>
525 </td>
526 </tr>
527 <tr>
528 <td>
529 <p>
530 <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code>
531 </p>
532 </td>
533 <td>
534 <p>
535 When defined, disables threading support, even if the compiler
536 in its current translation mode supports multiple threads.
537 </p>
538 </td>
539 </tr>
540 <tr>
541 <td>
542 <p>
543 <code class="computeroutput"><span class="identifier">BOOST_DISABLE_WIN32</span></code>
544 </p>
545 </td>
546 <td>
547 <p>
548 When defined, disables the use of Win32 specific API's, even when
549 these are available. Also has the effect of setting <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> unless
550 <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code>
551 is set. This option may be set automatically by the config system
552 when it detects that the compiler is in "strict mode".
553 </p>
554 </td>
555 </tr>
556 <tr>
557 <td>
558 <p>
559 <code class="computeroutput"><span class="identifier">BOOST_DISABLE_ABI_HEADERS</span></code>
560 </p>
561 </td>
562 <td>
563 <p>
564 Stops boost headers from including any prefix/suffix headers that
565 normally control things like struct packing and alignment.
566 </p>
567 </td>
568 </tr>
569 <tr>
570 <td>
571 <p>
572 <code class="computeroutput"><span class="identifier">BOOST_ABI_PREFIX</span></code>
573 </p>
574 </td>
575 <td>
576 <p>
577 A prefix header to include in place of whatever boost.config would
578 normally select, any replacement should set up struct packing and
579 alignment options as required.
580 </p>
581 </td>
582 </tr>
583 <tr>
584 <td>
585 <p>
586 <code class="computeroutput"><span class="identifier">BOOST_ABI_SUFFIX</span></code>
587 </p>
588 </td>
589 <td>
590 <p>
591 A suffix header to include in place of whatever boost.config would
592 normally select, any replacement should undo the effects of the
593 prefix header.
594 </p>
595 </td>
596 </tr>
597 <tr>
598 <td>
599 <p>
600 <code class="computeroutput"><span class="identifier">BOOST_ALL_DYN_LINK</span></code>
601 </p>
602 </td>
603 <td>
604 <p>
605 Forces all libraries that have separate source, to be linked as
606 dll's rather than static libraries on Microsoft Windows (this macro
607 is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
608 knows which symbols to look for in a dll rather than in a static
609 library). Note that there may be some libraries that can only be
610 statically linked (Boost.Test for example) and others which may
611 only be dynamically linked (Boost.Thread for example), in these
612 cases this macro has no effect.
613 </p>
614 </td>
615 </tr>
616 <tr>
617 <td>
618 <p>
619 <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_DYN_LINK</span></code>
620 </p>
621 </td>
622 <td>
623 <p>
624 Forces library "whatever" to be linked as a dll rather
625 than a static library on Microsoft Windows: replace the <span class="emphasis"><em>WHATEVER</em></span>
626 part of the macro name with the name of the library that you want
627 to dynamically link to, for example use <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_DYN_LINK</span></code>
628 or <code class="computeroutput"><span class="identifier">BOOST_REGEX_DYN_LINK</span></code>
629 etc (this macro is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
630 knows which symbols to look for in a dll rather than in a static
631 library). Note that there may be some libraries that can only be
632 statically linked (Boost.Test for example) and others which may
633 only be dynamically linked (Boost.Thread for example), in these
634 cases this macro is unsupported.
635 </p>
636 </td>
637 </tr>
638 <tr>
639 <td>
640 <p>
641 <code class="computeroutput"><span class="identifier">BOOST_ALL_NO_LIB</span></code>
642 </p>
643 </td>
644 <td>
645 <p>
646 Tells the config system not to automatically select which libraries
647 to link against. Normally if a compiler supports #pragma lib, then
648 the correct library build variant will be automatically selected
649 and linked against, simply by the act of including one of that
650 library's headers. This macro turns that feature off.
651 </p>
652 </td>
653 </tr>
654 <tr>
655 <td>
656 <p>
657 <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_NO_LIB</span></code>
658 </p>
659 </td>
660 <td>
661 <p>
662 Tells the config system not to automatically select which library
663 to link against for library "whatever", replace <span class="emphasis"><em>WHATEVER</em></span>
664 in the macro name with the name of the library; for example <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_NO_LIB</span></code> or <code class="computeroutput"><span class="identifier">BOOST_REGEX_NO_LIB</span></code>. Normally
665 if a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span>
666 <span class="identifier">lib</span></code>, then the correct
667 library build variant will be automatically selected and linked
668 against, simply by the act of including one of that library's headers.
669 This macro turns that feature off.
670 </p>
671 </td>
672 </tr>
673 <tr>
674 <td>
675 <p>
676 <code class="computeroutput"><span class="identifier">BOOST_LIB_DIAGNOSTIC</span></code>
677 </p>
678 </td>
679 <td>
680 <p>
681 Causes the auto-linking code to output diagnostic messages indicating
682 the name of the library that is selected for linking.
683 </p>
684 </td>
685 </tr>
686 <tr>
687 <td>
688 <p>
689 <code class="computeroutput"><span class="identifier">BOOST_LIB_BUILDID</span></code>
690 </p>
691 </td>
692 <td>
693 <p>
694 If you built Boost using the <code class="computeroutput"><span class="special">--</span><span class="identifier">buildid</span></code> option then set this
695 macro to the same value as you passed to bjam. For example if you
696 built using <code class="computeroutput"><span class="identifier">bjam</span> <span class="identifier">address</span><span class="special">-</span><span class="identifier">model</span><span class="special">=</span><span class="number">64</span> <span class="special">--</span><span class="identifier">buildid</span><span class="special">=</span><span class="identifier">amd64</span></code> then compile your code
697 with <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_LIB_BUILDID</span><span class="special">=</span><span class="identifier">amd64</span></code>
698 to ensure the correct libraries are selected at link time.
699 </p>
700 </td>
701 </tr>
702 <tr>
703 <td>
704 <p>
705 <code class="computeroutput"><span class="identifier">BOOST_LIB_TOOLSET</span></code>
706 </p>
707 </td>
708 <td>
709 <p>
710 Overrides the name of the toolset part of the name of library being
711 linked to; note if defined this must be defined to a quoted string
712 literal, for example "abc".
713 </p>
714 </td>
715 </tr>
716 </tbody>
717 </table></div>
718 </div>
719 <div class="section">
720 <div class="titlepage"><div><div><h3 class="title">
721 <a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage" title="Advanced configuration usage">Advanced
722 configuration usage</a>
723 </h3></div></div></div>
724 <div class="toc"><dl>
725 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration">Example
726 1: creating our own frozen configuration</a></span></dt>
727 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need">Example
728 2: skipping files that you don't need</a></span></dt>
729 <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration">Example
730 3: using configure script to freeze the boost configuration</a></span></dt>
731 </dl></div>
732 <p>
733 By setting various macros on the compiler command line or by editing <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</a>,
734 the boost configuration setup can be optimised in a variety of ways.
735 </p>
736 <p>
737 Boost's configuration is structured so that the user-configuration is included
738 first (defaulting to <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</a>
739 if <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> is not
740 defined). This sets up any user-defined policies, and gives the user-configuration
741 a chance to influence what happens next.
742 </p>
743 <p>
744 Next the compiler, standard library, and platform configuration files are
745 included. These are included via macros (<code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code>
746 etc, <a class="link" href="index.html#config_user_settable">see user settable macros</a>),
747 and if the corresponding macro is undefined then a separate header that detects
748 which compiler/standard library/platform is in use is included in order to
749 set these. The config can be told to ignore these headers altogether if the
750 corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
751 macro is set (for example <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
752 to disable including any compiler configuration file - <a class="link" href="index.html#config_user_settable">see
753 user settable macros</a>).
754 </p>
755 <p>
756 Finally the boost configuration header, includes <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/suffix.hpp&gt;</a>;
757 this header contains any boiler plate configuration code - for example where
758 one boost macro being set implies that another must be set also.
759 </p>
760 <p>
761 The following usage examples represent just a few of the possibilities:
762 </p>
763 <div class="section">
764 <div class="titlepage"><div><div><h4 class="title">
765 <a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration" title="Example 1: creating our own frozen configuration">Example
766 1: creating our own frozen configuration</a>
767 </h4></div></div></div>
768 <p>
769 Lets suppose that we're building boost with Visual C++ 6, and STLport 4.0.
770 Lets suppose also that we don't intend to update our compiler or standard
771 library any time soon. In order to avoid breaking dependencies when we
772 update boost, we may want to "freeze" our configuration headers,
773 so that we only have to rebuild our project if the boost code itself has
774 changed, and not because the boost config has been updated for more recent
775 versions of Visual C++ or STLport. We'll start by realising that the configuration
776 files in use are: <a href="../../../../boost/config/compiler/visualc.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">compiler</span><span class="special">/</span><span class="identifier">visualc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a> for the compiler, <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">stdlib</span><span class="special">/</span><span class="identifier">stlport</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a> for the standard library, and
777 <a href="../../../../boost/config/platform/win32.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">platform</span><span class="special">/</span><span class="identifier">win32</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a> for the platform. Next we'll
778 create our own private configuration directory: <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">mysetup</span><span class="special">/</span></code>, and copy the configuration files into
779 there. Finally, open up <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</a>
780 and edit the following defines:
781 </p>
782 <pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_COMPILER_CONFIG</span> <span class="string">"boost/config/mysetup/visualc.hpp"</span>
783 <span class="preprocessor">#define</span> <span class="identifier">BOOST_STDLIB_CONFIG</span> <span class="string">"boost/config/mysetup/stlport.hpp"</span>
784 <span class="preprocessor">#define</span> <span class="identifier">BOOST_USER_CONFIG</span> <span class="string">"boost/config/mysetup/win32.hpp"</span>
785 </pre>
786 <p>
787 Now when you use boost, its configuration header will go straight to our
788 "frozen" versions, and ignore the default versions, you will
789 now be insulated from any configuration changes when you update boost.
790 This technique is also useful if you want to modify some of the boost configuration
791 files; for example if you are working with a beta compiler release not
792 yet supported by boost.
793 </p>
794 </div>
795 <div class="section">
796 <div class="titlepage"><div><div><h4 class="title">
797 <a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need" title="Example 2: skipping files that you don't need">Example
798 2: skipping files that you don't need</a>
799 </h4></div></div></div>
800 <p>
801 Lets suppose that you're using boost with a compiler that is fully conformant
802 with the standard; you're not interested in the fact that older versions
803 of your compiler may have had bugs, because you know that your current
804 version does not need any configuration macros setting. In a case like
805 this, you can define <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
806 either on the command line, or in <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</a>,
807 and miss out the compiler configuration header altogether (actually you
808 miss out two headers, one which works out what the compiler is, and one
809 that configures boost for it). This has two consequences: the first is
810 that less code has to be compiled, and the second that you have removed
811 a dependency on two boost headers.
812 </p>
813 </div>
814 <div class="section">
815 <div class="titlepage"><div><div><h4 class="title">
816 <a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration" title="Example 3: using configure script to freeze the boost configuration">Example
817 3: using configure script to freeze the boost configuration</a>
818 </h4></div></div></div>
819 <p>
820 If you are working on a unix-like platform then you can use the configure
821 script to generate a "frozen" configuration based on your current
822 compiler setup - <a class="link" href="index.html#config_config_script">see using the configure
823 script for more details</a>.
824 </p>
825 </div>
826 </div>
827 <div class="section">
828 <div class="titlepage"><div><div><h3 class="title">
829 <a name="boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration" title="Testing the boost configuration">Testing
830 the boost configuration</a>
831 </h3></div></div></div>
832 <p>
833 The boost configuration library provides a full set of regression test programs
834 under the <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>
835 <code class="computeroutput"><span class="identifier">test</span><span class="special">/</span></code>
836 sub-directory:
837 </p>
838 <div class="informaltable"><table class="table">
839 <colgroup>
840 <col>
841 <col>
842 </colgroup>
843 <thead><tr>
844 <th>
845 <p>
846 File
847 </p>
848 </th>
849 <th>
850 <p>
851 Description
852 </p>
853 </th>
854 </tr></thead>
855 <tbody>
856 <tr>
857 <td>
858 <p>
859 <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>
860 </p>
861 </td>
862 <td>
863 <p>
864 Prints out a detailed description of your compiler/standard library/platform
865 setup, plus your current boost configuration. The information provided
866 by this program is useful in setting up the boost configuration
867 files. If you report that boost is incorrectly configured for your
868 compiler/library/platform then please include the output from this
869 program when reporting the changes required.
870 </p>
871 </td>
872 </tr>
873 <tr>
874 <td>
875 <p>
876 <code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code>
877 </p>
878 </td>
879 <td>
880 <p>
881 A monolithic test program that includes most of the individual
882 test cases. This provides a quick check to see if boost is correctly
883 configured for your compiler/library/platform.
884 </p>
885 </td>
886 </tr>
887 <tr>
888 <td>
889 <p>
890 <code class="computeroutput"><span class="identifier">limits_test</span><span class="special">.</span><span class="identifier">cpp</span></code>
891 </p>
892 </td>
893 <td>
894 <p>
895 Tests your standard library's <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
896 implementation (or its boost provided replacement if <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> is defined).
897 This test file fails with most versions of numeric_limits, mainly
898 due to the way that some compilers treat NAN's and infinity.
899 </p>
900 </td>
901 </tr>
902 <tr>
903 <td>
904 <p>
905 <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code>
906 </p>
907 </td>
908 <td>
909 <p>
910 Individual compiler defect test files. Each of these should compile,
911 if one does not then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
912 macro needs to be defined - see each test file for specific details.
913 </p>
914 </td>
915 </tr>
916 <tr>
917 <td>
918 <p>
919 <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code>
920 </p>
921 </td>
922 <td>
923 <p>
924 Individual compiler defect test files. Each of these should not
925 compile, if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
926 macro is defined when it need not be - see each test file for specific
927 details.
928 </p>
929 </td>
930 </tr>
931 <tr>
932 <td>
933 <p>
934 <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code>
935 </p>
936 </td>
937 <td>
938 <p>
939 Individual feature test files. If one of these does not compile
940 then the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
941 macro is defined when it should not be - see each test file for
942 specific details.
943 </p>
944 </td>
945 </tr>
946 <tr>
947 <td>
948 <p>
949 <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code>
950 </p>
951 </td>
952 <td>
953 <p>
954 Individual feature test files. If one of these does compile then
955 the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
956 macro can be safely defined - see each test file for specific details.
957 </p>
958 </td>
959 </tr>
960 </tbody>
961 </table></div>
962 <p>
963 Although you can run the configuration regression tests as individual test
964 files, there are rather a lot of them, so there are a couple of shortcuts
965 to help you out:
966 </p>
967 <p>
968 If you have built the <a href="../../../../tools/regression/doc/index.html" target="_top">boost
969 regression test driver</a>, then you can use this to produce a nice html
970 formatted report of the results using the supplied test file.
971 </p>
972 <p>
973 Alternatively you can run the configure script like this:
974 </p>
975 <div class="blockquote"><blockquote class="blockquote"><p>
976 <code class="computeroutput"><span class="special">./</span><span class="identifier">configure</span>
977 <span class="special">--</span><span class="identifier">enable</span><span class="special">-</span><span class="identifier">test</span></code>
978 </p></blockquote></div>
979 <p>
980 in which case the script will test the current configuration rather than
981 creating a new one from scratch.
982 </p>
983 <p>
984 If you are reporting the results of these tests for a new platform/library/compiler
985 then please include a log of the full compiler output, the output from <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>, and the pass/fail test results.
986 </p>
987 </div>
988 </div>
989 </div>
990 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
991 <td align="left"><p><small>Last revised: July 02, 2016 at 08:07:27 GMT</small></p></td>
992 <td align="right"><div class="copyright-footer"></div></td>
993 </tr></table>
994 <hr>
995 <div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
996 </body>
997 </html>