diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 3fed165..9af16b7 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -32,139 +32,44 @@ stages: - job: 'Linux' strategy: matrix: - GCC 9 (GNU): - TOOLSET: gcc - CXX: g++-9 - PACKAGES: g++-9 - B2_ARGS: 'cxxstd=03,11,14,17,2a cxxstd-dialect=gnu' - VM_IMAGE: 'ubuntu-18.04' - GCC 9 (ISO): - TOOLSET: gcc - CXX: g++-9 - PACKAGES: g++-9 - B2_ARGS: 'cxxstd=03,11,14,17,2a cxxstd-dialect=iso' - VM_IMAGE: 'ubuntu-18.04' - GCC 9: - TOOLSET: gcc - CXX: g++-9 - PACKAGES: g++-9 - VM_IMAGE: 'ubuntu-18.04' - GCC 8: - TOOLSET: gcc - CXX: g++-8 - PACKAGES: g++-8 - VM_IMAGE: 'ubuntu-18.04' - GCC 7: - TOOLSET: gcc - CXX: g++-7 - PACKAGES: g++-7 - VM_IMAGE: 'ubuntu-18.04' - GCC 6: - TOOLSET: gcc - CXX: g++-6 - PACKAGES: g++-6 - VM_IMAGE: 'ubuntu-18.04' - GCC 5: - TOOLSET: gcc - CXX: g++-5 - PACKAGES: g++-5 - VM_IMAGE: 'ubuntu-18.04' - GCC 4.9: - TOOLSET: gcc - CXX: g++-4.9 - PACKAGES: g++-4.9 - VM_IMAGE: 'ubuntu-16.04' - GCC 4.8: - TOOLSET: gcc - CXX: g++-4.8 - PACKAGES: g++-4.8 - VM_IMAGE: 'ubuntu-16.04' - GCC 4.7: - TOOLSET: gcc - CXX: g++-4.7 - PACKAGES: g++-4.7 - VM_IMAGE: 'ubuntu-16.04' - Clang 9: - TOOLSET: clang - CXX: clang++-9 - PACKAGES: clang-9 - LLVM_REPO: llvm-toolchain-xenial-9 - VM_IMAGE: 'ubuntu-18.04' - Clang 8: - TOOLSET: clang - CXX: clang++-8 - PACKAGES: clang-8 - LLVM_REPO: llvm-toolchain-xenial-8 - VM_IMAGE: 'ubuntu-18.04' - Clang 7: - TOOLSET: clang - CXX: clang++-7 - PACKAGES: clang-7 - LLVM_REPO: llvm-toolchain-xenial-7 - VM_IMAGE: 'ubuntu-18.04' - Clang 6: - TOOLSET: clang - CXX: clang++-6.0 - PACKAGES: clang-6.0 - LLVM_REPO: llvm-toolchain-xenial-6.0 - VM_IMAGE: 'ubuntu-18.04' - Clang 5: - TOOLSET: clang - CXX: clang++-5.0 - PACKAGES: clang-5.0 - LLVM_REPO: llvm-toolchain-xenial-5.0 - VM_IMAGE: 'ubuntu-18.04' - Clang 4: - TOOLSET: clang - CXX: clang++-4.0 - PACKAGES: clang-4.0 - LLVM_REPO: llvm-toolchain-xenial-4.0 - VM_IMAGE: 'ubuntu-18.04' - Clang 3.9: - TOOLSET: clang - CXX: clang++-3.9 - PACKAGES: clang-3.9 - VM_IMAGE: 'ubuntu-18.04' - Clang 3.8: - TOOLSET: clang - CXX: clang++-3.8 - PACKAGES: clang-3.8 - VM_IMAGE: 'ubuntu-16.04' - Clang 3.7: - TOOLSET: clang - CXX: clang++-3.7 - PACKAGES: clang-3.7 - VM_IMAGE: 'ubuntu-16.04' - Clang 3.6: - TOOLSET: clang - CXX: clang++-3.6 - PACKAGES: clang-3.6 - VM_IMAGE: 'ubuntu-16.04' - Clang 3.5: - TOOLSET: clang - CXX: clang++-3.5 - PACKAGES: clang-3.5 - VM_IMAGE: 'ubuntu-16.04' + GCC 10 (GNU): { CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,2a cxxstd-dialect=gnu' } + GCC 10 (ISO): { CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,2a cxxstd-dialect=iso' } + GCC 10: { CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc } + GCC 9: { CXX: g++-9, PACKAGES: g++-9, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc } + GCC 8: { CXX: g++-8, PACKAGES: g++-8, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc } + GCC 7: { CXX: g++-7, PACKAGES: g++-7, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc } + GCC 6: { CXX: g++-6, PACKAGES: g++-6, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc } + GCC 5: { CXX: g++-5, PACKAGES: g++-5, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc } + GCC 4.9: { CXX: g++-4.9, PACKAGES: g++-4.9, VM_IMAGE: 'ubuntu-16.04', TOOLSET: gcc } + GCC 4.8: { CXX: g++-4.8, PACKAGES: g++-4.8, VM_IMAGE: 'ubuntu-16.04', TOOLSET: gcc } + GCC 4.7: { CXX: g++-4.7, PACKAGES: g++-4.7, VM_IMAGE: 'ubuntu-16.04', TOOLSET: gcc } + Clang 11: { CXX: clang++-11, PACKAGES: clang-11, LLVM_OS: bionic, LLVM_VER: 11, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang } + Clang 10: { CXX: clang++-10, PACKAGES: clang-10, LLVM_OS: bionic, LLVM_VER: 10, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang } + Clang 9: { CXX: clang++-9, PACKAGES: clang-9, LLVM_OS: bionic, LLVM_VER: 9, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang } + Clang 8: { CXX: clang++-8, PACKAGES: clang-8, LLVM_OS: bionic, LLVM_VER: 8, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang } + Clang 7: { CXX: clang++-7, PACKAGES: clang-7, LLVM_OS: bionic, LLVM_VER: 7, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang } + Clang 6.0: { CXX: clang++-6.0, PACKAGES: clang-6.0, LLVM_OS: bionic, LLVM_VER: 6.0, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang } + Clang 5.0: { CXX: clang++-5.0, PACKAGES: clang-5.0, LLVM_OS: bionic, LLVM_VER: 5.0, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang } + Clang 4.0: { CXX: clang++-4.0, PACKAGES: clang-4.0, LLVM_OS: xenial, LLVM_VER: 4.0, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang } + Clang 3.9: { CXX: clang++-3.9, PACKAGES: clang-3.9, LLVM_OS: xenial, LLVM_VER: 3.9, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang } + Clang 3.8: { CXX: clang++-3.8, PACKAGES: clang-3.8, LLVM_OS: xenial, LLVM_VER: 3.8, VM_IMAGE: 'ubuntu-16.04', TOOLSET: clang } + Clang 3.7: { CXX: clang++-3.7, PACKAGES: clang-3.7, LLVM_OS: xenial, VM_IMAGE: 'ubuntu-16.04', TOOLSET: clang } + Clang 3.6: { CXX: clang++-3.6, PACKAGES: clang-3.6, LLVM_OS: xenial, VM_IMAGE: 'ubuntu-16.04', TOOLSET: clang } + Clang 3.5: { CXX: clang++-3.5, PACKAGES: clang-3.5, LLVM_OS: xenial, VM_IMAGE: 'ubuntu-16.04', TOOLSET: clang } pool: vmImage: $(VM_IMAGE) steps: - bash: | set -e uname -a - sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - if test -n "${LLVM_REPO}" ; then - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo -E apt-add-repository "deb http://apt.llvm.org/xenial/ ${LLVM_REPO} main" - fi - sudo -E apt-get update - sudo -E apt-get -yq --no-install-suggests --no-install-recommends install ${PACKAGES} + ./tools/ci/linux-cxx-install.sh displayName: 'Install CXX' - bash: | set -e pushd ${HOME} - wget -nv https://github.com/boostorg/build/archive/master.tar.gz - tar -zxf master.tar.gz - cd build-master + wget -nv https://github.com/boostorg/build/archive/develop.tar.gz + tar -zxf develop.tar.gz + cd build-develop CXX= ./bootstrap.sh sudo ./b2 install popd @@ -174,53 +79,39 @@ stages: CXX_PATH=`which ${CXX}` echo "using ${TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam pushd test - b2 --debug-configuration -a toolset=${TOOLSET} ${B2_ARGS} + b2 --verbose-test -a toolset=${TOOLSET} ${B2_ARGS} predef-info + b2 --debug-configuration -a toolset=${TOOLSET} ${B2_ARGS} predef predef-headers popd displayName: Test - job: 'macOS' strategy: matrix: - Xcode 11.4: + Xcode 11.4.1: TOOLSET: clang CXX: clang++ - XCODE_APP: /Applications/Xcode_11.4_beta.app + XCODE_APP: /Applications/Xcode_11.4.1.app VM_IMAGE: 'macOS-10.15' Xcode 11.3.1: TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.1.app VM_IMAGE: 'macOS-10.15' - Xcode 11.3: + Xcode 11.2.1: TOOLSET: clang CXX: clang++ - XCODE_APP: /Applications/Xcode_11.3.app + XCODE_APP: /Applications/Xcode_11.2.1.app VM_IMAGE: 'macOS-10.15' - Xcode 11.2: + Xcode 10.3: TOOLSET: clang CXX: clang++ - XCODE_APP: /Applications/Xcode_11.2.app - VM_IMAGE: 'macOS-10.15' - Xcode 11.1: - TOOLSET: clang - CXX: clang++ - XCODE_APP: /Applications/Xcode_11.1.app - VM_IMAGE: 'macOS-10.15' - Xcode 11.0: - TOOLSET: clang - CXX: clang++ - XCODE_APP: /Applications/Xcode_11.app - VM_IMAGE: 'macOS-10.15' + XCODE_APP: /Applications/Xcode_10.3.app + VM_IMAGE: 'macOS-10.14' Xcode 10.2.1: TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_10.2.1.app VM_IMAGE: 'macOS-10.14' - Xcode 10.2: - TOOLSET: clang - CXX: clang++ - XCODE_APP: /Applications/Xcode_10.2.app - VM_IMAGE: 'macOS-10.14' Xcode 10.1: TOOLSET: clang CXX: clang++ @@ -244,9 +135,9 @@ stages: - bash: | set -e pushd ${HOME} - wget -nv https://github.com/boostorg/build/archive/master.tar.gz - tar -zxf master.tar.gz - cd build-master + wget -nv https://github.com/boostorg/build/archive/develop.tar.gz + tar -zxf develop.tar.gz + cd build-develop CXX= ./bootstrap.sh sudo ./b2 install popd @@ -256,7 +147,8 @@ stages: CXX_PATH=`which ${CXX}` echo "using ${TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam pushd test - b2 --debug-configuration -a toolset=${TOOLSET} ${B2_ARGS} + b2 --verbose-test -a toolset=${TOOLSET} ${B2_ARGS} predef-info + b2 --debug-configuration -a toolset=${TOOLSET} ${B2_ARGS} predef predef-headers popd displayName: Test @@ -313,7 +205,7 @@ stages: steps: - script: | cd %BUILD_SOURCESDIRECTORY%/.. - curl "https://github.com/boostorg/build/archive/master.zip" -L -o b2.zip + curl "https://github.com/boostorg/build/archive/develop.zip" -L -o b2.zip displayName: Download B2 - task: ExtractFiles@1 inputs: @@ -323,11 +215,12 @@ stages: displayName: Extract B2 - script: | echo using %TOOLSET% ^: %TOOLSET_VERSION% ^; > %HOMEDRIVE%%HOMEPATH%/user-config.jam - cd %BUILD_SOURCESDIRECTORY%/../build-master + cd %BUILD_SOURCESDIRECTORY%/../build-develop cmd.exe /c bootstrap.bat displayName: Install B2 - script: | - set BOOST_BUILD_PATH=%BUILD_SOURCESDIRECTORY%/../build-master + set BOOST_BUILD_PATH=%BUILD_SOURCESDIRECTORY%/../build-develop cd %BUILD_SOURCESDIRECTORY%/test - %BUILD_SOURCESDIRECTORY%/../build-master/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% + %BUILD_SOURCESDIRECTORY%/../build-develop/b2.exe --verbose-test -a toolset=%TOOLSET% %B2_ARGS% predef-info + %BUILD_SOURCESDIRECTORY%/../build-develop/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% predef predef-headers displayName: Test diff --git a/doc/history.adoc b/doc/history.adoc index 81b2d68..7b6b76f 100644 --- a/doc/history.adoc +++ b/doc/history.adoc @@ -7,6 +7,17 @@ http://www.boost.org/LICENSE_1_0.txt) = History +== 1.12 + +* Switch to using the endian.h header on OpenBSD. (Brad Smith) +* Fix not handling recent versions of stdcxx that go above version 9. +* Fix including sub-BSD OS headers directly causing redef warnings. +* Add CI testing of direct inclusion of all headers. +* Add CI testing on FreeBSD for clang and gcc. +* Add `WORD_BITS` set of predefs to detect the architecture word size. + Initial implementation inspired by submission from Mikhail Komarov. +* Add CI testing for Cygwin 32 and 64. + == 1.11 * Add `BOOST_ARCH_RISCV`. (from Andreas Schwab) diff --git a/doc/index.html b/doc/index.html index 53b45d9..a799041 100644 --- a/doc/index.html +++ b/doc/index.html @@ -4,7 +4,7 @@ - + Boost.Predef @@ -48,7 +48,7 @@ textarea{overflow:auto;vertical-align:top} table{border-collapse:collapse;border-spacing:0} *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box} html,body{font-size:100%} -body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} +body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} a:hover{cursor:pointer} img,object,embed{max-width:100%;height:auto} object,embed{height:100%} @@ -63,10 +63,8 @@ img{-ms-interpolation-mode:bicubic} img,object,svg{display:inline-block;vertical-align:middle} textarea{height:auto;min-height:50px} select{width:100%} -.center{margin-left:auto;margin-right:auto} -.stretch{width:100%} .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} -div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr} +div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0} a{color:#2156a5;text-decoration:underline;line-height:inherit} a:hover,a:focus{color:#1d4b8f} a img{border:0} @@ -106,19 +104,22 @@ h1{font-size:2.75em} h2{font-size:2.3125em} h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} h4{font-size:1.4375em}} -table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede} +table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal} table thead,table tfoot{background:#f7f8f7} table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} table tr.even,table tr.alt{background:#f8f8f7} -table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6} +table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6} h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} +.center{margin-left:auto;margin-right:auto} +.stretch{width:100%} .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table} .clearfix::after,.float-group::after{clear:both} -:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word} -:not(pre)>code.nobreak{word-wrap:normal} -:not(pre)>code.nowrap{white-space:nowrap} +:not(pre).nobreak{word-wrap:normal} +:not(pre).nowrap{white-space:nowrap} +:not(pre).pre-wrap{white-space:pre-wrap} +:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed} pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed} pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit} pre>code{display:block} @@ -183,7 +184,7 @@ body.toc2.toc-right{padding-left:0;padding-right:20em}} #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} #content #toc>:first-child{margin-top:0} #content #toc>:last-child{margin-bottom:0} -#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em} +#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em} #footer-text{color:rgba(255,255,255,.8);line-height:1.44} #content{margin-bottom:.625em} .sect1{padding-bottom:.625em} @@ -206,7 +207,7 @@ table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font .admonitionblock>table td.icon{text-align:center;width:80px} .admonitionblock>table td.icon img{max-width:none} .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} -.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)} +.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere} .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px} .exampleblock>.content>:first-child{margin-top:0} @@ -216,7 +217,7 @@ table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font .sidebarblock>:last-child{margin-bottom:0} .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} -.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em} +.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em} @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}} @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}} .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8} @@ -262,21 +263,20 @@ pre.pygments .lineno::before{content:"";margin-right:-.125em} .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0} .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem} .quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0} -table.tableblock{max-width:100%;border-collapse:separate} p.tableblock:last-child{margin-bottom:0} +td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere} td.tableblock>.content>:last-child{margin-bottom:-1.25em} -td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0} table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} -table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0} -table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0} -table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0} -table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px} -table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0} -table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0} -table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0} +table.grid-all>*>tr>*{border-width:1px} +table.grid-cols>*>tr>*{border-width:0 1px} +table.grid-rows>*>tr>*{border-width:1px 0} table.frame-all{border-width:1px} +table.frame-ends{border-width:1px 0} table.frame-sides{border-width:0 1px} -table.frame-topbot,table.frame-ends{border-width:1px 0} +table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0} +table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0} +table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0} +table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0} table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7} th.halign-left,td.halign-left{text-align:left} th.halign-right,td.halign-right{text-align:right} @@ -285,7 +285,7 @@ th.valign-top,td.valign-top{vertical-align:top} th.valign-bottom,td.valign-bottom{vertical-align:bottom} th.valign-middle,td.valign-middle{vertical-align:middle} table thead th,table tfoot th{font-weight:bold} -tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7} +tbody tr th{background:#f7f8f7} tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} p.tableblock>code:only-child{background:none;padding:0} p.tableblock{font-size:1em} @@ -314,6 +314,7 @@ ol.lowergreek{list-style-type:lower-greek} .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} td.hdlist1{font-weight:bold;padding-bottom:1.25em} +td.hdlist2{word-wrap:anywhere} .literalblock+.colist,.listingblock+.colist{margin-top:-.5em} .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top} .colist td:not([class]):first-child img{max-width:none} @@ -386,7 +387,7 @@ a span.icon>.fa{cursor:inherit} .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900} .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400} .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000} -.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} +.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} .conum[data-value] *{color:#fff!important} .conum[data-value]+b{display:none} .conum[data-value]::after{content:attr(data-value)} @@ -413,6 +414,7 @@ thead{display:table-header-group} svg{max-width:100%} p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} +#header,#content,#footnotes,#footer{max-width:none} #toc,.sidebarblock,.exampleblock>.content{background:none!important} #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important} body.book #header{text-align:center} @@ -436,6 +438,77 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b #footer-text{color:rgba(0,0,0,.6);font-size:.9em}} @media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}} + + +
+

