Completed all changes from review.

This commit is contained in:
Rene Rivera
2013-04-02 21:40:46 -05:00
parent c22d44d0ce
commit b10e3490ec
25 changed files with 639 additions and 1670 deletions

View File

@ -40,10 +40,12 @@
<dt><span class="section"><a href="predef/reference/boost_comp_compiler_macros.html"><code class="computeroutput"><span class="identifier">BOOST_COMP</span></code> compiler macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/boost_lang_language_standards_ma.html"><code class="computeroutput"><span class="identifier">BOOST_LANG</span></code> language standards macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/boost_lib_library_macros.html"><code class="computeroutput"><span class="identifier">BOOST_LIB</span></code> library macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/boost_os_operating_system_macros.html"><code class="computeroutput"><span class="identifier">BOOST_OS_</span></code> operating system macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/boost_os_operating_system_macros.html"><code class="computeroutput"><span class="identifier">BOOST_OS</span></code> operating system macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/other_macros.html">Other macros</a></span></dt>
<dt><span class="section"><a href="predef/reference/version_definition_macros.html">Version definition
macros</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="predef/acknoledgements.html">Acknoledgements</a></span></dt>
</dl>
</div>
<div class="warning"><table border="0" summary="Warning">
@ -57,7 +59,7 @@
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: March 20, 2013 at 04:42:44 GMT</small></p></td>
<td align="left"><p><small>Last revised: April 03, 2013 at 02:20:25 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>

View File

@ -48,6 +48,13 @@
<li class="listitem">
If possible, the predef will be defined as the version number detected.
</li>
<li class="listitem">
The predef must define <code class="computeroutput"><span class="special">*</span><span class="identifier">_AVAILABLE</span></code>
macros.
</li>
<li class="listitem">
The predef must define a symbolic constant string name macro.
</li>
<li class="listitem">
The predef must declare itself, after being defined, for the testing system.
</li>
@ -127,14 +134,24 @@ Documentation about what is detected.
that the predef was detected:
</p>
<pre class="programlisting"><span class="preprocessor">#if</span> <span class="special">(</span><span class="identifier">condition_a</span><span class="special">)</span>
<span class="preprocessor">#undef</span> <span class="identifier">BOOST_category_tag</span>
<span class="preprocessor">#if</span> <span class="special">(</span><span class="identifier">condition_b</span><span class="special">)</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_category_tag</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="identifier">major</span><span class="special">,</span><span class="identifier">minor</span><span class="special">,</span><span class="identifier">patch</span><span class="special">)</span>
<span class="preprocessor">#else</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_category_tag</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">)</span>
<span class="preprocessor">#endif</span>
<span class="preprocessor"># undef</span> <span class="identifier">BOOST_category_tag</span>
<span class="preprocessor"># if</span> <span class="special">(</span><span class="identifier">condition_b</span><span class="special">)</span>
<span class="preprocessor"># define</span> <span class="identifier">BOOST_category_tag</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="identifier">major</span><span class="special">,</span><span class="identifier">minor</span><span class="special">,</span><span class="identifier">patch</span><span class="special">)</span>
<span class="preprocessor"># else</span>
<span class="preprocessor"># define</span> <span class="identifier">BOOST_category_tag</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">)</span>
<span class="preprocessor"># endif</span>
<span class="preprocessor">#endif</span>
</pre>
<p>
We also need to provide the <code class="computeroutput"><span class="special">*</span><span class="identifier">_AVAILABLE</span></code> versions of the predef. And for
convenience we also want to provide a <code class="computeroutput"><span class="special">*</span><span class="identifier">_NAME</span></code> macro:
</p>
<pre class="programlisting"><span class="preprocessor">#if</span> <span class="identifier">BOOST_category_tag</span>
<span class="preprocessor"># define</span> <span class="identifier">BOOST_category_tag_AVAILABLE</span>
<span class="preprocessor">#endif</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_catagory_tag_NAME</span> <span class="string">"Name"</span>
</pre>
<p>
The testing of the predef macros is automated to generate checks for all the
defined predefs, whether detected or not. To do this we need to declare the
@ -142,7 +159,7 @@ Documentation about what is detected.
the test programs they expand out specially to create informational output:
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">test</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span>
<span class="identifier">BOOST_PREDEF_DECLARE_TEST</span><span class="special">(</span><span class="identifier">BOOST_category_tag</span><span class="special">,</span><span class="string">"Name"</span><span class="special">)</span>
<span class="identifier">BOOST_PREDEF_DECLARE_TEST</span><span class="special">(</span><span class="identifier">BOOST_category_tag</span><span class="special">,</span><span class="identifier">BOOST_category_tag_NAME</span><span class="special">)</span>
</pre>
<p>
And, of course, we last need to close out the include guard:
@ -164,7 +181,7 @@ Documentation about what is detected.
by compilers. For example the EDG compiler uses a simple 3-digit version macro
(M,N,P). It can be decomesed and defined as:
</p>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_CXX_EDG</span> <span class="identifier">BOOST_PREDEF_MAKE_N_N_N</span><span class="special">(</span><span class="identifier">__EDG_VERSION__</span><span class="special">)</span>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_CCOMP_EDG</span> <span class="identifier">BOOST_PREDEF_MAKE_N_N_N</span><span class="special">(</span><span class="identifier">__EDG_VERSION__</span><span class="special">)</span>
</pre>
<p>
The decomposition macros are split into three types: decimal decomposition,

View File

