diff --git a/.gitignore b/.gitignore index 5e56e04..7553496 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /bin +/boost-build.jam diff --git a/doc/build.jam b/doc/build.jam index 937bc2b..3965a08 100644 --- a/doc/build.jam +++ b/doc/build.jam @@ -1,9 +1,10 @@ -# Copyright Redshift Software, Inc. 2011 +# Copyright Rene Rivera 2011 # 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) using quickbook ; +using boostbook ; import path ; if ! $(BOOST_ROOT) diff --git a/doc/history.qbk b/doc/history.qbk new file mode 100644 index 0000000..b2fb81e --- /dev/null +++ b/doc/history.qbk @@ -0,0 +1,27 @@ +[/ +Copyright 2014 Rene Rivera +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) +] + +[section History] + +[heading 1.1] + +* Addition of `BOOST_PLAT_*` platform definitions for MinGW and + Windows platform variants. +* Detection of ARM architecture for Windows compilers to target + mobile devices of WIndows 8. +* Improved ARM detection for 64 bit ARM. +* Added detection of iOS an an operating system. +* Improved detection of endianess on some platforms. +* Addition of exclusive plus emulated definitions for platform + and compiler detection. + +[warning The big change for this version is the restructuring of the +definitions to avoid duplicate definitions in one category. That is, only one +`BOOST_OS_*`, `BOOST_COMP_*`, and `BOOST_PLAT_*` variant will be detected +(except for sub-categories).] + +[endsect] diff --git a/doc/html/.gitignore b/doc/html/.gitignore index f723e33..98336bd 100644 --- a/doc/html/.gitignore +++ b/doc/html/.gitignore @@ -1 +1,4 @@ /standalone_HTML.manifest +/docutils.css +/minimal.css +/reference.css diff --git a/doc/html/index.html b/doc/html/index.html index 4bf72b6..024453d 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -1,10 +1,10 @@
-Copyright © 2005 Rene Rivera
Copyright © 2008-2013 Redshift Software Inc
Copyright © 2005, 2008-2014 Rene Rivera
Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -41,16 +40,19 @@
BOOST_LANG
language standards macrosBOOST_LIB
library macrosBOOST_OS
operating system macrosBOOST_PLAT
platform macrosLast revised: October 15, 2013 at 04:40:06 GMT |
+Last revised: June 04, 2014 at 03:28:01 GMT |
- |
BOOST_VERSION_NUMBER(0,0,0)
.
+ The predef must, by default, be defined as BOOST_VERSION_NUMBER_NOT_AVAILABLE
.
BOOST_VERSION_NUMBER(0,0,1)
when the predef is detected.
+ The predef must, by default, be defined to BOOST_VERSION_NUMBER_AVAILABLE
+ when the predef is detected.
*_AVAILABLE
- macros.
+ macros as needed.
*_EMULATED
macros to indicate that it
+ was previously detected by another header and is being "emulated"
+ by the system. Note that the *_AVAILABLE
macros must still be defined
+ in this situation.
+ And there are some extra guidelines that predef headers should follow: @@ -97,6 +108,12 @@ http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PREDEF_category_tag_H #define BOOST_PREDEF_category_tag_H +
+ If the detection depends on the detection of another predef you should include + those headers here. +
+#include <boost/predef/CATEGORY_TAG/DEPENDENCY.h> +
Depending on how you are defining the predef you will at minimum have to include
the version_number.h
header. But you might also want to include
@@ -120,7 +137,7 @@ http://www.boost.org/LICENSE_1_0.txt)
Documentation about what is detected.
*/
-#define BOOST_category_tag BOOST_VERSION_NUMBER(0,0,0)
+#define BOOST_category_tag BOOST_VERSION_NUMBER_NOT_AVAILABLE
Next is the detection and definition of the particular predef. The structure
@@ -130,27 +147,29 @@ Documentation about what is detected.
BOOST_category_tag" which undefines
the zero-value default. The rest is up to the you how to do the checks for
defining the version. But at minimum it must "#define
- BOOST_category_tag BOOST_VERSION_NUMBER(0,0,1)
" as the fallback to minimally indicate
- that the predef was detected:
+ BOOST_category_tag BOOST_VERSION_NUMBER_AVAILABLE"
+ as the fallback 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) +# define BOOST_category_tag BOOST_VERSION_NUMBER_AVAILABLE # endif #endif
- We also need to provide the *_AVAILABLE
versions of the predef. And for
- convenience we also want to provide a *_NAME
macro:
+ We also need to provide the *_AVAILABLE
versions of the predef.
#if BOOST_category_tag # define BOOST_category_tag_AVAILABLE #endif - -#define BOOST_catagory_tag_NAME "Name" ++
+ And for convenience we also want to provide a *_NAME
macro:
+
#define BOOST_catagory_tag_NAME "Name"
The testing of the predef macros is automated to generate checks for all the @@ -168,6 +187,84 @@ Documentation about what is detected.
+ For headers of predefs that need to be mutually exclusive in the detection + we need to add checks and definitions to detect when the predef is detected + by multiple headers. +
+
+ Internally compiler, operating system, and platforms define BOOST_PREDEF_DETAIL_COMP_DETECTED
,
+ BOOST_PREDEF_DEFAIL_OS_DETECTED
,
+ and BOOST_PREDEF_DETAIL_PLAT_DETECTED
+ respectively when the predef is first detected. This is used to guard against
+ multiple definition of the detection in later included headers. In those cases
+ the detection would instead be written as:
+
#if !BOOST_PREDEF_DETAIL_category_DETECTED && (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 +#endif ++
+ And we also include a header that defines the *_DETECTED
macro when we have the detection:
+
#if BOOST_category_tag +# define BOOST_category_tag_AVAILABLE +# include <boost/predef/detail/CATEGORY_detected.h> +#endif ++
+ Everything else about the header is the same as the basic detection header. +
+
+ Because compilers are frequently emulated by other compilers we both want to
+ have exclusive detection of the compiler and also provide information that
+ we detected the emulation of the compiler. To accomplish this we define a local
+ *_DETECTION
+ macro for the compiler detection. And conditionally define either the base
+ compiler predef BOOST_COMP_compiler
+ or the alternate BOOST_COMP_compiler_EMULATED
+ predef.
+
+ The initial detection would look like: +
+#if (condition_a) +# if (condition_b) +# define BOOST_COMP_tag_DETECTION BOOST_VERSION_NUMBER(major,minor,patch) +# else +# define BOOST_COMP_tag_DETECTION BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif ++
+ And then we can conditionally define the base or emulated predefs: +
+#ifdef BOOST_COMP_tag_DETECTION +# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED) +# define BOOST_COMP_tag_EMULATED BOOST_COMP_tag_DETECTION +# else +# undef BOOST_COMP_tag +# define BOOST_COMP_tag BOOST_COMP_tag_DETECTION +# endif +# define BOOST_category_tag_AVAILABLE +# include <boost/predef/detail/comp_detected.h> +#endif ++
- |
BOOST_OS_SOLARIS
@@ -848,7 +923,7 @@
BOOST_OS_UNIX
@@ -924,7 +999,7 @@
BOOST_OS_SVR4
@@ -1000,7 +1075,7 @@
BOOST_OS_VMS
@@ -1063,7 +1138,7 @@
BOOST_OS_WINDOWS
@@ -1151,7 +1226,7 @@
BOOST_OS_BSD_BSDI
@@ -1189,7 +1264,7 @@
BOOST_OS_BSD_DRAGONFLY
@@ -1227,7 +1302,7 @@
BOOST_OS_BSD_FREE
@@ -1279,7 +1354,7 @@
BOOST_OS_BSD_NET
@@ -1391,7 +1466,7 @@
BOOST_OS_BSD_OPEN
@@ -1793,7 +1868,7 @@
- |