4.8.3. BOOST_PREDEF_WORKAROUND

BOOST_PREDEF_WORKAROUND(symbol,comp,major,minor,patch)
@@ -6342,7 +6453,7 @@ is undefine this expand to test the given symbol version value with
-

4.8.3. BOOST_PREDEF_TESTED_AT

+

4.8.4. BOOST_PREDEF_TESTED_AT

BOOST_PREDEF_TESTED_AT(symbol,major,minor,patch)
@@ -6494,6 +6605,9 @@ indicates an ignored digit.

BOOST_PREDEF_MAKE_10_VPPP(V)

  • +

    BOOST_PREDEF_MAKE_10_VVPPP(V)

    +
  • +
  • BOOST_PREDEF_MAKE_10_VR0(V)

  • @@ -6725,7 +6839,36 @@ expressions. It defaults to "c++", but can be any of: "c", "cpp",

    6. History

    -

    6.1. 1.11

    +

    6.1. 1.12

    +
    +
      +
    • +

      Switch to using the endian.h header on OpenBSD. (Brad Smith)

      +
    • +
    • +

      Fix not handling recent versions of stdcxx that go above version 9.

      +
    • +
    • +

      Fix including sub-BSD OS headers directly causing redef warnings.

      +
    • +
    • +

      Add CI testing of direct inclusion of all headers.

      +
    • +
    • +

      Add CI testing on FreeBSD for clang and gcc.

      +
    • +
    • +

      Add WORD_BITS set of predefs to detect the architecture word size. +Initial implementation inspired by submission from Mikhail Komarov.

      +
    • +
    • +

      Add CI testing for Cygwin 32 and 64.

      +
    • +
    +
    +
    +
    +

    6.2. 1.11

    • @@ -6753,7 +6896,7 @@ expressions. It defaults to "c++", but can be any of: "c", "cpp",
    -

    6.2. 1.10

    +

    6.3. 1.10

    • @@ -6778,7 +6921,7 @@ removed in a future release.

    -

    6.3. 1.9

    +

    6.4. 1.9

    • @@ -6791,7 +6934,7 @@ removed in a future release.

    -

    6.4. 1.8

    +

    6.5. 1.8

    • @@ -6813,7 +6956,7 @@ removed in a future release.

    -

    6.5. 1.7

    +

    6.6. 1.7

    • @@ -6829,7 +6972,7 @@ removed in a future release.

    -

    6.6. 1.6

    +

    6.7. 1.6

    • @@ -6853,7 +6996,7 @@ Baratov)

    -

    6.7. 1.5

    +

    6.8. 1.5

    • @@ -6872,7 +7015,7 @@ version instead of the varied product versions.

    -

    6.8. 1.4.1

    +

    6.9. 1.4.1

    • @@ -6885,7 +7028,7 @@ version instead of the varied product versions.

    -

    6.9. 1.4

    +

    6.10. 1.4

    • @@ -6906,7 +7049,7 @@ use cases. And changed the BBv2 check support to use compile only checks.

    -

    6.10. 1.3

    +

    6.11. 1.3

    • @@ -6931,7 +7074,7 @@ use cases. And changed the BBv2 check support to use compile only checks.

    -

    6.11. 1.2

    +

    6.12. 1.2

    • @@ -6955,7 +7098,7 @@ checks.

    -

    6.12. 1.1

    +

    6.13. 1.1

    • @@ -7051,76 +7194,5 @@ Joel Falcou for managing the review of this library.

    - \ No newline at end of file diff --git a/doc/predef.adoc b/doc/predef.adoc index cac33c8..85566b9 100644 --- a/doc/predef.adoc +++ b/doc/predef.adoc @@ -828,6 +828,8 @@ include::../include/boost/predef/hardware/simd/x86_amd/versions.h[tag=reference] include::../include/boost/predef/other/endian.h[tag=reference] +include::../include/boost/predef/other/wordsize.h[tag=reference] + include::../include/boost/predef/other/workaround.h[tag=reference] :leveloffset: -3 diff --git a/include/boost/predef/architecture.h b/include/boost/predef/architecture.h index 732d6f0..3048329 100644 --- a/include/boost/predef/architecture.h +++ b/include/boost/predef/architecture.h @@ -29,6 +29,5 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include #include -/*#include */ #endif diff --git a/include/boost/predef/architecture/alpha.h b/include/boost/predef/architecture/alpha.h index a24b10f..64d3dad 100644 --- a/include/boost/predef/architecture/alpha.h +++ b/include/boost/predef/architecture/alpha.h @@ -52,6 +52,11 @@ http://en.wikipedia.org/wiki/DEC_Alpha[DEC Alpha] architecture. # define BOOST_ARCH_ALPHA_AVAILABLE #endif +#if BOOST_ARCH_ALPHA +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_ALPHA_NAME "DEC Alpha" #endif diff --git a/include/boost/predef/architecture/arm.h b/include/boost/predef/architecture/arm.h index b7a8a83..8ab20b2 100644 --- a/include/boost/predef/architecture/arm.h +++ b/include/boost/predef/architecture/arm.h @@ -126,6 +126,16 @@ http://en.wikipedia.org/wiki/ARM_architecture[ARM] architecture. # define BOOST_ARCH_ARM_AVAILABLE #endif +#if BOOST_ARCH_ARM +# if BOOST_ARCH_ARM >= BOOST_VERSION_NUMBER(8,0,0) +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +# else +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif + #define BOOST_ARCH_ARM_NAME "ARM" #endif diff --git a/include/boost/predef/architecture/blackfin.h b/include/boost/predef/architecture/blackfin.h index ce1a655..5c94b44 100644 --- a/include/boost/predef/architecture/blackfin.h +++ b/include/boost/predef/architecture/blackfin.h @@ -39,6 +39,11 @@ Blackfin Processors from Analog Devices. # define BOOST_ARCH_BLACKFIN_AVAILABLE #endif +#if BOOST_ARCH_BLACKFIN +# undef BOOST_ARCH_WORD_BITS_16 +# define BOOST_ARCH_WORD_BITS_16 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_BLACKFIN_NAME "Blackfin" #endif diff --git a/include/boost/predef/architecture/convex.h b/include/boost/predef/architecture/convex.h index 5ce59c7..eb73d08 100644 --- a/include/boost/predef/architecture/convex.h +++ b/include/boost/predef/architecture/convex.h @@ -58,6 +58,11 @@ http://en.wikipedia.org/wiki/Convex_Computer[Convex Computer] architecture. # define BOOST_ARCH_CONVEX_AVAILABLE #endif +#if BOOST_ARCH_CONVEX +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_CONVEX_NAME "Convex Computer" #endif diff --git a/include/boost/predef/architecture/ia64.h b/include/boost/predef/architecture/ia64.h index 12a08d1..1f4b58a 100644 --- a/include/boost/predef/architecture/ia64.h +++ b/include/boost/predef/architecture/ia64.h @@ -42,6 +42,11 @@ http://en.wikipedia.org/wiki/Ia64[Intel Itanium 64] architecture. # define BOOST_ARCH_IA64_AVAILABLE #endif +#if BOOST_ARCH_IA64 +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_IA64_NAME "Intel Itanium 64" #endif diff --git a/include/boost/predef/architecture/m68k.h b/include/boost/predef/architecture/m68k.h index 2d87745..a594537 100644 --- a/include/boost/predef/architecture/m68k.h +++ b/include/boost/predef/architecture/m68k.h @@ -75,6 +75,11 @@ http://en.wikipedia.org/wiki/M68k[Motorola 68k] architecture. # define BOOST_ARCH_M68K_AVAILABLE #endif +#if BOOST_ARCH_M68K +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_M68K_NAME "Motorola 68k" #endif diff --git a/include/boost/predef/architecture/mips.h b/include/boost/predef/architecture/mips.h index 490c5e5..e35d23a 100644 --- a/include/boost/predef/architecture/mips.h +++ b/include/boost/predef/architecture/mips.h @@ -66,6 +66,16 @@ http://en.wikipedia.org/wiki/MIPS_architecture[MIPS] architecture. # define BOOST_ARCH_MIPS_AVAILABLE #endif +#if BOOST_ARCH_MIPS +# if BOOST_ARCH_MIPS >= BOOST_VERSION_NUMBER(3,0,0) +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +# else +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif + #define BOOST_ARCH_MIPS_NAME "MIPS" #endif diff --git a/include/boost/predef/architecture/parisc.h b/include/boost/predef/architecture/parisc.h index 0825445..b93bfd9 100644 --- a/include/boost/predef/architecture/parisc.h +++ b/include/boost/predef/architecture/parisc.h @@ -57,6 +57,11 @@ http://en.wikipedia.org/wiki/PA-RISC_family[HP/PA RISC] architecture. # define BOOST_ARCH_PARISC_AVAILABLE #endif +#if BOOST_ARCH_PARISC +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_PARISC_NAME "HP/PA RISC" #endif diff --git a/include/boost/predef/architecture/ppc.h b/include/boost/predef/architecture/ppc.h index 019e11b..55ba5a1 100644 --- a/include/boost/predef/architecture/ppc.h +++ b/include/boost/predef/architecture/ppc.h @@ -65,6 +65,11 @@ http://en.wikipedia.org/wiki/PowerPC[PowerPC] architecture. # define BOOST_ARCH_PPC_AVAILABLE #endif +#if BOOST_ARCH_PPC +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_PPC_NAME "PowerPC" #endif diff --git a/include/boost/predef/architecture/ptx.h b/include/boost/predef/architecture/ptx.h index a331094..7737213 100644 --- a/include/boost/predef/architecture/ptx.h +++ b/include/boost/predef/architecture/ptx.h @@ -37,6 +37,11 @@ https://en.wikipedia.org/wiki/Parallel_Thread_Execution[PTX] architecture. # define BOOST_ARCH_PTX_AVAILABLE #endif +#if BOOST_ARCH_PTX +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_PTX_NAME "PTX" #endif diff --git a/include/boost/predef/architecture/pyramid.h b/include/boost/predef/architecture/pyramid.h index afcd1a9..40c5359 100644 --- a/include/boost/predef/architecture/pyramid.h +++ b/include/boost/predef/architecture/pyramid.h @@ -35,6 +35,11 @@ Pyramid 9810 architecture. # define BOOST_ARCH_PYRAMID_AVAILABLE #endif +#if BOOST_ARCH_PYRAMID +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_PYRAMID_NAME "Pyramid 9810" #endif diff --git a/include/boost/predef/architecture/riscv.h b/include/boost/predef/architecture/riscv.h index 7c3a7ba..8b819d7 100644 --- a/include/boost/predef/architecture/riscv.h +++ b/include/boost/predef/architecture/riscv.h @@ -35,6 +35,11 @@ http://en.wikipedia.org/wiki/RISC-V[RISC-V] architecture. # define BOOST_ARCH_RISCV_AVAILABLE #endif +#if BOOST_ARCH_RISCV +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_RISCV_NAME "RISC-V" #endif diff --git a/include/boost/predef/architecture/rs6k.h b/include/boost/predef/architecture/rs6k.h index e33c793..1c6d987 100644 --- a/include/boost/predef/architecture/rs6k.h +++ b/include/boost/predef/architecture/rs6k.h @@ -41,6 +41,11 @@ http://en.wikipedia.org/wiki/RS/6000[RS/6000] architecture. # define BOOST_ARCH_RS6000_AVAILABLE #endif +#if BOOST_ARCH_RS6000 +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_RS6000_NAME "RS/6000" #define BOOST_ARCH_PWR BOOST_ARCH_RS6000 @@ -49,6 +54,11 @@ http://en.wikipedia.org/wiki/RS/6000[RS/6000] architecture. # define BOOST_ARCH_PWR_AVAILABLE #endif +#if BOOST_ARCH_PWR +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_PWR_NAME BOOST_ARCH_RS6000_NAME #endif diff --git a/include/boost/predef/architecture/sparc.h b/include/boost/predef/architecture/sparc.h index 31551e3..52e9fcb 100644 --- a/include/boost/predef/architecture/sparc.h +++ b/include/boost/predef/architecture/sparc.h @@ -47,6 +47,16 @@ http://en.wikipedia.org/wiki/SPARC[SPARC] architecture. # define BOOST_ARCH_SPARC_AVAILABLE #endif +#if BOOST_ARCH_SPARC +# if BOOST_ARCH_SPARC >= BOOST_VERSION_NUMBER(9,0,0) +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +# else +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif + #define BOOST_ARCH_SPARC_NAME "SPARC" #endif diff --git a/include/boost/predef/architecture/superh.h b/include/boost/predef/architecture/superh.h index 5034d90..f72dc8b 100644 --- a/include/boost/predef/architecture/superh.h +++ b/include/boost/predef/architecture/superh.h @@ -60,6 +60,19 @@ If available versions [1-5] are specifically detected. # define BOOST_ARCH_SH_AVAILABLE #endif +#if BOOST_ARCH_SH +# if BOOST_ARCH_SH >= BOOST_VERSION_NUMBER(5,0,0) +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +# elif BOOST_ARCH_SH >= BOOST_VERSION_NUMBER(3,0,0) +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +# else +# undef BOOST_ARCH_WORD_BITS_16 +# define BOOST_ARCH_WORD_BITS_16 BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif + #define BOOST_ARCH_SH_NAME "SuperH" #endif diff --git a/include/boost/predef/architecture/sys370.h b/include/boost/predef/architecture/sys370.h index 265d0f0..5500d25 100644 --- a/include/boost/predef/architecture/sys370.h +++ b/include/boost/predef/architecture/sys370.h @@ -36,6 +36,11 @@ http://en.wikipedia.org/wiki/System/370[System/370] architecture. # define BOOST_ARCH_SYS370_AVAILABLE #endif +#if BOOST_ARCH_SYS370 +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_SYS370_NAME "System/370" #endif diff --git a/include/boost/predef/architecture/sys390.h b/include/boost/predef/architecture/sys390.h index 155c9be..9aba568 100644 --- a/include/boost/predef/architecture/sys390.h +++ b/include/boost/predef/architecture/sys390.h @@ -36,6 +36,11 @@ http://en.wikipedia.org/wiki/System/390[System/390] architecture. # define BOOST_ARCH_SYS390_AVAILABLE #endif +#if BOOST_ARCH_SYS390 +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_SYS390_NAME "System/390" #endif diff --git a/include/boost/predef/architecture/x86/32.h b/include/boost/predef/architecture/x86/32.h index cd2e750..b20fed9 100644 --- a/include/boost/predef/architecture/x86/32.h +++ b/include/boost/predef/architecture/x86/32.h @@ -78,6 +78,11 @@ If available versions [3-6] are specifically detected. # define BOOST_ARCH_X86_32_AVAILABLE #endif +#if BOOST_ARCH_X86_32 +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_X86_32_NAME "Intel x86-32" #include diff --git a/include/boost/predef/architecture/x86/64.h b/include/boost/predef/architecture/x86/64.h index ebd80fb..f0554a0 100644 --- a/include/boost/predef/architecture/x86/64.h +++ b/include/boost/predef/architecture/x86/64.h @@ -41,6 +41,11 @@ http://en.wikipedia.org/wiki/Ia64[Intel IA-64] architecture. # define BOOST_ARCH_X86_64_AVAILABLE #endif +#if BOOST_ARCH_X86_64 +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_X86_64_NAME "Intel x86-64" #include diff --git a/include/boost/predef/architecture/z.h b/include/boost/predef/architecture/z.h index d2d8e95..a5f7979 100644 --- a/include/boost/predef/architecture/z.h +++ b/include/boost/predef/architecture/z.h @@ -35,6 +35,11 @@ http://en.wikipedia.org/wiki/Z/Architecture[z/Architecture] architecture. # define BOOST_ARCH_Z_AVAILABLE #endif +#if BOOST_ARCH_Z +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_Z_NAME "z/Architecture" #endif diff --git a/include/boost/predef/library/std/cxx.h b/include/boost/predef/library/std/cxx.h index 61a09a8..470c80d 100644 --- a/include/boost/predef/library/std/cxx.h +++ b/include/boost/predef/library/std/cxx.h @@ -32,7 +32,7 @@ http://libcxx.llvm.org/[libc++] {CPP} Standard Library. #if defined(_LIBCPP_VERSION) # undef BOOST_LIB_STD_CXX -# define BOOST_LIB_STD_CXX BOOST_PREDEF_MAKE_10_VPPP(_LIBCPP_VERSION) +# define BOOST_LIB_STD_CXX BOOST_PREDEF_MAKE_10_VVPPP(_LIBCPP_VERSION) #endif #if BOOST_LIB_STD_CXX diff --git a/include/boost/predef/make.h b/include/boost/predef/make.h index 810ba45..e65a0e1 100644 --- a/include/boost/predef/make.h +++ b/include/boost/predef/make.h @@ -66,6 +66,10 @@ Macros are: */ // end::reference[] #define BOOST_PREDEF_MAKE_10_VPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,0,(V)%1000) /* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVPPP(V)` +*/ // end::reference[] +#define BOOST_PREDEF_MAKE_10_VVPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%100,0,(V)%1000) +/* tag::reference[] * `BOOST_PREDEF_MAKE_10_VR0(V)` */ // end::reference[] #define BOOST_PREDEF_MAKE_10_VR0(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,0) diff --git a/include/boost/predef/os/bsd/bsdi.h b/include/boost/predef/os/bsd/bsdi.h index 0c90f6d..d0a5dcd 100644 --- a/include/boost/predef/os/bsd/bsdi.h +++ b/include/boost/predef/os/bsd/bsdi.h @@ -29,6 +29,7 @@ http://en.wikipedia.org/wiki/BSD/OS[BSDi BSD/OS] operating system. defined(__bsdi__) \ ) # ifndef BOOST_OS_BSD_AVAILABLE +# undef BOOST_OS_BSD # define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE # define BOOST_OS_BSD_AVAILABLE # endif diff --git a/include/boost/predef/os/bsd/dragonfly.h b/include/boost/predef/os/bsd/dragonfly.h index 253f0e2..4320777 100644 --- a/include/boost/predef/os/bsd/dragonfly.h +++ b/include/boost/predef/os/bsd/dragonfly.h @@ -29,6 +29,7 @@ http://en.wikipedia.org/wiki/DragonFly_BSD[DragonFly BSD] operating system. defined(__DragonFly__) \ ) # ifndef BOOST_OS_BSD_AVAILABLE +# undef BOOST_OS_BSD # define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE # define BOOST_OS_BSD_AVAILABLE # endif diff --git a/include/boost/predef/os/bsd/free.h b/include/boost/predef/os/bsd/free.h index 0cf82ae..4098b3a 100644 --- a/include/boost/predef/os/bsd/free.h +++ b/include/boost/predef/os/bsd/free.h @@ -31,6 +31,7 @@ http://en.wikipedia.org/wiki/Freebsd[FreeBSD] operating system. defined(__FreeBSD__) \ ) # ifndef BOOST_OS_BSD_AVAILABLE +# undef BOOST_OS_BSD # define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE # define BOOST_OS_BSD_AVAILABLE # endif diff --git a/include/boost/predef/os/bsd/net.h b/include/boost/predef/os/bsd/net.h index c4e3c92..537f16a 100644 --- a/include/boost/predef/os/bsd/net.h +++ b/include/boost/predef/os/bsd/net.h @@ -36,6 +36,7 @@ http://en.wikipedia.org/wiki/Netbsd[NetBSD] operating system. defined(__NETBSD__) || defined(__NetBSD__) \ ) # ifndef BOOST_OS_BSD_AVAILABLE +# undef BOOST_OS_BSD # define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE # define BOOST_OS_BSD_AVAILABLE # endif diff --git a/include/boost/predef/os/bsd/open.h b/include/boost/predef/os/bsd/open.h index 3a9081c..34f0a71 100644 --- a/include/boost/predef/os/bsd/open.h +++ b/include/boost/predef/os/bsd/open.h @@ -80,6 +80,7 @@ http://en.wikipedia.org/wiki/Openbsd[OpenBSD] operating system. defined(__OpenBSD__) \ ) # ifndef BOOST_OS_BSD_AVAILABLE +# undef BOOST_OS_BSD # define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE # define BOOST_OS_BSD_AVAILABLE # endif diff --git a/include/boost/predef/other.h b/include/boost/predef/other.h index c09ad49..dc7e341 100644 --- a/include/boost/predef/other.h +++ b/include/boost/predef/other.h @@ -1,5 +1,5 @@ /* -Copyright Rene Rivera 2013-2015 +Copyright Rene Ferdinand Rivera Morell 2013-2020 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) @@ -11,6 +11,7 @@ http://www.boost.org/LICENSE_1_0.txt) #endif #include -/*#include */ +#include +#include #endif diff --git a/include/boost/predef/other/endian.h b/include/boost/predef/other/endian.h index 0281e4a..8f116de 100644 --- a/include/boost/predef/other/endian.h +++ b/include/boost/predef/other/endian.h @@ -54,18 +54,14 @@ information and acquired knowledge: */ #if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD -# if BOOST_LIB_C_GNU || BOOST_PLAT_ANDROID +# if BOOST_LIB_C_GNU || BOOST_PLAT_ANDROID || BOOST_OS_BSD_OPEN # include # else # if BOOST_OS_MACOS # include # else # if BOOST_OS_BSD -# if BOOST_OS_BSD_OPEN -# include -# else -# include -# endif +# include # endif # endif # endif @@ -99,7 +95,7 @@ information and acquired knowledge: # endif #endif -/* Built-in byte-swpped big-endian macros. +/* Built-in byte-swapped big-endian macros. */ #if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD @@ -116,7 +112,7 @@ information and acquired knowledge: # endif #endif -/* Built-in byte-swpped little-endian macros. +/* Built-in byte-swapped little-endian macros. */ #if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD @@ -158,7 +154,7 @@ information and acquired knowledge: #endif /* Windows on ARM, if not otherwise detected/specified, is always - * byte-swaped little-endian. + * byte-swapped little-endian. */ #if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD diff --git a/include/boost/predef/other/wordsize.h b/include/boost/predef/other/wordsize.h new file mode 100644 index 0000000..165e786 --- /dev/null +++ b/include/boost/predef/other/wordsize.h @@ -0,0 +1,69 @@ +/* +Copyright Rene Ferdinand Rivera Morell 2020 +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_WORD_SIZE_H +#define BOOST_PREDEF_OTHER_WORD_SIZE_H + +#include +#include +#include + +/* tag::reference[] += `BOOST_ARCH_WORD_BITS` + +Detects the native word size, in bits, for the current architecture. There are +two types of macros for this detection: + +* `BOOST_ARCH_WORD_BITS`, gives the number of word size bits + (16, 32, 64). +* `BOOST_ARCH_WORD_BITS_16`, `BOOST_ARCH_WORD_BITS_32`, and + `BOOST_ARCH_WORD_BITS_64`, indicate when the given word size is + detected. + +They allow for both single checks and direct use of the size in code. + +NOTE: The word size is determined manually on each architecture. Hence use of +the `wordsize.h` header will also include all the architecture headers. + +*/ // end::reference[] + +#ifndef BOOST_ARCH_WORD_BITS_16 +# define BOOST_ARCH_WORD_BITS_16 BOOST_VERSION_NUMBER_NOT_AVAILABLE +#else +# define BOOST_ARCH_WORD_BITS 16 +#endif + +#ifndef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE +#else +# define BOOST_ARCH_WORD_BITS 32 +#endif + +#ifndef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE +#else +# define BOOST_ARCH_WORD_BITS 64 +#endif + +#ifndef BOOST_ARCH_WORD_BITS +# define BOOST_ARCH_WORD_BITS 0 +#endif + +#define BOOST_ARCH_WORD_BITS_16_NAME "16-bit Word Size" +#define BOOST_ARCH_WORD_BITS_32_NAME "32-bit Word Size" +#define BOOST_ARCH_WORD_BITS_64_NAME "64-bit Word Size" + +#endif + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_WORD_BITS_16,BOOST_ARCH_WORD_BITS_16_NAME) + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_WORD_BITS_32,BOOST_ARCH_WORD_BITS_32_NAME) + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_WORD_BITS_64,BOOST_ARCH_WORD_BITS_64_NAME) diff --git a/include/boost/predef/platform.h b/include/boost/predef/platform.h index 65a0e2a..756d65f 100644 --- a/include/boost/predef/platform.h +++ b/include/boost/predef/platform.h @@ -24,6 +24,5 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include // deprecated #include -/*#include */ #endif diff --git a/include/boost/predef/version.h b/include/boost/predef/version.h index 39ef2b4..9c271b0 100644 --- a/include/boost/predef/version.h +++ b/include/boost/predef/version.h @@ -10,6 +10,6 @@ http://www.boost.org/LICENSE_1_0.txt) #include -#define BOOST_PREDEF_VERSION BOOST_VERSION_NUMBER(1,11,0) +#define BOOST_PREDEF_VERSION BOOST_VERSION_NUMBER(1,12,0) #endif diff --git a/meta/libraries.json b/meta/libraries.json index d7e326c..cc3df57 100644 --- a/meta/libraries.json +++ b/meta/libraries.json @@ -2,13 +2,14 @@ "key": "predef", "name": "Predef", "authors": [ - "Rene Rivera" + "René Ferdinand Rivera Morell" ], "description": "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.", "category": [ "Miscellaneous" ], "maintainers": [ - "Rene Rivera " - ] + "René Ferdinand Rivera Morell " + ], + "cxxstd": "98" } diff --git a/test/build.jam b/test/build.jam index e894a31..bbc60fd 100644 --- a/test/build.jam +++ b/test/build.jam @@ -4,11 +4,13 @@ # http://www.boost.org/LICENSE_1_0.txt) import ../tools/check/predef : require check : predef-require predef-check ; +import common ; import path ; +import regex ; # This deals with the unfortunate aspect of a Boost monolithic release # not having the modular include dirs. This is a kludge that just removes -# the direct depdndency to the header if it can't find it. +# the direct dependency to the header if it can't find it. local PREDEF_H = $(BOOST_PREDEF_INCLUDE)/boost/predef.h ; if ! [ path.exists $(PREDEF_H) ] { @@ -25,11 +27,14 @@ project using testing ; -test-suite predef : +test-suite predef-info : [ run info_as_cpp.cpp : : : always_show_run_output ] [ run info_as_c.c : : : always_show_run_output ] [ run info_as_objcpp.mm : : : always_show_run_output ] [ run info_as_objc.m : : : always_show_run_output ] + ; + +test-suite predef : [ run version.cpp ] [ run make.cpp ] [ compile macos_endian.c : [ predef-require "BOOST_OS_MACOS" : cpp ] ] @@ -43,15 +48,62 @@ test-suite predef : [ compile platform_windows.cpp ] ; +local HEADERS = [ path.glob + $(BOOST_PREDEF_INCLUDE)/predef + $(BOOST_PREDEF_INCLUDE)/predef/architecture + $(BOOST_PREDEF_INCLUDE)/predef/architecture/x86 + $(BOOST_PREDEF_INCLUDE)/predef/compiler + $(BOOST_PREDEF_INCLUDE)/predef/hardware + $(BOOST_PREDEF_INCLUDE)/predef/hardware/simd + $(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/arm + $(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/ppc + $(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/x86 + $(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/x86_amd + $(BOOST_PREDEF_INCLUDE)/predef/language + $(BOOST_PREDEF_INCLUDE)/predef/library + $(BOOST_PREDEF_INCLUDE)/predef/library/c + $(BOOST_PREDEF_INCLUDE)/predef/library/std + $(BOOST_PREDEF_INCLUDE)/predef/os + $(BOOST_PREDEF_INCLUDE)/predef/os/bsd + $(BOOST_PREDEF_INCLUDE)/predef/other + $(BOOST_PREDEF_INCLUDE)/predef/platform + : *.h + ] ; +local single_header_cpp ; +for local h in $(HEADERS) +{ + local header_include = [ path.relative $(h) [ path.make $(BOOST_PREDEF_INCLUDE) ] ] ; + local header_cpp = [ regex.replace $(header_include:S=.cpp) "/" "_" ] ; + .HEADER($(header_cpp:B:S=)) = $(header_include) ; + make $(header_cpp) : : @gen_single_header_cpp ; + explicit $(header_cpp) ; + compile $(header_cpp) : on all : $(header_cpp:B:S=) ; + explicit $(header_cpp:B:S=) ; + single_header_cpp += $(header_cpp:B:S=) ; +} + +test-suite predef-headers : $(single_header_cpp) ; + +.file_touch_cmd = [ common.file-touch-command ] ; + +rule gen_single_header_cpp ( target * : source * : properties * ) +{ + HEADER on $(target) = $(.HEADER($(target[1]:B))) ; +} +actions gen_single_header_cpp +{ + $(.file_touch_cmd) @($(<):<=":>=":O=F:E=#include <$(HEADER)>) +} + # Minimal testing done for predef for CI. Since # we don't have many we can just do all of them. -alias minimal : predef ; +alias minimal : predef predef-info ; # Full testing target for regular regression tests. -alias full : predef ; +alias full : predef predef-info ; -# Extra's target. Nothing for Predef. -alias extra ; +# Extra's target. +alias extra : predef-headers ; explicit minimal ; explicit extra ; diff --git a/tools/ci/linux-cxx-install.sh b/tools/ci/linux-cxx-install.sh new file mode 100755 index 0000000..7557385 --- /dev/null +++ b/tools/ci/linux-cxx-install.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# Usage: +# LLVM_OS: LLVM OS release to obtain clang binaries. Only needed for clang install. +# LLVM_VER: The LLVM toolset version to point the repo at. +# PACKAGES: Compiler packages to install. + +set -e +echo ">>>>>" +echo ">>>>> APT: REPO.." +echo ">>>>>" +sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" +if test -n "${LLVM_OS}" -a -n "${LLVM_VER}" ; then + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS}-${LLVM_VER} main" +fi +echo ">>>>>" +echo ">>>>> APT: UPDATE.." +echo ">>>>>" +sudo -E apt-get -o Acquire::Retries=3 update +echo ">>>>>" +echo ">>>>> APT: INSTALL ${PACKAGES}.." +echo ">>>>>" +sudo -E apt-get -o Acquire::Retries=3 -yq --no-install-suggests --no-install-recommends install ${PACKAGES} + +# Use, modification, and distribution are +# subject to the Boost Software License, Version 1.0. (See accompanying +# file LICENSE.txt) +# +# Copyright Rene Rivera 2020. diff --git a/tools/ci/macos-xcode-install.sh b/tools/ci/macos-xcode-install.sh new file mode 100755 index 0000000..95bd173 --- /dev/null +++ b/tools/ci/macos-xcode-install.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +# Usage: +# XCODE_VERSION = Dotted version of Xcode to install and make active. +# XCODE_INSTALL_USER = Account name for developer.apple.com without TFA. +# XCODE_INSTALL_PASSWORD = Password for that account. + +set -e +sudo gem install xcode-install +xcversion update +echo ">>>>>" +echo ">>>>> AVAILABLE.." +echo ">>>>>" +xcversion list +echo ">>>>>" +echo ">>>>> INSTALLL: Xcode ${XCODE_VERSION}.." +echo ">>>>>" +xcversion --verbose --no-progress --no-clean --no-show-release-notes install ${XCODE_VERSION} +echo "" +echo ">>>>>" +echo ">>>>> INSTALL: CLI Tools.." +echo ">>>>>" +xcversion --verbose install-cli-tools +echo "" +echo ">>>>>" +echo ">>>>> AVAILABLE.." +echo ">>>>>" +xcversion list +echo ">>>>>" +echo ">>>>> SELECT: Xcode ${XCODE_VERSION}.." +echo ">>>>>" +xcversion select ${XCODE_VERSION} --symlink + +# Use, modification, and distribution are +# subject to the Boost Software License, Version 1.0. (See accompanying +# file LICENSE.txt) +# +# Copyright Rene Rivera 2020.