@ -18,12 +18,12 @@
<a name="predef.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a>
</h2></div></div></div>
<p>
This library defines a set of compiler, architecture, operating system, and
library version numbers from the information it can gather of C++ predefined
macros or those defined in generally available headers. The idea for this library
grew out of a proposal to extend the Boost Config library to provide more,
and consistent, information than the feature definitions it supports. What
follows is an edited version of that brief proposal.
This library defines a set of compiler, architecture, operating system, library,
and other version numbers from the information it can gather of C, C++, Objective
C, and Objective C++ predefined macros or those defined in generally available
headers. The idea for this library grew out of a proposal to extend the Boost
Config library to provide more, and consistent, information than the feature
definitions it supports. What follows is an edited version of that brief proposal.
</p>
<h4>
<a name="predef.introduction.h0"></a>
@ -63,18 +63,27 @@
<p>
The current Predef library is now, both an independent library, and expanded
in scope. It includes detection and definition of architectures, compilers,
languages, libraries, and operating systems. The key benefits are:
languages, libraries, operating systems, and endianness. The key benefits are:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Version numbers that are always defined so that one doesn't have to guard
with <code class="computeroutput"><span class="preprocessor">#ifdef</span></code>.
</li>
<li class="listitem">
Guard macros that can be used for <code class="computeroutput"><span class="preprocessor">#ifdef</span></code>
checks.
</li>
<li class="listitem">
All possible definitions are included with the single <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
so that it's friendly to precompiled header usage.
</li>
<li class="listitem">
Specific definitions can be included, ex. <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">/</span><span class="identifier">os</span><span class="special">/</span><span class="identifier">windows</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
for single checks.
</li>
<li class="listitem">
Predefs can be directly used in both preprocessor and compiler expressions
for comparison to other similarly defined values.
@ -155,7 +164,9 @@
</li>
<li class="listitem">
Along with the above, it might be good to add some user control as to which
headers are included with the top-level header.
headers are included with the top-level header. Although in the current
form of the library this is less of an issue as one can include the specific
headers one needs.
</li>
<li class="listitem">
Additionally, even if there is no auto-configure style option.. It would

View File

@ -22,7 +22,8 @@
<dt><span class="section"><a href="reference/boost_comp_compiler_macros.html"><code class="computeroutput"><span class="identifier">BOOST_COMP</span></code> compiler macros</a></span></dt>
<dt><span class="section"><a href="reference/boost_lang_language_standards_ma.html"><code class="computeroutput"><span class="identifier">BOOST_LANG</span></code> language standards macros</a></span></dt>
<dt><span class="section"><a href="reference/boost_lib_library_macros.html"><code class="computeroutput"><span class="identifier">BOOST_LIB</span></code> library macros</a></span></dt>
<dt><span class="section"><a href="reference/boost_os_operating_system_macros.html"><code class="computeroutput"><span class="identifier">BOOST_OS_</span></code> operating system macros</a></span></dt>
<dt><span class="section"><a href="reference/boost_os_operating_system_macros.html"><code class="computeroutput"><span class="identifier">BOOST_OS</span></code> operating system macros</a></span></dt>
<dt><span class="section"><a href="reference/other_macros.html">Other macros</a></span></dt>
<dt><span class="section"><a href="reference/version_definition_macros.html">Version definition
macros</a></span></dt>
</dl></div>

View File

