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