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