@ -19,9 +19,11 @@
</h3></div></div></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h0"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_alpha_http_en_wikiped"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_alpha_http_en_wikiped"><code class="computeroutput"><span class="identifier">BOOST_ARCH_ALPHA</span></code>, DEC
Alpha</a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_alpha"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_alpha"><code class="computeroutput"><span class="identifier">BOOST_ARCH_ALPHA</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/DEC_Alpha" target="_top">DEC Alpha</a> architecture.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
@ -116,91 +118,6 @@
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h1"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_amd64_http_en_wikiped"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_amd64_http_en_wikiped"><code class="computeroutput"><span class="identifier">BOOST_ARCH_AMD64</span></code>, Advanced
Micro Devices AMD 64 architecture.</a>
</h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Symbol
</p>
</th>
<th>
<p>
Version
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__amd64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__amd64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__x86_64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__x86_64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_M_X64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h2"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_arm"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_arm"><code class="computeroutput"><span class="identifier">BOOST_ARCH_ARM</span></code></a>
</h5>
<p>
@ -299,6 +216,81 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h2"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_blackfin"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_blackfin"><code class="computeroutput"><span class="identifier">BOOST_ARCH_BLACKFIN</span></code></a>
</h5>
<p>
Blackfin Processors from Analog Devices.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Symbol
</p>
</th>
<th>
<p>
Version
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__bfin__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__BFIN__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">bfin</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BFIN</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h3"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_convex"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_convex"><code class="computeroutput"><span class="identifier">BOOST_ARCH_CONVEX</span></code></a>
</h5>
@ -400,105 +392,6 @@
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h4"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_ia64"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_ia64"><code class="computeroutput"><span class="identifier">BOOST_ARCH_IA64</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Ia64" target="_top">Intel IA-64</a> architecture.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Symbol
</p>
</th>
<th>
<p>
Version
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__ia64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_IA64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__IA64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__ia64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_M_IA64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__itanium__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h5"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_m68k"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_m68k"><code class="computeroutput"><span class="identifier">BOOST_ARCH_M68K</span></code></a>
</h5>
<p>
@ -765,7 +658,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h6"></a>
<a name="predef.reference.boost_arch_architecture_macros.h5"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_mips"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_mips"><code class="computeroutput"><span class="identifier">BOOST_ARCH_MIPS</span></code></a>
</h5>
<p>
@ -949,7 +842,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h7"></a>
<a name="predef.reference.boost_arch_architecture_macros.h6"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_parisk"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_parisk"><code class="computeroutput"><span class="identifier">BOOST_ARCH_PARISK</span></code></a>
</h5>
<p>
@ -1109,7 +1002,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h8"></a>
<a name="predef.reference.boost_arch_architecture_macros.h7"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_ppc"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_ppc"><code class="computeroutput"><span class="identifier">BOOST_ARCH_PPC</span></code></a>
</h5>
<p>
@ -1316,7 +1209,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h9"></a>
<a name="predef.reference.boost_arch_architecture_macros.h8"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_pyramid"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_pyramid"><code class="computeroutput"><span class="identifier">BOOST_ARCH_PYRAMID</span></code></a>
</h5>
<p>
@ -1353,7 +1246,7 @@
</tr></tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h10"></a>
<a name="predef.reference.boost_arch_architecture_macros.h9"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_rs6000"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_rs6000"><code class="computeroutput"><span class="identifier">BOOST_ARCH_RS6000</span></code></a>
</h5>
<p>
@ -1440,7 +1333,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h11"></a>
<a name="predef.reference.boost_arch_architecture_macros.h10"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_sparc"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_sparc"><code class="computeroutput"><span class="identifier">BOOST_ARCH_SPARC</span></code></a>
</h5>
<p>
@ -1515,7 +1408,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h12"></a>
<a name="predef.reference.boost_arch_architecture_macros.h11"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_sh"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_sh"><code class="computeroutput"><span class="identifier">BOOST_ARCH_SH</span></code></a>
</h5>
<p>
@ -1627,7 +1520,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h13"></a>
<a name="predef.reference.boost_arch_architecture_macros.h12"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_sys370"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_sys370"><code class="computeroutput"><span class="identifier">BOOST_ARCH_SYS370</span></code></a>
</h5>
<p>
@ -1678,7 +1571,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h14"></a>
<a name="predef.reference.boost_arch_architecture_macros.h13"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_sys390"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_sys390"><code class="computeroutput"><span class="identifier">BOOST_ARCH_SYS390</span></code></a>
</h5>
<p>
@ -1729,9 +1622,56 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h15"></a>
<a name="predef.reference.boost_arch_architecture_macros.h14"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_x86"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_x86"><code class="computeroutput"><span class="identifier">BOOST_ARCH_X86</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/X86" target="_top">Intel x86</a> architecture.
This is a category to indicate that either <code class="computeroutput"><span class="identifier">BOOST_ARCH_X86_32</span></code>
or <code class="computeroutput"><span class="identifier">BOOST_ARCH_X86_64</span></code> is detected.
</p>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h15"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_z"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_z"><code class="computeroutput"><span class="identifier">BOOST_ARCH_Z</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Z/Architecture" target="_top">z/Architecture</a>
architecture.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Symbol
</p>
</th>
<th>
<p>
Version
</p>
</th>
</tr></thead>
<tbody><tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__SYSC_ZARCH__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr></tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h16"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_x86_32"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_x86_32"><code class="computeroutput"><span class="identifier">BOOST_ARCH_X86_32</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/X86" target="_top">Intel x86</a> architecture:
If available versions [3-6] are specifically detected.
@ -1961,12 +1901,11 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_arch_architecture_macros.h16"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_z"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_z"><code class="computeroutput"><span class="identifier">BOOST_ARCH_Z</span></code></a>
<a name="predef.reference.boost_arch_architecture_macros.h17"></a>
<span class="phrase"><a name="predef.reference.boost_arch_architecture_macros.boost_arch_x86_64"></a></span><a class="link" href="boost_arch_architecture_macros.html#predef.reference.boost_arch_architecture_macros.boost_arch_x86_64"><code class="computeroutput"><span class="identifier">BOOST_ARCH_X86_64</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Z/Architecture" target="_top">z/Architecture</a>
architecture.
<a href="http://en.wikipedia.org/wiki/Ia64" target="_top">Intel IA-64</a> architecture.
</p>
<div class="informaltable"><table class="table">
<colgroup>
@ -1985,10 +1924,11 @@
</p>
</th>
</tr></thead>
<tbody><tr>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__SYSC_ZARCH__</span></code>
<code class="computeroutput"><span class="identifier">__x86_64</span></code>
</p>
</td>
<td>
@ -1996,7 +1936,128 @@
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr></tbody>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__x86_64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__ia64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_IA64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__IA64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__ia64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_M_IA64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__itanium__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__amd64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__amd64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">_M_X64</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

View File

@ -605,7 +605,7 @@
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_gccxml"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_gccxml"><code class="computeroutput"><span class="identifier">BOOST_COMP_GCCXML</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/XXX" target="_top">GCC XML</a> compiler.
<a href="http://www.gccxml.org/" target="_top">GCC XML</a> compiler.
</p>
<div class="informaltable"><table class="table">
<colgroup>
@ -1279,84 +1279,6 @@
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h21"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_mingw"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_mingw"><code class="computeroutput"><span class="identifier">BOOST_COMP_MINGW</span></code></a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/MinGW" target="_top">MinGW</a> compiler. Version
number available as major, minor, and patch.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Symbol
</p>
</th>
<th>
<p>
Version
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__MINGW32__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__MINGW64__</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>detection</strong></span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__MINGW64_VERSION_MAJOR</span></code>,
<code class="computeroutput"><span class="identifier">__MINGW64_VERSION_MINOR</span></code>
</p>
</td>
<td>
<p>
V.R.0
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">__MINGW32_VERSION_MAJOR</span></code>,
<code class="computeroutput"><span class="identifier">__MINGW32_VERSION_MINOR</span></code>
</p>
</td>
<td>
<p>
V.R.0
</p>
</td>
</tr>
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h22"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_mpw"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_mpw"><code class="computeroutput"><span class="identifier">BOOST_COMP_MPW</span></code></a>
</h5>
<p>
@ -1432,7 +1354,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h23"></a>
<a name="predef.reference.boost_comp_compiler_macros.h22"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_palm"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_palm"><code class="computeroutput"><span class="identifier">BOOST_COMP_PALM</span></code></a>
</h5>
<p>
@ -1483,7 +1405,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h24"></a>
<a name="predef.reference.boost_comp_compiler_macros.h23"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_pgi"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_pgi"><code class="computeroutput"><span class="identifier">BOOST_COMP_PGI</span></code></a>
</h5>
<p>
@ -1535,7 +1457,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h25"></a>
<a name="predef.reference.boost_comp_compiler_macros.h24"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_sgi"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_sgi"><code class="computeroutput"><span class="identifier">BOOST_COMP_SGI</span></code></a>
</h5>
<p>
@ -1611,7 +1533,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h26"></a>
<a name="predef.reference.boost_comp_compiler_macros.h25"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_sunpro"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_sunpro"><code class="computeroutput"><span class="identifier">BOOST_COMP_SUNPRO</span></code></a>
</h5>
<p>
@ -1687,7 +1609,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h27"></a>
<a name="predef.reference.boost_comp_compiler_macros.h26"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_tendra"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_tendra"><code class="computeroutput"><span class="identifier">BOOST_COMP_TENDRA</span></code></a>
</h5>
<p>
@ -1725,7 +1647,7 @@
</tr></tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h28"></a>
<a name="predef.reference.boost_comp_compiler_macros.h27"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_msvc"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_msvc"><code class="computeroutput"><span class="identifier">BOOST_COMP_MSVC</span></code></a>
</h5>
<p>
@ -1789,7 +1711,7 @@
</tbody>
</table></div>
<h5>
<a name="predef.reference.boost_comp_compiler_macros.h29"></a>
<a name="predef.reference.boost_comp_compiler_macros.h28"></a>
<span class="phrase"><a name="predef.reference.boost_comp_compiler_macros.boost_comp_watcom"></a></span><a class="link" href="boost_comp_compiler_macros.html#predef.reference.boost_comp_compiler_macros.boost_comp_watcom"><code class="computeroutput"><span class="identifier">BOOST_COMP_WATCOM</span></code></a>
</h5>
<p>

View File

@ -7,7 +7,7 @@
<link rel="home" href="../../index.html" title="Predef 1.0">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="boost_lang_language_standards_ma.html" title="BOOST_LANG language standards macros">
<link rel="next" href="boost_os_operating_system_macros.html" title="BOOST_OS_ operating system macros">
<link rel="next" href="boost_os_operating_system_macros.html" title="BOOST_OS operating system macros">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">

File diff suppressed because it is too large Load Diff

View File

@ -6,11 +6,12 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Predef 1.0">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="boost_os_operating_system_macros.html" title="BOOST_OS_ operating system macros">
<link rel="prev" href="other_macros.html" title="Other macros">
<link rel="next" href="../acknoledgements.html" title="Acknoledgements">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
<a accesskey="p" href="boost_os_operating_system_macros.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a>
<a accesskey="p" href="other_macros.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../acknoledgements.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section predef_reference_version_definition_macros">
<div class="titlepage"><div><div><h3 class="title">
@ -177,7 +178,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost_os_operating_system_macros.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a>
<a accesskey="p" href="other_macros.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../acknoledgements.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -32,25 +32,29 @@
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_ARCHITECTURE_</span></code>for
system/CPU architecture one is compiling for.
<code class="computeroutput"><span class="identifier">BOOST_ARCH_</span></code>for system/CPU
architecture one is compiling for.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_CXX_</span></code> for the compiler
<code class="computeroutput"><span class="identifier">BOOST_COMP_</span></code> for the compiler
one is using.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_LANGUAGE_</span></code> for language
<code class="computeroutput"><span class="identifier">BOOST_LANG_</span></code> for language
standards one is compiling against.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_LIBC_</span></code> and <code class="computeroutput"><span class="identifier">BOOST_LIBSTD_</span></code> for the C and C++ standard
<code class="computeroutput"><span class="identifier">BOOST_LIB_C_</span></code> and <code class="computeroutput"><span class="identifier">BOOST_LIB_STD_</span></code> for the C and C++ standard
library in use.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_OS_</span></code> for the operating
system we are compiling to.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_ENDIAN_</span></code> for endianness
of the os and architecture combination.
</li>
</ul></div>
<div class="note"><table border="0" summary="Note">
<tr>
@ -74,7 +78,7 @@
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">BOOST_CXX_GNUC</span> <span class="special">&gt;=</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">4</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">))</span>
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">BOOST_COMP_GNUC</span> <span class="special">&gt;=</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">4</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">))</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"GCC compiler is at least version 4.0.0"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="keyword">else</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"GCC compiler is at older than version 4.0.0, or not a GCC compiler"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
@ -84,7 +88,7 @@
<p>
As you might notice above the <code class="computeroutput"><span class="keyword">else</span></code>
clause also covers the case where the particular compiler is not detected.
But one can make the test specifically test for the detection. All predef definitions
But one can make the test also test for the detection. All predef definitions
are defined as a zero (0) expression when not detected. Hence one could use
the detection with a natural single condition. For example:
</p>
@ -93,7 +97,7 @@
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">BOOST_CXX_GNUC</span><span class="special">)</span>
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">BOOST_COMP_GNUC</span><span class="special">)</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"This is GNU GCC!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="keyword">else</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Not GNU GCC."</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
@ -107,8 +111,8 @@
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
<span class="preprocessor">#if</span> <span class="identifier">BOOST_CXX_GNUC</span>
<span class="preprocessor">#if</span> <span class="identifier">BOOST_CXX_GNUC</span> <span class="special">&gt;=</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">4</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">)</span>
<span class="preprocessor">#if</span> <span class="identifier">BOOST_COMP_GNUC</span>
<span class="preprocessor">#if</span> <span class="identifier">BOOST_COMP_GNUC</span> <span class="special">&gt;=</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">4</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">)</span>
<span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">the_compiler</span> <span class="special">=</span> <span class="string">"GNU GCC, of at least version 4."</span>
<span class="preprocessor">#else</span>
<span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">the_compiler</span> <span class="special">=</span> <span class="string">"GNU GCC, less than version 4."</span>
@ -123,6 +127,18 @@
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
In addition, for each version macro defined there is a <code class="computeroutput"><span class="special">*</span><span class="identifier">_AVAILABLE</span></code> macro defined only when the particular
aspect is detected. I.e. a definition equivalent to:
</p>
<pre class="programlisting"><span class="preprocessor">#if</span> <span class="identifier">BOOST_PREDEF_ABC</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_PREDEF_ABC_AVAILABLE</span>
<span class="preprocessor">#endif</span>
</pre>
<p>
Also for each aspect there is a macro defined with a descriptive name of what
the detection is.
</p>
<h4>
<a name="predef.using_the_predefs.h0"></a>
<span class="phrase"><a name="predef.using_the_predefs.using_the_boost_version_number_m"></a></span><a class="link" href="using_the_predefs.html#predef.using_the_predefs.using_the_boost_version_number_m">Using the

View File

@ -18,12 +18,12 @@ Boost C++ Libraries.]
[section Introduction]
This library defines a set of compiler, architecture, operating system,
and library version numbers from the information it can gather of C++
predefined macros or those defined in generally available headers. The
idea for this library grew out of a proposal to extend the Boost Config
library to provide more, and consistent, information than the feature
definitions it supports. What follows is an edited version of that brief
proposal.
library, and other version numbers from the information it can gather of
C, C++, Objective C, and Objective C++ predefined macros or those defined
in generally available headers. The idea for this library grew out of a
proposal to extend the Boost Config library to provide more, and consistent,
information than the feature definitions it supports. What follows is
an edited version of that brief proposal.
[heading Proposal]
@ -51,12 +51,15 @@ consistently represent their version. This includes:
The current Predef library is now, both an independent library, and expanded
in scope. It includes detection and definition of architectures, compilers,
languages, libraries, and operating systems. The key benefits are:
languages, libraries, operating systems, and endianness. The key benefits are:
* Version numbers that are always defined so that one doesn't have to guard
with `#ifdef`.
* Guard macros that can be used for `#ifdef` checks.
* All possible definitions are included with the single `#include <boost/predef.h>`
so that it's friendly to precompiled header usage.
* Specific definitions can be included, ex. `#include <boost/predef/os/windows.h>`
for single checks.
* Predefs can be directly used in both preprocessor and compiler expressions
for comparison to other similarly defined values.
* The headers are usable from multiple languages, that support the C preprocessor.
@ -103,7 +106,9 @@ done:
interesting to add something like auto-configuration predefs. This way we can
add definitions for user specific libraries and features.
* Along with the above, it might be good to add some user control as to which
headers are included with the top-level header.
headers are included with the top-level header. Although in the current
form of the library this is less of an issue as one can include the
specific headers one needs.
* Additionally, even if there is no auto-configure style option.. It would be
good to add optionally included headers so that user can get consistent
version number definitions for libraries they use.
@ -133,12 +138,13 @@ the particular item is not detected, and to a /positive/ value if it
is detected. The predef macros fall onto five categories each with
macros of a particular prefix:
* `BOOST_ARCHITECTURE_`for system/CPU architecture one is compiling for.
* `BOOST_CXX_` for the compiler one is using.
* `BOOST_LANGUAGE_` for language standards one is compiling against.
* `BOOST_LIBC_` and `BOOST_LIBSTD_` for the C and C++ standard library
* `BOOST_ARCH_`for system/CPU architecture one is compiling for.
* `BOOST_COMP_` for the compiler one is using.
* `BOOST_LANG_` for language standards one is compiling against.
* `BOOST_LIB_C_` and `BOOST_LIB_STD_` for the C and C++ standard library
in use.
* `BOOST_OS_` for the operating system we are compiling to.
* `BOOST_ENDIAN_` for endianness of the os and architecture combination.
[note The detected definitions are for the configuration one is targeting
during the compile. In particular in a cross-compile this means the target
@ -154,7 +160,7 @@ a choice based on the version of the GCC C++ compiler one would:
int main()
{
if (BOOST_CXX_GNUC >= BOOST_VERSION_NUMBER(4,0,0))
if (BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(4,0,0))
std::cout << "GCC compiler is at least version 4.0.0" << std::endl;
else
std::cout << "GCC compiler is at older than version 4.0.0, or not a GCC compiler" << std::endl;
@ -164,7 +170,7 @@ a choice based on the version of the GCC C++ compiler one would:
As you might notice above the `else` clause also covers the case where
the particular compiler is not detected. But one can make the test
specifically test for the detection. All predef definitions are defined
also test for the detection. All predef definitions are defined
as a zero (0) expression when not detected. Hence one could use the
detection with a natural single condition. For example:
@ -174,7 +180,7 @@ detection with a natural single condition. For example:
int main()
{
if (BOOST_CXX_GNUC)
if (BOOST_COMP_GNUC)
std::cout << "This is GNU GCC!" << std::endl;
else
std::cout << "Not GNU GCC." << std::endl;
@ -189,8 +195,8 @@ from the preprocessor:
#include <boost/predef.h>
#include <iostream>
#if BOOST_CXX_GNUC
#if BOOST_CXX_GNUC >= BOOST_VERSION_NUMBER(4,0,0)
#if BOOST_COMP_GNUC
#if BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(4,0,0)
const char * the_compiler = "GNU GCC, of at least version 4."
#else
const char * the_compiler = "GNU GCC, less than version 4."
@ -206,6 +212,19 @@ from the preprocessor:
}
``
In addition, for each version macro defined there is a
`*_AVAILABLE` macro defined only when the particular aspect is
detected. I.e. a definition equivalent to:
``
#if BOOST_PREDEF_ABC
#define BOOST_PREDEF_ABC_AVAILABLE
#endif
``
Also for each aspect there is a macro defined with a descriptive
name of what the detection is.
[heading Using the `BOOST_VERSION_NUMBER` macro]
All the predefs are defined to be a use of the `BOOST_VERSION_NUMBER` macro.
@ -264,6 +283,8 @@ All predefs need to follow a set of requirements:
* The predef must, by default, be defined to `BOOST_VERSION_NUMBER(0,0,1)`
when the predef is detected.
* If possible, the predef will be defined as the version number detected.
* The predef must define `*_AVAILABLE` macros.
* The predef must define a symbolic constant string name macro.
* The predef must declare itself, after being defined, for the testing
system.
@ -335,15 +356,26 @@ to minimally indicate that the predef was detected:
``
#if (condition_a)
#undef BOOST_category_tag
#if (condition_b)
#define BOOST_category_tag BOOST_VERSION_NUMBER(major,minor,patch)
#else
#define BOOST_category_tag BOOST_VERSION_NUMBER(0,0,1)
#endif
# undef BOOST_category_tag
# if (condition_b)
# define BOOST_category_tag BOOST_VERSION_NUMBER(major,minor,patch)
# else
# define BOOST_category_tag BOOST_VERSION_NUMBER(0,0,1)
# endif
#endif
``
We also need to provide the `*_AVAILABLE` versions of the predef. And
for convenience we also want to provide a `*_NAME` macro:
``
#if BOOST_category_tag
# define BOOST_category_tag_AVAILABLE
#endif
#define BOOST_catagory_tag_NAME "Name"
``
The testing of the predef macros is automated to generate checks for all
the defined predefs, whether detected or not. To do this we need to
declare the predef to the test system. This declaration is empty for
@ -352,7 +384,7 @@ to create informational output:
``
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_category_tag,"Name")
BOOST_PREDEF_DECLARE_TEST(BOOST_category_tag,BOOST_category_tag_NAME)
``
And, of course, we last need to close out the include guard:
@ -375,7 +407,7 @@ uses a simple 3-digit version macro (M,N,P). It can be decomesed
and defined as:
``
#define BOOST_CXX_EDG BOOST_PREDEF_MAKE_N_N_N(__EDG_VERSION__)
#define BOOST_CCOMP_EDG BOOST_PREDEF_MAKE_N_N_N(__EDG_VERSION__)
``
The decomposition macros are split into three types: decimal
@ -393,6 +425,7 @@ and "Y", "M", "D" for dates.
[section `BOOST_ARCH` architecture macros]
[include ../include/boost/predef/architecture/*.h]
[include ../include/boost/predef/architecture/x86/*.h]
[endsect]
[section `BOOST_COMP` compiler macros]
@ -404,12 +437,17 @@ and "Y", "M", "D" for dates.
[endsect]
[section `BOOST_LIB` library macros]
[include ../include/boost/predef/library/*/*.h]
[include ../include/boost/predef/library/c/*.h]
[include ../include/boost/predef/library/std/*.h]
[endsect]
[section `BOOST_OS_` operating system macros]
[section `BOOST_OS` operating system macros]
[include ../include/boost/predef/os/*.h]
[include ../include/boost/predef/os/*/*.h]
[include ../include/boost/predef/os/bsd/*.h]
[endsect]
[section Other macros]
[include ../include/boost/predef/other/*.h]
[endsect]
[section Version definition macros]
@ -418,3 +456,22 @@ and "Y", "M", "D" for dates.
[endsect]
[endsect]
[section Acknoledgements]
The comprehensiveness of this library would not be
possible without the existance of the indispensible
resource that is the
[@http://sourceforge.net/p/predef/ Pre-defined C/C++ Compiler Macros]
Project. It was, and continues to be, the primary source
of the definitions that make up this library. Thanks
to Bjorn Reese and all the volunteers that make that
resource possible.
This library would be an incoherent mess if it weren't for
Boost community that provided invaluable feedback for the
eight years that it took to polish into a useable form.
In particular I would like to thank: ...
[endsect]

View File

@ -13,6 +13,6 @@ http://www.boost.org/LICENSE_1_0.txt)
#include <boost/predef/compiler.h>
#include <boost/predef/library.h>
#include <boost/predef/os.h>
#include <boost/predef/endian.h>
#include <boost/predef/other.h>
#endif

View File

@ -9,11 +9,9 @@ http://www.boost.org/LICENSE_1_0.txt)
#define BOOST_PREDEF_ARCHITECTURE_H
#include <boost/predef/architecture/alpha.h>
#include <boost/predef/architecture/amd64.h>
#include <boost/predef/architecture/arm.h>
#include <boost/predef/architecture/blackfin.h>
#include <boost/predef/architecture/convex.h>
#include <boost/predef/architecture/ia64.h>
#include <boost/predef/architecture/m68k.h>
#include <boost/predef/architecture/mips.h>
#include <boost/predef/architecture/parisc.h>

View File

@ -12,7 +12,9 @@ http://www.boost.org/LICENSE_1_0.txt)
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_ALPHA`, [@http://en.wikipedia.org/wiki/DEC_Alpha DEC Alpha]]
[heading `BOOST_ARCH_ALPHA`]
[@http://en.wikipedia.org/wiki/DEC_Alpha DEC Alpha] architecture.
[table
[[__predef_symbol__] [__predef_version__]]

View File

@ -1,47 +0,0 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_AMD64_H
#define BOOST_PREDEF_ARCHITECTURE_AMD64_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_AMD64`, [@http://en.wikipedia.org/wiki/Amd64 Advanced Micro Devices AMD 64] architecture.]
[table
[[__predef_symbol__] [__predef_version__]]
[[`__amd64__`] [__predef_detection__]]
[[`__amd64`] [__predef_detection__]]
[[`__x86_64__`] [__predef_detection__]]
[[`__x86_64`] [__predef_detection__]]
[[`_M_X64`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_AMD64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__amd64__) || defined(__amd64) || \
defined(__x86_64__) || defined(__x86_64) || \
defined(_M_X64)
# undef BOOST_ARCH_AMD64
# define BOOST_ARCH_AMD64 BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_AMD64
# define BOOST_ARCH_AMD64_AVAILABLE
#endif
#define BOOST_ARCH_AMD64_NAME "Advanced Micro Devices AMD 64"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_AMD64,BOOST_ARCH_AMD64_NAME)
#endif

View File

@ -1,50 +0,0 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_IA64_H
#define BOOST_PREDEF_ARCHITECTURE_IA64_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_IA64`]
[@http://en.wikipedia.org/wiki/Ia64 Intel IA-64] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__ia64__`] [__predef_detection__]]
[[`_IA64`] [__predef_detection__]]
[[`__IA64__`] [__predef_detection__]]
[[`__ia64`] [__predef_detection__]]
[[`_M_IA64`] [__predef_detection__]]
[[`__itanium__`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__ia64__) || defined(_IA64) || \
defined(__IA64__) || defined(__ia64) || \
defined(_M_IA64) || defined(__itanium__)
# undef BOOST_ARCH_IA64
# define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_IA64
# define BOOST_ARCH_IA64_AVAILABLE
#endif
#define BOOST_ARCH_IA64_NAME "Intel IA-64"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_IA64,BOOST_ARCH_IA64_NAME)
#endif

View File

@ -8,69 +8,22 @@ http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_PREDEF_ARCHITECTURE_X86_H
#define BOOST_PREDEF_ARCHITECTURE_X86_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
#define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#include <boost/predef/architecture/x86/32.h>
#include <boost/predef/architecture/x86/64.h>
/*`
[heading `BOOST_ARCH_X86`]
[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture:
If available versions \[3-6\] are specifically detected.
[table
[[__predef_symbol__] [__predef_version__]]
[[`i386`] [__predef_detection__]]
[[`__i386__`] [__predef_detection__]]
[[`__i486__`] [__predef_detection__]]
[[`__i586__`] [__predef_detection__]]
[[`__i686__`] [__predef_detection__]]
[[`__i386`] [__predef_detection__]]
[[`_M_IX86`] [__predef_detection__]]
[[`_X86_`] [__predef_detection__]]
[[`__THW_INTEL__`] [__predef_detection__]]
[[`__I86__`] [__predef_detection__]]
[[`__INTEL__`] [__predef_detection__]]
[[`__I86__`] [V.0.0]]
[[`_M_IX86`] [V.0.0]]
[[`__i686__`] [6.0.0]]
[[`__i586__`] [5.0.0]]
[[`__i486__`] [4.0.0]]
[[`__i386__`] [3.0.0]]
]
[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture. This is
a category to indicate that either `BOOST_ARCH_X86_32` or
`BOOST_ARCH_X86_64` is detected.
*/
#if defined(i386) || defined(__i386__) || \
defined(__i486__) || defined(__i586__) || \
defined(__i686__) || defined(__i386) || \
defined(_M_IX86) || defined(_X86_) || \
defined(__THW_INTEL__) || defined(__I86__) || \
defined(__INTEL__)
#define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if BOOST_ARCH_X86_32 || BOOST_ARCH_X86_64
# undef BOOST_ARCH_X86
# if !defined(BOOST_ARCH_X86) && defined(__I86__)
# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER(__I86__,0,0)
# endif
# if !defined(BOOST_ARCH_X86) && defined(_M_IX86)
# define BOOST_ARCH_X86 BOOST_PREDEF_MAKE_10_VV00(_M_IX86)
# endif
# if !defined(BOOST_ARCH_X86) && defined(__i686__)
# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER(6,0,0)
# endif
# if !defined(BOOST_ARCH_X86) && defined(__i586__)
# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER(5,0,0)
# endif
# if !defined(BOOST_ARCH_X86) && defined(__i486__)
# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER(4,0,0)
# endif
# if !defined(BOOST_ARCH_X86) && defined(__i386__)
# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER(3,0,0)
# endif
# if !defined(BOOST_ARCH_X86)
# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_AVAILABLE
# endif
# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_X86
@ -82,5 +35,4 @@ If available versions \[3-6\] are specifically detected.
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86,BOOST_ARCH_X86_NAME)
#endif

View File

@ -0,0 +1,87 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_X86_32_H
#define BOOST_PREDEF_ARCHITECTURE_X86_32_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_X86_32`]
[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture:
If available versions \[3-6\] are specifically detected.
[table
[[__predef_symbol__] [__predef_version__]]
[[`i386`] [__predef_detection__]]
[[`__i386__`] [__predef_detection__]]
[[`__i486__`] [__predef_detection__]]
[[`__i586__`] [__predef_detection__]]
[[`__i686__`] [__predef_detection__]]
[[`__i386`] [__predef_detection__]]
[[`_M_IX86`] [__predef_detection__]]
[[`_X86_`] [__predef_detection__]]
[[`__THW_INTEL__`] [__predef_detection__]]
[[`__I86__`] [__predef_detection__]]
[[`__INTEL__`] [__predef_detection__]]
[[`__I86__`] [V.0.0]]
[[`_M_IX86`] [V.0.0]]
[[`__i686__`] [6.0.0]]
[[`__i586__`] [5.0.0]]
[[`__i486__`] [4.0.0]]
[[`__i386__`] [3.0.0]]
]
*/
#define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(i386) || defined(__i386__) || \
defined(__i486__) || defined(__i586__) || \
defined(__i686__) || defined(__i386) || \
defined(_M_IX86) || defined(_X86_) || \
defined(__THW_INTEL__) || defined(__I86__) || \
defined(__INTEL__)
# undef BOOST_ARCH_X86_32
# if !defined(BOOST_ARCH_X86_32) && defined(__I86__)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(__I86__,0,0)
# endif
# if !defined(BOOST_ARCH_X86_32) && defined(_M_IX86)
# define BOOST_ARCH_X86_32 BOOST_PREDEF_MAKE_10_VV00(_M_IX86)
# endif
# if !defined(BOOST_ARCH_X86_32) && defined(__i686__)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(6,0,0)
# endif
# if !defined(BOOST_ARCH_X86_32) && defined(__i586__)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(5,0,0)
# endif
# if !defined(BOOST_ARCH_X86_32) && defined(__i486__)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(4,0,0)
# endif
# if !defined(BOOST_ARCH_X86_32) && defined(__i386__)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(3,0,0)
# endif
# if !defined(BOOST_ARCH_X86_32)
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_ARCH_X86_32
# define BOOST_ARCH_X86_32_AVAILABLE
#endif
#define BOOST_ARCH_X86_32_NAME "Intel x86-32"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_32,BOOST_ARCH_X86_32_NAME)
#include <boost/predef/architecture/x86.h>
#endif

View File

@ -0,0 +1,59 @@
/*
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_ARCHITECTURE_X86_64_H
#define BOOST_PREDEF_ARCHITECTURE_X86_64_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_ARCH_X86_64`]
[@http://en.wikipedia.org/wiki/Ia64 Intel IA-64] architecture.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__x86_64`] [__predef_detection__]]
[[`__x86_64__`] [__predef_detection__]]
[[`__ia64__`] [__predef_detection__]]
[[`_IA64`] [__predef_detection__]]
[[`__IA64__`] [__predef_detection__]]
[[`__ia64`] [__predef_detection__]]
[[`_M_IA64`] [__predef_detection__]]
[[`__itanium__`] [__predef_detection__]]
[[`__amd64__`] [__predef_detection__]]
[[`__amd64`] [__predef_detection__]]
[[`_M_X64`] [__predef_detection__]]
]
*/
#define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__x86_64) || defined(__x86_64__) || \
defined(__ia64__) || defined(_IA64) || \
defined(__IA64__) || defined(__ia64) || \
defined(_M_IA64) || defined(__itanium__) || \
defined(__amd64__) || defined(__amd64) || \
defined(_M_X64)
# undef BOOST_ARCH_X86_64
# define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_ARCH_X86_64
# define BOOST_ARCH_X86_64_AVAILABLE
#endif
#define BOOST_ARCH_X86_64_NAME "Intel x86-64"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_64,BOOST_ARCH_X86_64_NAME)
#include <boost/predef/architecture/x86.h>
#endif

View File

@ -1,5 +1,5 @@
/*
Copyright Redshift Software, Inc. 2008-2012
Copyright Redshift Software, Inc. 2008-2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
@ -29,7 +29,6 @@ http://www.boost.org/LICENSE_1_0.txt)
#include <boost/predef/compiler/metaware.h>
#include <boost/predef/compiler/metrowerks.h>
#include <boost/predef/compiler/microtec.h>
#include <boost/predef/compiler/mingw.h>
#include <boost/predef/compiler/mpw.h>
#include <boost/predef/compiler/palm.h>
#include <boost/predef/compiler/pgi.h>

View File

@ -14,7 +14,7 @@ http://www.boost.org/LICENSE_1_0.txt)
/*`
[heading `BOOST_COMP_GCCXML`]
[@http://en.wikipedia.org/wiki/XXX GCC XML] compiler.
[@http://www.gccxml.org/ GCC XML] compiler.
[table
[[__predef_symbol__] [__predef_version__]]
@ -39,5 +39,4 @@ http://www.boost.org/LICENSE_1_0.txt)
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GCCXML,BOOST_COMP_GCCXML_NAME)
#endif

View File

@ -10,11 +10,11 @@ http://www.boost.org/LICENSE_1_0.txt)
#include <boost/predef/endian.h>
#if BOOST_PREDEF_ENDIAN_BIG_BYTE
#if BOOST_ENDIAN_BIG_BYTE
# define BOOST_BIG_ENDIAN
# define BOOST_BYTE_ORDER 4321
#endif
#if BOOST_PREDEF_ENDIAN_LITTLE_BYTE
#if BOOST_ENDIAN_LITTLE_BYTE
# define BOOST_LITTLE_ENDIAN
# define BOOST_BYTE_ORDER 1234
#endif

View File

@ -0,0 +1,15 @@
/*
Copyright Redshift Software, Inc. 2013
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_OTHER_H
#define BOOST_PREDEF_OTHER_H
#include <boost/predef/other/endian.h>
#include <boost/predef/other/mingw.h>
/*#include <boost/predef/other/.h>*/
#endif

View File

@ -12,9 +12,9 @@ http://www.boost.org/LICENSE_1_0.txt)
#include <boost/predef/make.h>
/*`
[heading `BOOST_COMP_MINGW`]
[heading `BOOST_PLAT_MINGW`]
[@http://en.wikipedia.org/wiki/MinGW MinGW] compiler.
[@http://en.wikipedia.org/wiki/MinGW MinGW] platform.
Version number available as major, minor, and patch.
[table
@ -28,32 +28,32 @@ Version number available as major, minor, and patch.
]
*/
#define BOOST_COMP_MINGW BOOST_VERSION_NUMBER_NOT_AVAILABLE
#define BOOST_PLAT_MINGW BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__MINGW32__) || defined(__MINGW64__)
# include <_mingw.h>
# undef BOOST_COMP_MINGW
# if !defined(BOOST_COMP_MINGW) && (defined(__MINGW64_VERSION_MAJOR) && defined(__MINGW64_VERSION_MINOR))
# define BOOST_COMP_MINGW \
# undef BOOST_PLAT_MINGW
# if !defined(BOOST_PLAT_MINGW) && (defined(__MINGW64_VERSION_MAJOR) && defined(__MINGW64_VERSION_MINOR))
# define BOOST_PLAT_MINGW \
BOOST_VERSION_NUMBER(__MINGW64_VERSION_MAJOR,__MINGW64_VERSION_MINOR,0)
# endif
# if !defined(BOOST_COMP_MINGW) && (defined(__MINGW32_VERSION_MAJOR) && defined(__MINGW32_VERSION_MINOR))
# define BOOST_COMP_MINGW \
# if !defined(BOOST_PLAT_MINGW) && (defined(__MINGW32_VERSION_MAJOR) && defined(__MINGW32_VERSION_MINOR))
# define BOOST_PLAT_MINGW \
BOOST_VERSION_NUMBER(__MINGW32_MAJOR_VERSION,__MINGW32_MINOR_VERSION,0)
# endif
# if !defined(BOOST_COMP_MINGW)
# define BOOST_COMP_MINGW BOOST_VERSION_NUMBER_AVAILABLE
# if !defined(BOOST_PLAT_MINGW)
# define BOOST_PLAT_MINGW BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_COMP_MINGW
# define BOOST_COMP_MINGW_AVAILABLE
#if BOOST_PLAT_MINGW
# define BOOST_PLAT_MINGW_AVAILABLE
#endif
#define BOOST_COMP_MINGW_NAME "MinGW"
#define BOOST_PLAT_MINGW_NAME "MinGW"
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MINGW,BOOST_COMP_MINGW_NAME)
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW,BOOST_PLAT_MINGW_NAME)
#endif