Compare commits
212 Commits
boost-1.59
...
pr/add-cma
Author | SHA1 | Date | |
---|---|---|---|
d52ab32466 | |||
73d7b4f66f | |||
29095cefd9 | |||
fc99bc29cb | |||
4bc7cc02ed | |||
094ac2ffdd | |||
13de873d87 | |||
2e65c250f5 | |||
a2608f26a3 | |||
7e31244f01 | |||
6fea8a4b90 | |||
fee815d6d7 | |||
2e35ba95c8 | |||
cb4f8140f1 | |||
f2de8d8211 | |||
a340a52605 | |||
48d9231a1b | |||
eb682657a2 | |||
c53294180d | |||
9ead140e5b | |||
d33798214d | |||
f862009841 | |||
d58fcca2d5 | |||
aa94d69718 | |||
62a50d3892 | |||
32d4581c16 | |||
92881c4c7a | |||
07df9dd360 | |||
d8f410b4d0 | |||
759400b413 | |||
560ff5298e | |||
75b04d80e7 | |||
bb82002af6 | |||
5d8818ddcb | |||
11569d270c | |||
c8c0134926 | |||
c37ef8b959 | |||
aba0bb4470 | |||
02d09e78b6 | |||
7c0c1f2cb0 | |||
d7bad38b5d | |||
9e73c55298 | |||
7a4ca9dc90 | |||
e8681a9b37 | |||
9e31c6455c | |||
0bccaa9ead | |||
c8c26821b9 | |||
5e8f5d5a4b | |||
74f88005cc | |||
4a230ebe85 | |||
e62a9c68b1 | |||
e31d12f25d | |||
2bba31c5f4 | |||
e87cef64fe | |||
6f8a9ae440 | |||
a7cdea8faf | |||
1c0b55c2f9 | |||
0ab200d19e | |||
7c17b932e4 | |||
de79c6d341 | |||
7c99dfbbd5 | |||
284cde95a2 | |||
bca18299d2 | |||
aa4604a3bd | |||
ba45bd73f3 | |||
ada62932d0 | |||
6a24a3a4bb | |||
9afb15401b | |||
0d9d5591da | |||
db499c07df | |||
9f6191e0bc | |||
4c822c49c2 | |||
f109e20ad1 | |||
d81ab5cc34 | |||
cda33c33d9 | |||
6dfdf9d4dd | |||
5e76979e05 | |||
541ec7edef | |||
87c4de2da2 | |||
693e973635 | |||
77c66456dc | |||
43758299bc | |||
ec6c26ef68 | |||
0f86c9b95e | |||
523e866076 | |||
0bb6e754cb | |||
b0ca8915b5 | |||
0d56819d68 | |||
b6910fb493 | |||
822d09f19b | |||
e7e3a2ac38 | |||
eaccac21dc | |||
3c2d8bdb47 | |||
5111859be2 | |||
4f9b045d74 | |||
af39447f70 | |||
72e2f8c288 | |||
dc9b143061 | |||
5393bee297 | |||
6cc5e91e7c | |||
99bcba4ff9 | |||
d39d1b9dc4 | |||
0fb2c586b0 | |||
3680a040a2 | |||
ca4d2f3288 | |||
06f6303d16 | |||
2a2386c6d6 | |||
eabda26cc9 | |||
bab16e199b | |||
41957f466f | |||
43e6ec9493 | |||
dde19914bc | |||
0c0d35857c | |||
347e7dfdc5 | |||
abb1e4850d | |||
3c9f3a518a | |||
6fcc7bb1a2 | |||
1e8d1c2cfc | |||
afb272298a | |||
815e493e7f | |||
ee38c7c65d | |||
a5e8c991c1 | |||
1867ea911c | |||
009367d6a1 | |||
0f70c3578a | |||
afedd8077c | |||
377f96bc14 | |||
c4bebf10ef | |||
1b27540a96 | |||
8f5fcf9bdf | |||
bbddc9fbbf | |||
f825a53329 | |||
4515b465f7 | |||
b38474d0ee | |||
d0b01486a5 | |||
177a6ca792 | |||
e98eff209b | |||
d7569aaa9e | |||
9de7442449 | |||
8b5c2581dc | |||
7b1cdcbe18 | |||
39a4a38e36 | |||
0f20470cbc | |||
acb6b9b8bf | |||
2fb725a93d | |||
6d448857ed | |||
bfac404a0f | |||
0e69791f69 | |||
3dc66cd71f | |||
1af46e66df | |||
92bf0c0316 | |||
96ca3b5048 | |||
cfef5d816d | |||
2d3675f03c | |||
fdb781da3b | |||
7fefba479c | |||
93833f6e9e | |||
6ea2e88762 | |||
e3e95a59ee | |||
5fd655b198 | |||
5576494500 | |||
10601dbaf8 | |||
e566ad33ce | |||
2ae1123abf | |||
0b90b9f19b | |||
a4b32af636 | |||
adc3dbd4e2 | |||
3d96ad842f | |||
afaad7f56b | |||
9a0d1235eb | |||
7399d0169d | |||
4aa12a8965 | |||
e2d5a46cac | |||
5ea2f20dc7 | |||
5758f35ffc | |||
2e1caabff4 | |||
ce9519cf7b | |||
2e241dbd8e | |||
cf37f90429 | |||
d8e85aad16 | |||
40144e5c2b | |||
eb5bb281ab | |||
4c2c48967e | |||
b917db9850 | |||
e6daa340d5 | |||
481f1a198c | |||
0e6e579e6e | |||
3626c9b905 | |||
5ba0a2c5ab | |||
298f2fe663 | |||
f0a0af764c | |||
5ce2ff09f8 | |||
9b66cddaf6 | |||
1cc8ecc579 | |||
4b45a0faf1 | |||
29a0d11553 | |||
132509ee5d | |||
93b58e6799 | |||
e39e6ec7f8 | |||
87a602008c | |||
da88635350 | |||
3275f7ba30 | |||
f6d6fd1d08 | |||
b8d6e7b645 | |||
e29bfedc3e | |||
a01ebb6605 | |||
4f6352e140 | |||
bce7e9ba56 | |||
67250ecae2 | |||
cc9c5cdcf5 | |||
0b0e4d78bf | |||
cc00260202 |
8
.gitignore
vendored
@ -1,2 +1,6 @@
|
||||
/bin
|
||||
/boost-build.jam
|
||||
bin
|
||||
boost-build.jam
|
||||
project-config.jam
|
||||
*.pyc
|
||||
.vscode/settings.json
|
||||
.vscode/ipch
|
||||
|
6
.project
@ -5,7 +5,13 @@
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.python.pydev.PyDevBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.python.pydev.pythonNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
|
5
.pydevproject
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?eclipse-pydev version="1.0"?><pydev_project>
|
||||
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
|
||||
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python interpreter</pydev_property>
|
||||
</pydev_project>
|
43
.travis.yml
@ -1,43 +0,0 @@
|
||||
language: cpp
|
||||
|
||||
notifications:
|
||||
email:
|
||||
recipients:
|
||||
- grafikrobot@gmail.com
|
||||
on_success: change
|
||||
on_failure: change
|
||||
irc:
|
||||
channels:
|
||||
- "chat.freenode.net#boost"
|
||||
template:
|
||||
- "%{repository}/%{branch} (%{commit} - %{author}): %{build_url}: %{message}"
|
||||
on_success: change
|
||||
on_failure: change
|
||||
|
||||
os:
|
||||
- linux
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- compiler: clang
|
||||
env: TOOLSET=clang-3.4
|
||||
- compiler: clang
|
||||
env: TOOLSET=clang-3.5
|
||||
- compiler: clang
|
||||
env: TOOLSET=clang-3.6
|
||||
- compiler: gcc
|
||||
env: TOOLSET=gcc-4.7
|
||||
- compiler: gcc
|
||||
env: TOOLSET=gcc-4.8
|
||||
- compiler: gcc
|
||||
env: TOOLSET=gcc-4.9
|
||||
- compiler: gcc
|
||||
env: TOOLSET=gcc-5.1
|
||||
|
||||
before_install: wget "https://raw.githubusercontent.com/boostorg/regression/develop/ci/src/script.py"
|
||||
install: python script.py install
|
||||
before_script: python script.py before_script
|
||||
script: python script.py script
|
||||
after_success: python script.py after_success
|
||||
after_failure: python script.py after_failure
|
||||
after_script: python script.py after_script
|
46
CMakeLists.txt
Normal file
@ -0,0 +1,46 @@
|
||||
# Copyright Mike Dev 2018
|
||||
# Copyright Rene Rivera 2018
|
||||
# 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
|
||||
|
||||
# NOTE:
|
||||
# CMake support for Boost.Predef is currently experimental at best and the
|
||||
# interface is likely to change in the future
|
||||
#
|
||||
# This file provides minimal cmake support (no unit-tests,
|
||||
# no installation) for integration into a "host" cmake project
|
||||
# via the "add_subdirectory( <path-to-boost-predef> )" command.
|
||||
#
|
||||
# Other cmake targets can then use the public target name
|
||||
# "Boost::predef" in order to express their dependency
|
||||
# on this library. I.e:
|
||||
#
|
||||
# target_link_libraries( <my-exe/lib> PUBLIC Boost::predef )
|
||||
|
||||
# Only need the basic minimum of project, add_library, and
|
||||
# target_include_directories commands.
|
||||
# We support 3.0, but prefer 3.16 policies and behavior
|
||||
cmake_minimum_required( VERSION 3.0...3.16 )
|
||||
|
||||
# Keep VERSION empty when outside the superproject, as that's a pita to
|
||||
# keep up to date with the version header. And don't set LANGUAGES as we
|
||||
# are multi-language and header only, so it's irrelevant.
|
||||
project( BoostPredef VERSION "${BOOST_SUPERPROJECT_VERSION}" )
|
||||
|
||||
# Simple INTERFACE, and header only, library target.
|
||||
add_library( boost_predef INTERFACE )
|
||||
|
||||
# The only usage requirement is include dir for consumers.
|
||||
target_include_directories( boost_predef INTERFACE include )
|
||||
|
||||
# Add an alias to be compatible with consumers that may have used the
|
||||
# FindBoost script.
|
||||
add_library( Boost::predef ALIAS boost_predef )
|
||||
|
||||
if(BOOST_SUPERPROJECT_VERSION)
|
||||
|
||||
include(BoostInstall)
|
||||
boost_install(TARGETS boost_predef HEADER_DIRECTORY include/)
|
||||
|
||||
endif()
|
40
appveyor.yml
@ -1,40 +0,0 @@
|
||||
notifications:
|
||||
- provider: Email
|
||||
to:
|
||||
- grafikrobot@gmail.com
|
||||
on_build_status_changed: true
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
- TOOLSET: vs-2008
|
||||
platform: 32
|
||||
- TOOLSET: vs-2010
|
||||
platform: 32
|
||||
- TOOLSET: vs-2012
|
||||
platform: 32
|
||||
- TOOLSET: vs-2012
|
||||
platform: 64
|
||||
- TOOLSET: vs-2013
|
||||
platform: 32
|
||||
- TOOLSET: vs-2013
|
||||
platform: 64
|
||||
|
||||
configuration:
|
||||
- debug
|
||||
- release
|
||||
|
||||
init:
|
||||
- cd %APPVEYOR_BUILD_FOLDER%/..
|
||||
- appveyor DownloadFile "https://raw.githubusercontent.com/boostorg/regression/develop/ci/src/script.py"
|
||||
- dir
|
||||
- cd %APPVEYOR_BUILD_FOLDER%
|
||||
install: python ../script.py install
|
||||
before_build: python ../script.py before_build
|
||||
build_script: python ../script.py build_script
|
||||
after_build: python ../script.py after_build
|
||||
before_test: python ../script.py before_test
|
||||
test_script: python ../script.py test_script
|
||||
after_test: python ../script.py after_test
|
||||
on_success: python ../script.py on_success
|
||||
on_failure: python ../script.py on_failure
|
||||
on_finish: python ../script.py on_finish
|
203
azure-pipelines.yml
Normal file
@ -0,0 +1,203 @@
|
||||
# Use, modification, and distribution are
|
||||
# subject to 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)
|
||||
#
|
||||
# Copyright Rene Rivera 2019.
|
||||
|
||||
trigger:
|
||||
branches:
|
||||
include:
|
||||
- develop
|
||||
- master
|
||||
- feature/*
|
||||
pr:
|
||||
branches:
|
||||
include:
|
||||
- develop
|
||||
|
||||
variables:
|
||||
AZP: 1
|
||||
AZP_REPO_DIR: $(Build.Repository.LocalPath)
|
||||
AZP_BRANCH: $(Build.SourceBranch)
|
||||
AZP_COMMIT: $(Build.SourceVersion)
|
||||
AZP_REPO: $(Build.Repository.Name)
|
||||
AZP_PULL_REQUEST: $(System.PullRequest.PullRequestNumber)
|
||||
|
||||
jobs:
|
||||
|
||||
- job: 'Linux'
|
||||
pool:
|
||||
vmImage: 'ubuntu-16.04'
|
||||
strategy:
|
||||
matrix:
|
||||
GCC 8 (GNU):
|
||||
TOOLSET: gcc-8
|
||||
CXXSTD: 03,11,14,17,2a
|
||||
CXXDIALECT: gnu
|
||||
GCC 8 (ISO):
|
||||
TOOLSET: gcc-8
|
||||
CXXSTD: 03,11,14,17,2a
|
||||
GCC 7:
|
||||
TOOLSET: gcc-7
|
||||
GCC 6:
|
||||
TOOLSET: gcc-6
|
||||
GCC 5:
|
||||
TOOLSET: gcc-5
|
||||
GCC 4.9:
|
||||
TOOLSET: gcc-4.9
|
||||
GCC 4.8:
|
||||
TOOLSET: gcc-4.8
|
||||
GCC 4.7:
|
||||
TOOLSET: gcc-4.7
|
||||
Clang 8:
|
||||
TOOLSET: clang-8
|
||||
Clang 7:
|
||||
TOOLSET: clang-7
|
||||
Clang 6:
|
||||
TOOLSET: clang-6.0
|
||||
Clang 5:
|
||||
TOOLSET: clang-5.0
|
||||
Clang 4:
|
||||
TOOLSET: clang-4.0
|
||||
Clang 3.9:
|
||||
TOOLSET: clang-3.9
|
||||
Clang 3.8:
|
||||
TOOLSET: clang-3.8
|
||||
Clang 3.7:
|
||||
TOOLSET: clang-3.7
|
||||
Clang 3.6:
|
||||
TOOLSET: clang-3.6
|
||||
Clang 3.5:
|
||||
TOOLSET: clang-3.5
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
- script: python tools/ci/library_test.py install
|
||||
failOnStderr: false
|
||||
displayName: Install
|
||||
- script: python tools/ci/library_test.py script
|
||||
failOnStderr: false
|
||||
displayName: Test
|
||||
|
||||
- job: 'macOS'
|
||||
strategy:
|
||||
matrix:
|
||||
Xcode 10.1:
|
||||
TOOLSET: xcode-10.1
|
||||
XCODE_APP: /Applications/Xcode_10.1.app
|
||||
VM_IMAGE: 'macOS-10.14'
|
||||
Xcode 10.0:
|
||||
TOOLSET: xcode-10.0
|
||||
XCODE_APP: /Applications/Xcode_10.app
|
||||
VM_IMAGE: 'macOS-10.14'
|
||||
Xcode 9.4.1:
|
||||
TOOLSET: xcode-9.4.1
|
||||
XCODE_APP: /Applications/Xcode_9.4.1.app
|
||||
VM_IMAGE: 'macOS-10.13'
|
||||
Xcode 9.4:
|
||||
TOOLSET: xcode-9.4
|
||||
XCODE_APP: /Applications/Xcode_9.4.app
|
||||
VM_IMAGE: 'macOS-10.13'
|
||||
Xcode 9.3.1:
|
||||
TOOLSET: xcode-9.3.1
|
||||
XCODE_APP: /Applications/Xcode_9.3.1.app
|
||||
VM_IMAGE: 'macOS-10.13'
|
||||
Xcode 9.3:
|
||||
TOOLSET: xcode-9.3
|
||||
XCODE_APP: /Applications/Xcode_9.3.app
|
||||
VM_IMAGE: 'macOS-10.13'
|
||||
Xcode 9.2:
|
||||
TOOLSET: xcode-9.2
|
||||
XCODE_APP: /Applications/Xcode_9.2.app
|
||||
VM_IMAGE: 'macOS-10.13'
|
||||
Xcode 9.1:
|
||||
TOOLSET: xcode-9.1
|
||||
XCODE_APP: /Applications/Xcode_9.1.app
|
||||
VM_IMAGE: 'macOS-10.13'
|
||||
Xcode 9.0.1:
|
||||
TOOLSET: xcode-9.0.1
|
||||
XCODE_APP: /Applications/Xcode_9.0.1.app
|
||||
VM_IMAGE: 'macOS-10.13'
|
||||
Xcode 9.0:
|
||||
TOOLSET: xcode-9.0
|
||||
XCODE_APP: /Applications/Xcode_9.app
|
||||
VM_IMAGE: 'macOS-10.13'
|
||||
Xcode 8.3.3:
|
||||
TOOLSET: xcode-8.3
|
||||
XCODE_APP: /Applications/Xcode_8.3.3.app
|
||||
VM_IMAGE: 'macOS-10.13'
|
||||
pool:
|
||||
vmImage: $(VM_IMAGE)
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
- script: sudo xcode-select -switch ${XCODE_APP}
|
||||
failOnStderr: false
|
||||
displayName: Xcode Select
|
||||
- script: python tools/ci/library_test.py install
|
||||
failOnStderr: false
|
||||
displayName: Install
|
||||
- script: python tools/ci/library_test.py script
|
||||
failOnStderr: false
|
||||
displayName: Test
|
||||
|
||||
- job: 'Windows'
|
||||
strategy:
|
||||
matrix:
|
||||
VS 2019:
|
||||
TOOLSET: vs-2019
|
||||
ADDRESS_MODEL: 32,64
|
||||
CXXSTD: 14,latest
|
||||
VM_IMAGE: 'windows-2019'
|
||||
VS 2019 (UWP DESKTOP):
|
||||
TOOLSET: vs-2019
|
||||
ADDRESS_MODEL: 64
|
||||
CXXDEFS: _WIN32_WINNT=0x0A00,WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP
|
||||
VM_IMAGE: 'windows-2019'
|
||||
VS 2019 (UWP PHONE):
|
||||
TOOLSET: vs-2019
|
||||
ADDRESS_MODEL: 64
|
||||
CXXDEFS: _WIN32_WINNT=0x0A00,WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP
|
||||
VM_IMAGE: 'windows-2019'
|
||||
VS 2019 (UWP STORE):
|
||||
TOOLSET: vs-2019
|
||||
ADDRESS_MODEL: 64
|
||||
CXXDEFS: _WIN32_WINNT=0x0A00,WINAPI_FAMILY=WINAPI_FAMILY_PC_APP
|
||||
VM_IMAGE: 'windows-2019'
|
||||
VS 2019 (UWP SERVER):
|
||||
TOOLSET: vs-2019
|
||||
ADDRESS_MODEL: 64
|
||||
CXXDEFS: _WIN32_WINNT=0x0A00,WINAPI_FAMILY=WINAPI_FAMILY_SERVER
|
||||
VM_IMAGE: 'windows-2019'
|
||||
VS 2019 (UWP SYSTEM):
|
||||
TOOLSET: vs-2019
|
||||
ADDRESS_MODEL: 64
|
||||
CXXDEFS: _WIN32_WINNT=0x0A00,WINAPI_FAMILY=WINAPI_FAMILY_SYSTEM
|
||||
VM_IMAGE: 'windows-2019'
|
||||
VS 2017:
|
||||
TOOLSET: vs-2017
|
||||
VM_IMAGE: 'vs2017-win2016'
|
||||
VS 2015:
|
||||
TOOLSET: vs-2015
|
||||
VM_IMAGE: 'vs2015-win2012r2'
|
||||
VS 2013:
|
||||
TOOLSET: vs-2013
|
||||
VM_IMAGE: 'vs2015-win2012r2'
|
||||
MinGW 8.1.0:
|
||||
TOOLSET: mingw-8
|
||||
VM_IMAGE: 'vs2017-win2016'
|
||||
MinGW 8.1.0 (UWP DESKTOP):
|
||||
TOOLSET: mingw-8
|
||||
CXXDEFS: _WIN32_WINNT=0x0A00,WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP
|
||||
VM_IMAGE: 'vs2017-win2016'
|
||||
MinGW 8.1.0 (UWP STORE):
|
||||
TOOLSET: mingw-8
|
||||
CXXDEFS: _WIN32_WINNT=0x0A00,WINAPI_FAMILY=WINAPI_FAMILY_PC_APP
|
||||
VM_IMAGE: 'vs2017-win2016'
|
||||
pool:
|
||||
vmImage: $(VM_IMAGE)
|
||||
steps:
|
||||
- script: python tools/ci/library_test.py install
|
||||
failOnStderr: false
|
||||
displayName: Install
|
||||
- script: python tools/ci/library_test.py script
|
||||
failOnStderr: false
|
||||
displayName: Test
|
39
build.jam
@ -1,6 +1,43 @@
|
||||
# Copyright Rene Rivera 2014
|
||||
# Copyright Rene Rivera 2014-2019
|
||||
# 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)
|
||||
|
||||
#|
|
||||
This B2 project provides support for using the Predef library externally as
|
||||
a standalone project or by embedding in your B2 project tree. To use
|
||||
externally you would need a `use-project` declaration and to use the
|
||||
project as a dependency where needed:
|
||||
|
||||
----
|
||||
use-project /hash-predef : /path/to/hash-predef/root ;
|
||||
|
||||
exe my_thing : main.cpp : <dependency>/hash-predef ;
|
||||
----
|
||||
|
||||
To use in your project tree you would only need to place the Predef tree
|
||||
in a subdirectory and reference the project location as a dependency where
|
||||
needed.
|
||||
|
||||
----
|
||||
exe my_thin : main.cpp : <dependency>libs/hash-predef ;
|
||||
----
|
||||
|#
|
||||
|
||||
import project ;
|
||||
|
||||
path-constant BOOST_PREDEF_ROOT : . ;
|
||||
path-constant BOOST_PREDEF_INCLUDE : include ;
|
||||
constant PREDEF_DIST : boost ;
|
||||
|
||||
project /boost/predef
|
||||
: usage-requirements
|
||||
<include>$(BOOST_PREDEF_INCLUDE) ;
|
||||
|
||||
if [ project.is-jamroot-module $(__name__) ]
|
||||
{
|
||||
local attributes = [ project.attributes $(__name__) ] ;
|
||||
$(attributes).set "build-dir" : bin ;
|
||||
}
|
||||
|
||||
alias libs ;
|
||||
|
205
check/predef.jam
@ -1,206 +1,17 @@
|
||||
# Copyright Rene Rivera 2015
|
||||
# Copyright Rene Rivera 2016
|
||||
# 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)
|
||||
|
||||
# Defines rules that provide requirements based on checking
|
||||
# conditions using Boost Predef definitions and version numbers.
|
||||
|
||||
# Hack, to reload check/predef.jam at its new location.
|
||||
import modules ;
|
||||
import project ;
|
||||
import feature ;
|
||||
import string ;
|
||||
import toolset ;
|
||||
import modules ;
|
||||
import path ;
|
||||
import "class" : new ;
|
||||
|
||||
# Create a project for our targets.
|
||||
project.extension predef check ;
|
||||
|
||||
# Feature to pass check expressions to check programs.
|
||||
feature.feature predef-expression : : free ;
|
||||
|
||||
# Check programs. Each needs to be compiled for different languages
|
||||
# even though they are all the same source code.
|
||||
local rule check_target ( language : ext )
|
||||
local _loaded_ ;
|
||||
for local _module_ in [ modules.peek modules : .loaded ]
|
||||
{
|
||||
# Need to use absolute paths because we don't know the
|
||||
# context of the invocation which affects where the paths
|
||||
# originate from.
|
||||
local predef_jam
|
||||
= [ modules.binding $(__name__) ] ;
|
||||
local source_path
|
||||
= $(predef_jam:D)/predef_check_as_$(language).$(ext) ;
|
||||
local include_path
|
||||
= $(predef_jam:D)/../include ;
|
||||
_check_exe_($(language)) = [
|
||||
exe predef_check_as_$(language)
|
||||
: $(source_path)
|
||||
: <include>$(include_path) ] ;
|
||||
explicit predef_check_as_$(language) ;
|
||||
}
|
||||
check_target c : c ;
|
||||
check_target cpp : cpp ;
|
||||
check_target objc : m ;
|
||||
check_target objcpp : mm ;
|
||||
|
||||
# Checks the expressions and when used evaluates to the true-properties
|
||||
# if the expressions are all true. Otherwise evaluates to the
|
||||
# false-properties.
|
||||
rule check ( expressions + : language ? : true-properties * : false-properties * )
|
||||
{
|
||||
# Default to C++ on the check context.
|
||||
language ?= cpp ;
|
||||
|
||||
local project_target = [ project.target $(__name__) ] ;
|
||||
project.push-current $(project_target) ;
|
||||
local terms ;
|
||||
local result ;
|
||||
for expression in $(expressions)
|
||||
if $(_module_) != "predef"
|
||||
{
|
||||
if $(expression:L) in "and" "or"
|
||||
{
|
||||
terms += $(expression:L) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
# The check program to use.
|
||||
local exe_target = [ $(_check_exe_($(language))).name ] ;
|
||||
exe_target = /check/predef//$(exe_target) ;
|
||||
|
||||
# Create the check run if we don't have one yet.
|
||||
local key = [ MD5 $(language)::$(expression) ] ;
|
||||
if ! ( $(key) in $(_checks_) )
|
||||
{
|
||||
_checks_ += $(key) ;
|
||||
_message_(/check/predef//$(key).txt) = $(expression) ;
|
||||
make
|
||||
$(key).txt :
|
||||
$(exe_target) :
|
||||
@$(__name__).predef_check_action :
|
||||
<predef-expression>$(expression) ;
|
||||
explicit
|
||||
$(key).txt ;
|
||||
}
|
||||
|
||||
terms += /check/predef//$(key).txt ;
|
||||
}
|
||||
}
|
||||
local instance = [ new check-expression-evaluator
|
||||
$(terms) : $(true-properties) : $(false-properties) ] ;
|
||||
result = <conditional>@$(instance).check ;
|
||||
project.pop-current ;
|
||||
return $(result) ;
|
||||
}
|
||||
|
||||
# Checks the expressions and when used evaluates to <build>no
|
||||
# if the expressions are all false. Otherwise evaluates to the
|
||||
# nothing.
|
||||
rule require ( expressions + : language ? )
|
||||
{
|
||||
return [ check $(expressions) : $(language) : : <build>no ] ;
|
||||
}
|
||||
|
||||
rule predef_check_action ( targets + : sources + : props * )
|
||||
{
|
||||
PREDEF_CHECK_EXPRESSION on $(targets)
|
||||
= [ feature.get-values <predef-expression> : $(props) ] ;
|
||||
}
|
||||
|
||||
actions predef_check_action bind PREDEF_CHECK_EXPRESSION
|
||||
{
|
||||
$(>) "$(PREDEF_CHECK_EXPRESSION)" > $(<)
|
||||
}
|
||||
|
||||
class check-expression-evaluator
|
||||
{
|
||||
import configure ;
|
||||
|
||||
rule __init__ ( expression + : true-properties * : false-properties * )
|
||||
{
|
||||
self.expression = $(expression) ;
|
||||
self.true-properties = $(true-properties) ;
|
||||
self.false-properties = $(false-properties) ;
|
||||
}
|
||||
|
||||
rule check ( properties * )
|
||||
{
|
||||
local to-eval ;
|
||||
local tokens = "and" "or" ;
|
||||
# Go through the expression and: eval the target values,
|
||||
# and normalize to a full expression.
|
||||
for local term in $(self.expression)
|
||||
{
|
||||
if ! ( $(term:L) in $(tokens) )
|
||||
{
|
||||
# A value is a target reference that will evan to "true"
|
||||
# or "false".
|
||||
if $(to-eval[-1]:L) && ! ( $(to-eval[-1]:L) in $(tokens) )
|
||||
{
|
||||
# Default to "and" operation.
|
||||
to-eval += "and" ;
|
||||
}
|
||||
local message = [ modules.peek predef : _message_($(term)) ] ;
|
||||
if [ configure.builds $(term) : $(properties) : $(message) ]
|
||||
{
|
||||
to-eval += "true" ;
|
||||
}
|
||||
else
|
||||
{
|
||||
to-eval += "false" ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
to-eval += $(term) ;
|
||||
}
|
||||
}
|
||||
# Eval full the expression.
|
||||
local eval-result = [ eval $(to-eval) ] ;
|
||||
# And resolve true/false properties.
|
||||
if $(eval-result) = "true"
|
||||
{
|
||||
return $(self.true-properties) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $(self.false-properties) ;
|
||||
}
|
||||
}
|
||||
|
||||
rule eval ( e * )
|
||||
{
|
||||
local r ;
|
||||
if $(e[1]) && $(e[2]) && $(e[3])
|
||||
{
|
||||
if $(e[2]) = "and"
|
||||
{
|
||||
if $(e[1]) = "true" && $(e[3]) = "true"
|
||||
{
|
||||
r = [ eval "true" $(e[4-]) ] ;
|
||||
}
|
||||
else
|
||||
{
|
||||
r = [ eval "false" $(e[4-]) ] ;
|
||||
}
|
||||
}
|
||||
else if $(e[2]) = "or"
|
||||
{
|
||||
if $(e[1]) = "true" || $(e[3]) = "true"
|
||||
{
|
||||
r = [ eval "true" $(e[4-]) ] ;
|
||||
}
|
||||
else
|
||||
{
|
||||
r = [ eval "false" $(e[4-]) ] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
r = $(e[1]) ;
|
||||
}
|
||||
return $(r) ;
|
||||
_loaded_ += $(_module_) ;
|
||||
}
|
||||
}
|
||||
modules.poke modules : .loaded : $(_loaded_) ;
|
||||
import ../tools/check/predef ;
|
||||
|
1
doc/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/html/
|
@ -1,4 +1,4 @@
|
||||
# Copyright Rene Rivera 2011
|
||||
# Copyright Rene Rivera 2011-2016
|
||||
# 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)
|
||||
@ -23,6 +23,9 @@ else
|
||||
|
||||
local BOOST_PREDEF_HEADERS = [ path.glob-tree $(BOOST_PREDEF_INCLUDE_ROOT)/boost/predef : *.h ] ;
|
||||
|
||||
# Intermediate targets..
|
||||
|
||||
# Quickbok to boostbook target.
|
||||
xml predef
|
||||
:
|
||||
predef.qbk
|
||||
@ -32,11 +35,20 @@ xml predef
|
||||
;
|
||||
explicit predef ;
|
||||
|
||||
# HTML dependencies for standalone docs.
|
||||
install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ] : <location>html/images ;
|
||||
explicit images ;
|
||||
install callouts : [ glob $(BOOST_ROOT)/doc/src/images/callouts/*.png ] : <location>html/images/callouts ;
|
||||
explicit callouts ;
|
||||
install css : [ glob $(BOOST_ROOT)/doc/src/*.css ] : <location>html ;
|
||||
explicit css ;
|
||||
|
||||
# Default target builds standalone docs.
|
||||
boostbook standalone
|
||||
:
|
||||
predef
|
||||
:
|
||||
<xsl:param>boost.root=../../..
|
||||
<xsl:param>boost.root=../../../..
|
||||
#<xsl:param>generate.section.toc.level=3
|
||||
<xsl:param>chunk.section.depth=2
|
||||
<xsl:param>chunk.first.sections=1
|
||||
@ -46,9 +58,43 @@ boostbook standalone
|
||||
<dependency>css
|
||||
;
|
||||
|
||||
install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ] : <location>html/images ;
|
||||
explicit images ;
|
||||
install callouts : [ glob $(BOOST_ROOT)/doc/src/images/callouts/*.png ] : <location>html/images/callouts ;
|
||||
explicit callouts ;
|
||||
install css : [ glob $(BOOST_ROOT)/doc/src/*.css ] : <location>html ;
|
||||
explicit css ;
|
||||
###############################################################################
|
||||
### Targets for Boost release integration.
|
||||
###############################################################################
|
||||
|
||||
# Target for Boost global documentation integration.
|
||||
#
|
||||
# For documentation that will be integrated into the global documentation
|
||||
# this should be an alias similar to:
|
||||
#
|
||||
# alias boostdoc : my_lib : : : <implicit-dependency>my_lib_boostbook_xml ;
|
||||
# explicit boostdoc ;
|
||||
#
|
||||
# For documentation that is not part of the global documentation, i.e.
|
||||
# it has stadalone documentation, it should be an empty alias:
|
||||
#
|
||||
# alias boostdoc ;
|
||||
# explicit boostdoc ;
|
||||
#
|
||||
alias boostdoc : predef ;
|
||||
explicit boostdoc ;
|
||||
|
||||
# Target for Boost standalone release documentation building.
|
||||
#
|
||||
# For documentation that is not part of the global Boost documentation
|
||||
# this should be an alias to building the "standalone" documentation.
|
||||
# Usual this is just an alias to a "stadalone" target:
|
||||
#
|
||||
# alias boostrelease : stadalone ;
|
||||
# explicit boostrelease ;
|
||||
#
|
||||
# For documentation that is part of the global Boost documentation this
|
||||
# should be an empty alias:
|
||||
#
|
||||
# alias boostrelease ;
|
||||
# explicit boostrelease ;
|
||||
#
|
||||
alias boostrelease ;
|
||||
explicit boostrelease ;
|
||||
|
||||
###############################################################################
|
||||
|
89
doc/hardware_simd.qbk
Normal file
@ -0,0 +1,89 @@
|
||||
SIMD predefs depend on compiler options. For example, you will have to add the
|
||||
option `-msse3` to clang or gcc to enable SSE3. SIMD predefs are also inclusive.
|
||||
This means that if SSE3 is enabled, then every other extensions with a lower
|
||||
version number will implicitly be enabled and detected. However, some extensions
|
||||
are CPU specific, they may not be detected nor enabled when an upper version is
|
||||
enabled.
|
||||
|
||||
[note SSE(1) and SSE2 are automatically enabled by default when using x86-64
|
||||
architecture.]
|
||||
|
||||
To check if any SIMD extension has been enabled, you can use:
|
||||
|
||||
``
|
||||
#include <boost/predef/hardware/simd.h>
|
||||
#include <iostream>
|
||||
|
||||
int main()
|
||||
{
|
||||
#if defined(BOOST_HW_SIMD_AVAILABLE)
|
||||
std::cout << "SIMD detected!" << std::endl;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
``
|
||||
|
||||
When writing SIMD specific code, you may want to check if a particular extension
|
||||
has been detected. To do so you have to use the right architecture predef and
|
||||
compare it. Those predef are of the form `BOOST_HW_SIMD_"ARCH"` (where `"ARCH"`
|
||||
is either `ARM`, `PPC`, or `X86`). For example, if you compile code for x86
|
||||
architecture, you will have to use `BOOST_HW_SIMD_X86`. Its value will be the
|
||||
version number of the most recent SIMD extension detected for the architecture.
|
||||
|
||||
To check if an extension has been enabled:
|
||||
|
||||
``
|
||||
#include <boost/predef/hardware/simd.h>
|
||||
#include <iostream>
|
||||
|
||||
int main()
|
||||
{
|
||||
#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE3_VERSION
|
||||
std::cout << "This is SSE3!" << std::endl;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
``
|
||||
|
||||
[note The *_VERSION* defines that map version number to actual real
|
||||
identifiers. This way it is easier to write comparisons without messing up with
|
||||
version numbers.]
|
||||
|
||||
To *"stricly"* check the most recent detected extension:
|
||||
|
||||
``
|
||||
#include <boost/predef/hardware/simd.h>
|
||||
#include <iostream>
|
||||
|
||||
int main()
|
||||
{
|
||||
#if BOOST_HW_SIMD_X86 == BOOST_HW_SIMD_X86_SSE3_VERSION
|
||||
std::cout << "This is SSE3 and this is the most recent enabled extension!"
|
||||
<< std::endl;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
``
|
||||
|
||||
Because of the version systems of predefs and of the inclusive property of SIMD
|
||||
extensions macros, you can easily check for ranges of supported extensions:
|
||||
|
||||
``
|
||||
#include <boost/predef/hardware/simd.h>
|
||||
#include <iostream>
|
||||
|
||||
int main()
|
||||
{
|
||||
#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE2_VERSION &&\
|
||||
BOOST_HW_SIMD_X86 <= BOOST_HW_SIMD_X86_SSSE3_VERSION
|
||||
std::cout << "This is SSE2, SSE3 and SSSE3!" << std::endl;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
``
|
||||
|
||||
[note Unlike gcc and clang, Visual Studio does not allow you to specify precisely
|
||||
the SSE variants you want to use, the only detections that will take place are
|
||||
SSE, SSE2, AVX and AVX2. For more informations,
|
||||
see [@https://msdn.microsoft.com/en-us/library/b0084kay.aspx here].]
|
||||
|
@ -1,5 +1,5 @@
|
||||
[/
|
||||
Copyright 2014-2015 Rene Rivera
|
||||
Copyright 2014-2019 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)
|
||||
@ -7,6 +7,74 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
[section History]
|
||||
|
||||
[heading 1.11]
|
||||
|
||||
* Add `BOOST_ARCH_RISCV`. (from Andreas Schwab)
|
||||
* Add RISC-V endian detection. (from Thomas Petazzoni)
|
||||
|
||||
[heading 1.10]
|
||||
|
||||
* Fix bad include of sub-BSD os headers from main BSD header.
|
||||
* Fix use of deprecated `TARGET_IPHONE_SIMULATOR` instead of newer
|
||||
`TARGET_OS_SIMULATOR`.
|
||||
* Add `BOOST_PLAT_ANDROID` to resolve conflict between Linux and Android
|
||||
OS predefs. The `BOOST_OS_ANDROID` predef is now deprecated and will be
|
||||
removed in a future release.
|
||||
* Add support for consuming Predef as a CMake project.
|
||||
* Add support for consuming Predef as a standalone B2 project.
|
||||
|
||||
[heading 1.9]
|
||||
|
||||
* Fixes for `BOOST_COMP_NVCC*` predefs. (from Benjamin Worpitz)
|
||||
* Add specific version information for Cygwin OS predef. (from James E. King III)
|
||||
|
||||
[heading 1.8]
|
||||
|
||||
* Add support for __ARM_ARCH macro. (from Tim Blechmann)
|
||||
* Add detection for PTX architecture. (from Benjamin Worpitz)
|
||||
* Add nvcc compiler detection. (from Benjamin Worpitz)
|
||||
* Add support for detecting CUDA. (from Benjamin Worpitz)
|
||||
* Remove reference to obsolete BOOST_ARCH_AMD64. (from Peter Kolbus)
|
||||
|
||||
[heading 1.7]
|
||||
|
||||
* Fix BOOST_ARCH_PARISK/BOOST_ARCH_PARISC typo.
|
||||
* Improved Windows Universal Platform detection. (from James E. King, III)
|
||||
* Add detection for CloudABI with cloudlibc. (from James E. King, III)
|
||||
|
||||
[heading 1.6]
|
||||
|
||||
* Fix Intel C/C++ version 9999 detection to be 12.1.0.
|
||||
* Addition of `BOOST_PREDEF_WORKAROUND` and `BOOST_PREDEF_TESTED_AT` macros
|
||||
for defect workarounds and detection.
|
||||
* Add ARM64 MSVC SIMD detection. (from Minmin Gong)
|
||||
* Add detection of iOS simulator vs device as a platform choice. (from Ruslan
|
||||
Baratov)
|
||||
* Fix MinGW incorrect header guard. (from Ruslan Baratov)
|
||||
|
||||
[heading 1.5]
|
||||
|
||||
* Fix Intel C/C++ compiler version specification.
|
||||
* Add `BOOST_VERSION_NUMBER_MAJOR`, `BOOST_VERSION_NUMBER_MINOR`,
|
||||
`BOOST_VERSION_NUMBER_PATCH` macros to extract components from valid version
|
||||
numbers.
|
||||
* Change VS version numbering. Version after VS2015 will use the compiler
|
||||
version instead of the varied product versions.
|
||||
|
||||
[heading 1.4.1]
|
||||
|
||||
* Small fixes for some redefinition errors, and mispelled macros.
|
||||
* Slightly rearrangement of structure to comply with current library requirements.
|
||||
|
||||
[heading 1.4]
|
||||
|
||||
* Add detection of SIMD hardware. With the addition of the `BOOST_HW_*`
|
||||
category (from Charly Chevalier).
|
||||
* Add compile only version of check utilities to address cross-compile
|
||||
use cases. And changed the BBv2 check support to use compile only checks.
|
||||
* Fix test warnings.
|
||||
* Fix typos on `AVAILABLE` macros for Windows Platform. (from Vemund Handeland)
|
||||
|
||||
[heading 1.3]
|
||||
|
||||
* Fix many problems with `predef_check` functionality.
|
||||
|
4
doc/html/.gitignore
vendored
@ -1,4 +0,0 @@
|
||||
/standalone_HTML.manifest
|
||||
/docutils.css
|
||||
/minimal.css
|
||||
/reference.css
|
@ -1,716 +0,0 @@
|
||||
|
||||
/*=============================================================================
|
||||
Copyright (c) 2004 Joel de Guzman
|
||||
http://spirit.sourceforge.net/
|
||||
|
||||
Copyright 2013 Niall Douglas additions for colors and alignment.
|
||||
Copyright 2013 Paul A. Bristow additions for more colors and alignments.
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompany-
|
||||
ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
=============================================================================*/
|
||||
|
||||
/*=============================================================================
|
||||
Body defaults
|
||||
=============================================================================*/
|
||||
|
||||
body
|
||||
{
|
||||
margin: 1em;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Paragraphs
|
||||
=============================================================================*/
|
||||
|
||||
p
|
||||
{
|
||||
text-align: left;
|
||||
font-size: 10pt;
|
||||
line-height: 1.15;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Program listings
|
||||
=============================================================================*/
|
||||
|
||||
/* Code on paragraphs */
|
||||
p tt.computeroutput
|
||||
{
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
pre.synopsis
|
||||
{
|
||||
font-size: 9pt;
|
||||
margin: 1pc 4% 0pc 4%;
|
||||
padding: 0.5pc 0.5pc 0.5pc 0.5pc;
|
||||
}
|
||||
|
||||
.programlisting,
|
||||
.screen
|
||||
{
|
||||
font-size: 9pt;
|
||||
display: block;
|
||||
margin: 1pc 4% 0pc 4%;
|
||||
padding: 0.5pc 0.5pc 0.5pc 0.5pc;
|
||||
}
|
||||
|
||||
/* Program listings in tables don't get borders */
|
||||
td .programlisting,
|
||||
td .screen
|
||||
{
|
||||
margin: 0pc 0pc 0pc 0pc;
|
||||
padding: 0pc 0pc 0pc 0pc;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Headings
|
||||
=============================================================================*/
|
||||
|
||||
h1, h2, h3, h4, h5, h6
|
||||
{
|
||||
text-align: left;
|
||||
margin: 1em 0em 0.5em 0em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 { font-size: 140%; }
|
||||
h2 { font-weight: bold; font-size: 140%; }
|
||||
h3 { font-weight: bold; font-size: 130%; }
|
||||
h4 { font-weight: bold; font-size: 120%; }
|
||||
h5 { font-weight: normal; font-style: italic; font-size: 110%; }
|
||||
h6 { font-weight: normal; font-style: italic; font-size: 100%; }
|
||||
|
||||
/* Top page titles */
|
||||
title,
|
||||
h1.title,
|
||||
h2.title
|
||||
h3.title,
|
||||
h4.title,
|
||||
h5.title,
|
||||
h6.title,
|
||||
.refentrytitle
|
||||
{
|
||||
font-weight: bold;
|
||||
margin-bottom: 1pc;
|
||||
}
|
||||
|
||||
h1.title { font-size: 140% }
|
||||
h2.title { font-size: 140% }
|
||||
h3.title { font-size: 130% }
|
||||
h4.title { font-size: 120% }
|
||||
h5.title { font-size: 110% }
|
||||
h6.title { font-size: 100% }
|
||||
|
||||
.section h1
|
||||
{
|
||||
margin: 0em 0em 0.5em 0em;
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
.section h2 { font-size: 140% }
|
||||
.section h3 { font-size: 130% }
|
||||
.section h4 { font-size: 120% }
|
||||
.section h5 { font-size: 110% }
|
||||
.section h6 { font-size: 100% }
|
||||
|
||||
/* Code on titles */
|
||||
h1 tt.computeroutput { font-size: 140% }
|
||||
h2 tt.computeroutput { font-size: 140% }
|
||||
h3 tt.computeroutput { font-size: 130% }
|
||||
h4 tt.computeroutput { font-size: 130% }
|
||||
h5 tt.computeroutput { font-size: 130% }
|
||||
h6 tt.computeroutput { font-size: 130% }
|
||||
|
||||
|
||||
/*=============================================================================
|
||||
Author
|
||||
=============================================================================*/
|
||||
|
||||
h3.author
|
||||
{
|
||||
font-size: 100%
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Lists
|
||||
=============================================================================*/
|
||||
|
||||
li
|
||||
{
|
||||
font-size: 10pt;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
/* Unordered lists */
|
||||
ul
|
||||
{
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* Ordered lists */
|
||||
ol
|
||||
{
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Links
|
||||
=============================================================================*/
|
||||
|
||||
a
|
||||
{
|
||||
text-decoration: none; /* no underline */
|
||||
}
|
||||
|
||||
a:hover
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Spirit style navigation
|
||||
=============================================================================*/
|
||||
|
||||
.spirit-nav
|
||||
{
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.spirit-nav a
|
||||
{
|
||||
color: white;
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
.spirit-nav img
|
||||
{
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Copyright footer
|
||||
=============================================================================*/
|
||||
.copyright-footer
|
||||
{
|
||||
text-align: right;
|
||||
font-size: 70%;
|
||||
}
|
||||
|
||||
.copyright-footer p
|
||||
{
|
||||
text-align: right;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Table of contents
|
||||
=============================================================================*/
|
||||
|
||||
div.toc
|
||||
{
|
||||
margin: 1pc 4% 0pc 4%;
|
||||
padding: 0.1pc 1pc 0.1pc 1pc;
|
||||
font-size: 80%;
|
||||
line-height: 1.15;
|
||||
}
|
||||
|
||||
.boost-toc
|
||||
{
|
||||
float: right;
|
||||
padding: 0.5pc;
|
||||
}
|
||||
|
||||
/* Code on toc */
|
||||
.toc .computeroutput { font-size: 120% }
|
||||
|
||||
/* No margin on nested menus */
|
||||
|
||||
.toc dl dl { margin: 0; }
|
||||
|
||||
/*=============================================================================
|
||||
Tables
|
||||
=============================================================================*/
|
||||
|
||||
.table-title,
|
||||
div.table p.title
|
||||
{
|
||||
margin-left: 4%;
|
||||
padding-right: 0.5em;
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
.informaltable table,
|
||||
.table table
|
||||
{
|
||||
width: 92%;
|
||||
margin-left: 4%;
|
||||
margin-right: 4%;
|
||||
}
|
||||
|
||||
div.informaltable table,
|
||||
div.table table
|
||||
{
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
/* Table Cells */
|
||||
div.informaltable table tr td,
|
||||
div.table table tr td
|
||||
{
|
||||
padding: 0.5em;
|
||||
text-align: left;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
div.informaltable table tr th,
|
||||
div.table table tr th
|
||||
{
|
||||
padding: 0.5em 0.5em 0.5em 0.5em;
|
||||
border: 1pt solid white;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
table.simplelist
|
||||
{
|
||||
width: auto !important;
|
||||
margin: 0em !important;
|
||||
padding: 0em !important;
|
||||
border: none !important;
|
||||
}
|
||||
table.simplelist td
|
||||
{
|
||||
margin: 0em !important;
|
||||
padding: 0em !important;
|
||||
text-align: left !important;
|
||||
font-size: 9pt !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Suppress margins in tables
|
||||
=============================================================================*/
|
||||
|
||||
table th > *:first-child,
|
||||
table td > *:first-child
|
||||
{
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
table th > *:last-child,
|
||||
table td > *:last-child
|
||||
{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Blurbs
|
||||
=============================================================================*/
|
||||
|
||||
div.note,
|
||||
div.tip,
|
||||
div.important,
|
||||
div.caution,
|
||||
div.warning,
|
||||
p.blurb
|
||||
{
|
||||
font-size: 9pt; /* A little bit smaller than the main text */
|
||||
line-height: 1.2;
|
||||
display: block;
|
||||
margin: 1pc 4% 0pc 4%;
|
||||
padding: 0.5pc 0.5pc 0.5pc 0.5pc;
|
||||
}
|
||||
|
||||
p.blurb img
|
||||
{
|
||||
padding: 1pt;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Variable Lists
|
||||
=============================================================================*/
|
||||
|
||||
div.variablelist
|
||||
{
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
/* Make the terms in definition lists bold */
|
||||
div.variablelist dl dt,
|
||||
span.term
|
||||
{
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
div.variablelist table tbody tr td
|
||||
{
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
padding: 0em 2em 0em 0em;
|
||||
font-size: 10pt;
|
||||
margin: 0em 0em 0.5em 0em;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
div.variablelist dl dt
|
||||
{
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
div.variablelist dl dd
|
||||
{
|
||||
margin: 0em 0em 0.5em 2em;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
div.variablelist table tbody tr td p,
|
||||
div.variablelist dl dd p
|
||||
{
|
||||
margin: 0em 0em 0.5em 0em;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Misc
|
||||
=============================================================================*/
|
||||
|
||||
/* Title of books and articles in bibliographies */
|
||||
span.title
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
span.underline
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
span.strikethrough
|
||||
{
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
/* Copyright, Legal Notice */
|
||||
div div.legalnotice p
|
||||
{
|
||||
text-align: left
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Colors
|
||||
=============================================================================*/
|
||||
|
||||
@media screen
|
||||
{
|
||||
body {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
/* Syntax Highlighting */
|
||||
.keyword { color: #0000AA; }
|
||||
.identifier { color: #000000; }
|
||||
.special { color: #707070; }
|
||||
.preprocessor { color: #402080; }
|
||||
.char { color: teal; }
|
||||
.comment { color: #800000; }
|
||||
.string { color: teal; }
|
||||
.number { color: teal; }
|
||||
.white_bkd { background-color: #FFFFFF; }
|
||||
.dk_grey_bkd { background-color: #999999; }
|
||||
|
||||
/* Links */
|
||||
a, a .keyword, a .identifier, a .special, a .preprocessor
|
||||
a .char, a .comment, a .string, a .number
|
||||
{
|
||||
color: #005a9c;
|
||||
}
|
||||
|
||||
a:visited, a:visited .keyword, a:visited .identifier,
|
||||
a:visited .special, a:visited .preprocessor a:visited .char,
|
||||
a:visited .comment, a:visited .string, a:visited .number
|
||||
{
|
||||
color: #9c5a9c;
|
||||
}
|
||||
|
||||
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
|
||||
h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
|
||||
h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
|
||||
{
|
||||
text-decoration: none; /* no underline */
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
/* Copyright, Legal Notice */
|
||||
.copyright
|
||||
{
|
||||
color: #666666;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
div div.legalnotice p
|
||||
{
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
/* Program listing */
|
||||
pre.synopsis
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
}
|
||||
|
||||
.programlisting,
|
||||
.screen
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
}
|
||||
|
||||
td .programlisting,
|
||||
td .screen
|
||||
{
|
||||
border: 0px solid #DCDCDC;
|
||||
}
|
||||
|
||||
/* Blurbs */
|
||||
div.note,
|
||||
div.tip,
|
||||
div.important,
|
||||
div.caution,
|
||||
div.warning,
|
||||
p.blurb
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
}
|
||||
|
||||
/* Table of contents */
|
||||
div.toc
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
div.informaltable table tr td,
|
||||
div.table table tr td
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
}
|
||||
|
||||
div.informaltable table tr th,
|
||||
div.table table tr th
|
||||
{
|
||||
background-color: #F0F0F0;
|
||||
border: 1px solid #DCDCDC;
|
||||
}
|
||||
|
||||
.copyright-footer
|
||||
{
|
||||
color: #8F8F8F;
|
||||
}
|
||||
|
||||
/* Misc */
|
||||
span.highlight
|
||||
{
|
||||
color: #00A000;
|
||||
}
|
||||
}
|
||||
|
||||
@media print
|
||||
{
|
||||
/* Links */
|
||||
a
|
||||
{
|
||||
color: black;
|
||||
}
|
||||
|
||||
a:visited
|
||||
{
|
||||
color: black;
|
||||
}
|
||||
|
||||
.spirit-nav
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Program listing */
|
||||
pre.synopsis
|
||||
{
|
||||
border: 1px solid gray;
|
||||
}
|
||||
|
||||
.programlisting,
|
||||
.screen
|
||||
{
|
||||
border: 1px solid gray;
|
||||
}
|
||||
|
||||
td .programlisting,
|
||||
td .screen
|
||||
{
|
||||
border: 0px solid #DCDCDC;
|
||||
}
|
||||
|
||||
/* Table of contents */
|
||||
div.toc
|
||||
{
|
||||
border: 1px solid gray;
|
||||
}
|
||||
|
||||
.informaltable table,
|
||||
.table table
|
||||
{
|
||||
border: 1px solid gray;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
div.informaltable table tr td,
|
||||
div.table table tr td
|
||||
{
|
||||
border: 1px solid gray;
|
||||
}
|
||||
|
||||
div.informaltable table tr th,
|
||||
div.table table tr th
|
||||
{
|
||||
border: 1px solid gray;
|
||||
}
|
||||
|
||||
table.simplelist tr td
|
||||
{
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
/* Misc */
|
||||
span.highlight
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Images
|
||||
=============================================================================*/
|
||||
|
||||
span.inlinemediaobject img
|
||||
{
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/*==============================================================================
|
||||
Super and Subscript: style so that line spacing isn't effected, see
|
||||
http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=1&postId=5341
|
||||
==============================================================================*/
|
||||
|
||||
sup,
|
||||
sub {
|
||||
height: 0;
|
||||
line-height: 1;
|
||||
vertical-align: baseline;
|
||||
position: relative;
|
||||
|
||||
}
|
||||
|
||||
/* For internet explorer: */
|
||||
|
||||
* html sup,
|
||||
* html sub {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
sup {
|
||||
bottom: 1ex;
|
||||
}
|
||||
|
||||
sub {
|
||||
top: .5ex;
|
||||
}
|
||||
|
||||
/*==============================================================================
|
||||
Indexes: pretty much the same as the TOC.
|
||||
==============================================================================*/
|
||||
|
||||
.index
|
||||
{
|
||||
font-size: 80%;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.index ul
|
||||
{
|
||||
padding-left: 3em;
|
||||
}
|
||||
|
||||
.index p
|
||||
{
|
||||
padding: 2px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
.index-entry-level-0
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.index em
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
/*==============================================================================
|
||||
Alignment and coloring use 'role' feature, available from Quickbook 1.6 up.
|
||||
Added from Niall Douglas for role color and alignment.
|
||||
http://article.gmane.org/gmane.comp.lib.boost.devel/243318
|
||||
*/
|
||||
|
||||
/* Add text alignment (see http://www.w3schools.com/cssref/pr_text_text-align.asp) */
|
||||
span.aligncenter
|
||||
{
|
||||
display: inline-block; width: 100%; text-align: center;
|
||||
}
|
||||
span.alignright
|
||||
{
|
||||
display: inline-block; width: 100%; text-align: right;
|
||||
}
|
||||
/* alignleft is the default. */
|
||||
span.alignleft
|
||||
{
|
||||
display: inline-block; width: 100%; text-align: left;
|
||||
}
|
||||
|
||||
/* alignjustify stretches the word spacing so that each line has equal width
|
||||
within a chosen fraction of page width (here arbitrarily 20%).
|
||||
*Not* useful inside table items as the column width remains the total string width.
|
||||
Nor very useful, except to temporarily restrict the width.
|
||||
*/
|
||||
span.alignjustify
|
||||
{
|
||||
display: inline-block; width: 20%; text-align: justify;
|
||||
}
|
||||
|
||||
/* Text colors.
|
||||
Names at http://www.w3.org/TR/2002/WD-css3-color-20020219/ 4.3. X11 color keywords.
|
||||
Quickbook Usage: [role red Some red text]
|
||||
|
||||
*/
|
||||
span.red { inline-block; color: red; }
|
||||
span.green { color: green; }
|
||||
span.lime { color: #00FF00; }
|
||||
span.blue { color: blue; }
|
||||
span.navy { color: navy; }
|
||||
span.yellow { color: yellow; }
|
||||
span.magenta { color: magenta; }
|
||||
span.indigo { color: #4B0082; }
|
||||
span.cyan { color: cyan; }
|
||||
span.purple { color: purple; }
|
||||
span.gold { color: gold; }
|
||||
span.silver { color: silver; } /* lighter gray */
|
||||
span.gray { color: #808080; } /* light gray */
|
Before Width: | Height: | Size: 603 B |
Before Width: | Height: | Size: 374 B |
Before Width: | Height: | Size: 391 B |
Before Width: | Height: | Size: 485 B |
Before Width: | Height: | Size: 410 B |
Before Width: | Height: | Size: 488 B |
Before Width: | Height: | Size: 509 B |
Before Width: | Height: | Size: 499 B |
Before Width: | Height: | Size: 507 B |
Before Width: | Height: | Size: 446 B |
Before Width: | Height: | Size: 431 B |
Before Width: | Height: | Size: 441 B |
Before Width: | Height: | Size: 423 B |
Before Width: | Height: | Size: 431 B |
Before Width: | Height: | Size: 397 B |
Before Width: | Height: | Size: 434 B |
Before Width: | Height: | Size: 420 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 358 B |
Before Width: | Height: | Size: 722 B |
Before Width: | Height: | Size: 336 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 490 B |
Before Width: | Height: | Size: 334 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 867 B |
Before Width: | Height: | Size: 449 B |
Before Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 259 B |
Before Width: | Height: | Size: 264 B |
Before Width: | Height: | Size: 370 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
@ -1,63 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Predef 1.3</title>
|
||||
<link rel="stylesheet" href="boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="index.html" title="Predef 1.3">
|
||||
<link rel="next" href="predef/introduction.html" title="Introduction">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav"><a accesskey="n" href="predef/introduction.html"><img src="images/next.png" alt="Next"></a></div>
|
||||
<div class="article">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<div><h2 class="title">
|
||||
<a name="predef"></a>Predef 1.3</h2></div>
|
||||
<div><div class="authorgroup"><div class="author"><h3 class="author">
|
||||
<span class="firstname">Rene</span> <span class="surname">Rivera</span>
|
||||
</h3></div></div></div>
|
||||
<div><p class="copyright">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera</p></div>
|
||||
<div><div class="legalnotice">
|
||||
<a name="predef.legal"></a><p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></div>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
<div class="toc">
|
||||
<p><b>Table of Contents</b></p>
|
||||
<dl class="toc">
|
||||
<dt><span class="section"><a href="predef/introduction.html">Introduction</a></span></dt>
|
||||
<dt><span class="section"><a href="predef/using_the_predefs.html">Using the predefs</a></span></dt>
|
||||
<dt><span class="section"><a href="predef/adding_new_predefs.html">Adding new predefs</a></span></dt>
|
||||
<dt><span class="section"><a href="predef/reference.html">Reference</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="predef/reference/boost_arch_architecture_macros.html"><code class="computeroutput"><span class="identifier">BOOST_ARCH</span></code> architecture macros</a></span></dt>
|
||||
<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_plat_platform_macros.html"><code class="computeroutput"><span class="identifier">BOOST_PLAT</span></code> platform 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/check_utilities.html">Check Utilities</a></span></dt>
|
||||
<dt><span class="section"><a href="predef/history.html">History</a></span></dt>
|
||||
<dt><span class="section"><a href="predef/to_do.html">To Do</a></span></dt>
|
||||
<dt><span class="section"><a href="predef/acknoledgements.html">Acknoledgements</a></span></dt>
|
||||
</dl>
|
||||
</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: July 01, 2015 at 22:17:15 GMT</small></p></td>
|
||||
<td align="right"><div class="copyright-footer"></div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav"><a accesskey="n" href="predef/introduction.html"><img src="images/next.png" alt="Next"></a></div>
|
||||
</body>
|
||||
</html>
|
@ -1,50 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Acknoledgements</title>
|
||||
<link rel="stylesheet" href="../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../index.html" title="Predef 1.3">
|
||||
<link rel="prev" href="to_do.html" title="To Do">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="to_do.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="predef.acknoledgements"></a><a class="link" href="acknoledgements.html" title="Acknoledgements">Acknoledgements</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
The comprehensiveness of this library would not be possible without the existence
|
||||
of the indispensable resource that is the <a href="http://sourceforge.net/p/predef/" target="_top">Pre-defined
|
||||
C/C++ Compiler Macros</a> 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.
|
||||
</p>
|
||||
<p>
|
||||
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: Mathias Gaunard,
|
||||
Robert Stewart, Joël Lamotte, Lars Viklund, Nathan Ridge, Artyom Beilis, Joshua
|
||||
Boyce, Gottlob Frege, Thomas Heller, Edward Diener, Dave Abrahams, Iain Denniston,
|
||||
Dan Price, Ioannis Papadopoulos, and Robert Ramey. And thanks to Joel Falcou
|
||||
for managing the review of this library.
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="to_do.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,304 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Adding new predefs</title>
|
||||
<link rel="stylesheet" href="../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../index.html" title="Predef 1.3">
|
||||
<link rel="prev" href="using_the_predefs.html" title="Using the predefs">
|
||||
<link rel="next" href="reference.html" title="Reference">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="using_the_predefs.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="reference.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="predef.adding_new_predefs"></a><a class="link" href="adding_new_predefs.html" title="Adding new predefs">Adding new predefs</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
We know that a library like this one will be an eternal work-in-progress. And
|
||||
as such we expect, and look forward to, others contributing corrections and
|
||||
additions to the predefs. With that in mind we need to keep a consistent way
|
||||
of defining the new predefs. Hence all current, and future, predefs follow
|
||||
the same structure and requirements.
|
||||
</p>
|
||||
<h4>
|
||||
<a name="predef.adding_new_predefs.h0"></a>
|
||||
<span class="phrase"><a name="predef.adding_new_predefs.requirements_of_the_header"></a></span><a class="link" href="adding_new_predefs.html#predef.adding_new_predefs.requirements_of_the_header">Requirements
|
||||
of the header</a>
|
||||
</h4>
|
||||
<p>
|
||||
All predefs need to follow a set of requirements:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
The headers must use the Boost Software License.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
The predef must, by default, be defined as <code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER_NOT_AVAILABLE</span></code>.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
The predef must be redefined to a non-zero value once detected.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
The predef must, by default, be defined to <code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER_AVAILABLE</span></code>
|
||||
when the predef is detected.
|
||||
</li>
|
||||
<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 as needed.
|
||||
</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>
|
||||
<li class="listitem">
|
||||
The predef must guarantee that it is the only one defined as detected per
|
||||
category.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
But a predef can define <code class="computeroutput"><span class="special">*</span><span class="identifier">_EMULATED</span></code> macros to indicate that it
|
||||
was previously detected by another header and is being "emulated"
|
||||
by the system. Note that the <code class="computeroutput"><span class="special">*</span><span class="identifier">_AVAILABLE</span></code> macros must still be defined
|
||||
in this situation.
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
And there are some extra guidelines that predef headers should follow:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
The detection should avoid including extra headers that might otherwise
|
||||
not be included by default.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
If the detection must include a header, prefer guarding it within the detection
|
||||
if possible.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
If the detection must include headers unconditionally, and has a choice
|
||||
of headers to include, prefer the ones with the least impact. I.e. include
|
||||
the one with the minimal set of definitions and other dependencies.
|
||||
</li>
|
||||
</ul></div>
|
||||
<h4>
|
||||
<a name="predef.adding_new_predefs.h1"></a>
|
||||
<span class="phrase"><a name="predef.adding_new_predefs.structure_of_the_header"></a></span><a class="link" href="adding_new_predefs.html#predef.adding_new_predefs.structure_of_the_header">Structure
|
||||
of the header</a>
|
||||
</h4>
|
||||
<p>
|
||||
For general consistency it's suggested that new predef headers follow the structure
|
||||
below, as current predef headers do. First we have the copyright and license
|
||||
statement, followed by the include guard:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="comment">/*
|
||||
Copyright Jane Doe YYYY
|
||||
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)
|
||||
*/</span>
|
||||
|
||||
<span class="preprocessor">#ifndef</span> <span class="identifier">BOOST_PREDEF_category_tag_H</span>
|
||||
<span class="preprocessor">#define</span> <span class="identifier">BOOST_PREDEF_category_tag_H</span>
|
||||
</pre>
|
||||
<p>
|
||||
If the detection depends on the detection of another predef you should include
|
||||
those headers here.
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">/</span><span class="identifier">CATEGORY_TAG</span><span class="special">/</span><span class="identifier">DEPENDENCY</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span>
|
||||
</pre>
|
||||
<p>
|
||||
Depending on how you are defining the predef you will at minimum have to include
|
||||
the <code class="computeroutput"><span class="identifier">version_number</span><span class="special">.</span><span class="identifier">h</span></code> header. But you might also want to include
|
||||
the <code class="computeroutput"><span class="identifier">make</span><span class="special">.</span><span class="identifier">h</span></code> header for the version number decomposing
|
||||
utility macros:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">/</span><span class="identifier">version_number</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span>
|
||||
<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">/</span><span class="identifier">make</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span>
|
||||
</pre>
|
||||
<p>
|
||||
The Predef library uses Quickbook for documentation and for the individual
|
||||
predefs to appear in the reference section we add in-code documentation followed
|
||||
by the zero-value default definition of the predef macro. We strongly recommend
|
||||
this particular placement of the documentation and default definition because
|
||||
some development environments automatically interpret this and provide in-line
|
||||
help for the macro. In particular this works for the popular Eclipse IDE:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="comment">/*`
|
||||
[heading `BOOST_category_tag`]
|
||||
|
||||
Documentation about what is detected.
|
||||
*/</span>
|
||||
|
||||
<span class="preprocessor">#define</span> <span class="identifier">BOOST_category_tag</span> <span class="identifier">BOOST_VERSION_NUMBER_NOT_AVAILABLE</span>
|
||||
</pre>
|
||||
<p>
|
||||
Next is the detection and definition of the particular predef. The structure
|
||||
for this is to do a single overall check (<code class="computeroutput"><span class="identifier">condition_a</span></code>)
|
||||
and place further version detection inside this. The first action inside the
|
||||
overall check is to "<code class="computeroutput"><span class="preprocessor">#undef</span>
|
||||
<span class="identifier">BOOST_category_tag</span></code>" 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 "<code class="computeroutput"><span class="preprocessor">#define</span>
|
||||
<span class="identifier">BOOST_category_tag</span> <span class="identifier">BOOST_VERSION_NUMBER_AVAILABLE</span></code>"
|
||||
as the fallback to minimally indicate 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_AVAILABLE</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.
|
||||
</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>
|
||||
</pre>
|
||||
<p>
|
||||
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">#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
|
||||
predef to the test system. This declaration is empty for regular use. And during
|
||||
the test programs they expand out specially to create informational output:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">></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:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#endif</span>
|
||||
</pre>
|
||||
<h4>
|
||||
<a name="predef.adding_new_predefs.h2"></a>
|
||||
<span class="phrase"><a name="predef.adding_new_predefs.adding_exclusive_predefs"></a></span><a class="link" href="adding_new_predefs.html#predef.adding_new_predefs.adding_exclusive_predefs">Adding
|
||||
exclusive predefs</a>
|
||||
</h4>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
Internally compiler, operating system, and platforms define <code class="computeroutput"><span class="identifier">BOOST_PREDEF_DETAIL_COMP_DETECTED</span></code>,
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_DEFAIL_OS_DETECTED</span></code>,
|
||||
and <code class="computeroutput"><span class="identifier">BOOST_PREDEF_DETAIL_PLAT_DETECTED</span></code>
|
||||
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:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#if</span> <span class="special">!</span><span class="identifier">BOOST_PREDEF_DETAIL_category_DETECTED</span> <span class="special">&&</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">#endif</span>
|
||||
</pre>
|
||||
<p>
|
||||
And we also include a header that defines the <code class="computeroutput"><span class="special">*</span><span class="identifier">_DETECTED</span></code> macro when we have the detection:
|
||||
</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"># include</span> <span class="special"><</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">CATEGORY_detected</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span>
|
||||
<span class="preprocessor">#endif</span>
|
||||
</pre>
|
||||
<p>
|
||||
Everything else about the header is the same as the basic detection header.
|
||||
</p>
|
||||
<h4>
|
||||
<a name="predef.adding_new_predefs.h3"></a>
|
||||
<span class="phrase"><a name="predef.adding_new_predefs.adding_an_exclusive_but_emulated"></a></span><a class="link" href="adding_new_predefs.html#predef.adding_new_predefs.adding_an_exclusive_but_emulated">Adding
|
||||
an exclusive but emulated predef</a>
|
||||
</h4>
|
||||
<p>
|
||||
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
|
||||
<code class="computeroutput"><span class="special">*</span><span class="identifier">_DETECTION</span></code>
|
||||
macro for the compiler detection. And conditionally define either the base
|
||||
compiler predef <code class="computeroutput"><span class="identifier">BOOST_COMP_compiler</span></code>
|
||||
or the alternate <code class="computeroutput"><span class="identifier">BOOST_COMP_compiler_EMULATED</span></code>
|
||||
predef.
|
||||
</p>
|
||||
<p>
|
||||
The initial detection would look like:
|
||||
</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"># 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_COMP_tag_DETECTION</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_COMP_tag_DETECTION</span> <span class="identifier">BOOST_VERSION_NUMBER_AVAILABLE</span>
|
||||
<span class="preprocessor"># endif</span>
|
||||
<span class="preprocessor">#endif</span>
|
||||
</pre>
|
||||
<p>
|
||||
And then we can conditionally define the base or emulated predefs:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_COMP_tag_DETECTION</span>
|
||||
<span class="preprocessor"># if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_PREDEF_DETAIL_COMP_DETECTED</span><span class="special">)</span>
|
||||
<span class="preprocessor"># define</span> <span class="identifier">BOOST_COMP_tag_EMULATED</span> <span class="identifier">BOOST_COMP_tag_DETECTION</span>
|
||||
<span class="preprocessor"># else</span>
|
||||
<span class="preprocessor"># undef</span> <span class="identifier">BOOST_COMP_tag</span>
|
||||
<span class="preprocessor"># define</span> <span class="identifier">BOOST_COMP_tag</span> <span class="identifier">BOOST_COMP_tag_DETECTION</span>
|
||||
<span class="preprocessor"># endif</span>
|
||||
<span class="preprocessor"># define</span> <span class="identifier">BOOST_category_tag_AVAILABLE</span>
|
||||
<span class="preprocessor"># include</span> <span class="special"><</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">comp_detected</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span>
|
||||
<span class="preprocessor">#endif</span>
|
||||
</pre>
|
||||
<h4>
|
||||
<a name="predef.adding_new_predefs.h4"></a>
|
||||
<span class="phrase"><a name="predef.adding_new_predefs.using_utility_pattern_macros"></a></span><a class="link" href="adding_new_predefs.html#predef.adding_new_predefs.using_utility_pattern_macros">Using utility
|
||||
pattern macros</a>
|
||||
</h4>
|
||||
<p>
|
||||
By including:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">predef</span><span class="special">/</span><span class="identifier">make</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span>
|
||||
</pre>
|
||||
<p>
|
||||
One will get a set of utility macros to decompose common version macros as
|
||||
defined by compilers. For example the EDG compiler uses a simple 3-digit version
|
||||
macro (M,N,P). It can be decomposed and defined as:
|
||||
</p>
|
||||
<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,
|
||||
hexadecimal decomposition, and date decomposition. They follow the format of
|
||||
using "N" for decimal, "F" for hexadecimal, and "Y",
|
||||
"M", "D" for dates.
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="using_the_predefs.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="reference.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,160 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Check Utilities</title>
|
||||
<link rel="stylesheet" href="../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../index.html" title="Predef 1.3">
|
||||
<link rel="prev" href="reference/version_definition_macros.html" title="Version definition macros">
|
||||
<link rel="next" href="history.html" title="History">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="reference/version_definition_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="history.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="predef.check_utilities"></a><a class="link" href="check_utilities.html" title="Check Utilities">Check Utilities</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
The <code class="computeroutput"><span class="identifier">predef_check</span></code> utility provides
|
||||
a facility for building a program that will check a given set of expressions
|
||||
against the definitions it detected when it was built.
|
||||
</p>
|
||||
<h4>
|
||||
<a name="predef.check_utilities.h0"></a>
|
||||
<span class="phrase"><a name="predef.check_utilities.predef_check_programs"></a></span><a class="link" href="check_utilities.html#predef.check_utilities.predef_check_programs"><code class="literal">predef_check</code>
|
||||
programs</a>
|
||||
</h4>
|
||||
<p>
|
||||
Even though there is only one <code class="computeroutput"><span class="identifier">predef_check</span></code>
|
||||
program, there are variations for each of the languages that are detected by
|
||||
Predef to match the convention for sources files. For all of them one invokes
|
||||
with a list of expression arguments. The expressions are evaluated within the
|
||||
context of the particular <code class="literal">predef_check</code> program and if they
|
||||
all are true zero (0) is returned. Otherwise the index of the first false expression
|
||||
is returned.
|
||||
</p>
|
||||
<p>
|
||||
The expression syntax is simple:
|
||||
</p>
|
||||
<pre class="programlisting">predef-definition [ relational-operator version-value ]
|
||||
</pre>
|
||||
<p>
|
||||
<em class="replaceable"><code>predef-definition</code></em> can be any of the Predef definitions.
|
||||
For example <code class="computeroutput"><span class="identifier">BOOST_COMP_GCC</span></code>.
|
||||
</p>
|
||||
<p>
|
||||
<em class="replaceable"><code>relational-operator</code></em> can be any of: <code class="literal">></code>,
|
||||
<code class="literal"><</code>, <code class="literal">>=</code>, <code class="literal"><=</code>,
|
||||
<code class="literal">==</code> and <code class="literal">!=</code>.
|
||||
</p>
|
||||
<p>
|
||||
<em class="replaceable"><code>version-number</code></em> can be a full or partial version
|
||||
triplet value. If it's a partial version triple it is completed with zeros.
|
||||
That is <code class="literal">x.y</code> is equivalent to <code class="literal">x.y.0</code> and
|
||||
<code class="literal">x</code> is equivalent to <code class="literal">x.0.0</code>.
|
||||
</p>
|
||||
<p>
|
||||
The <em class="replaceable"><code>relations-operator</code></em> and <em class="replaceable"><code>version-number</code></em>
|
||||
can be ommited. In which case it is equivalent to:
|
||||
</p>
|
||||
<pre class="programlisting">predef-definition > 0.0.0
|
||||
</pre>
|
||||
<h4>
|
||||
<a name="predef.check_utilities.h1"></a>
|
||||
<span class="phrase"><a name="predef.check_utilities.using_with_boost_build"></a></span><a class="link" href="check_utilities.html#predef.check_utilities.using_with_boost_build">Using
|
||||
with Boost.Build</a>
|
||||
</h4>
|
||||
<p>
|
||||
You can use the <code class="literal">predef_check</code> programs directly from Boost
|
||||
Build to configure target requirements. This is useful for controlling what
|
||||
gets built as part of your project based on the detailed version information
|
||||
available in Predef. The basic use is simple:
|
||||
</p>
|
||||
<pre class="programlisting">import path-to-predef-src/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
exe my_windows_program : windows_source.cpp
|
||||
: [ predef-require "BOOST_OS_WINDOWS" ] ;
|
||||
</pre>
|
||||
<p>
|
||||
That simple use case will skip building the <code class="literal">my_windows_program</code>
|
||||
unless one is building for Windows. Like the direct <code class="literal">predef_check</code>
|
||||
you can pass mutiple expressions using relational comparisons. For example:
|
||||
</p>
|
||||
<pre class="programlisting">import path-to-predef-src/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
lib my_special_lib : source.cpp
|
||||
: [ predef-require "BOOST_OS_WINDOWS != 0" "BOOST_OS_VMS != 0"] ;
|
||||
</pre>
|
||||
<p>
|
||||
And in that case the <code class="literal">my_special_lib</code> is built only when the
|
||||
OS is not Windows or VMS. The <code class="literal">requires</code> rule is a special
|
||||
case of the <code class="literal">check</code> rule. And is defined in terms of it:
|
||||
</p>
|
||||
<pre class="programlisting">rule require ( expressions + : language ? )
|
||||
{
|
||||
return [ check $(expressions) : $(language) : : <build>no ] ;
|
||||
}
|
||||
</pre>
|
||||
<p>
|
||||
The expression can also use explicit "and", "or" logical
|
||||
operators to for more complex checks:
|
||||
</p>
|
||||
<pre class="programlisting">import path-to-predef-src/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
lib my_special_lib : source.cpp
|
||||
: [ predef-require "BOOST_OS_WINDOWS" or "BOOST_OS_VMS"] ;
|
||||
</pre>
|
||||
<p>
|
||||
You can use the <code class="literal">check</code> rule for more control and to implement
|
||||
something other than control of what gets built. The definition for the <code class="literal">check</code>
|
||||
rule is:
|
||||
</p>
|
||||
<pre class="programlisting">rule check ( expressions + : language ? : true-properties * : false-properties * )
|
||||
</pre>
|
||||
<p>
|
||||
When invoked as a reuirement of a Boost Build target this rule will add the
|
||||
<code class="literal">true-properties</code> to the target if all the <code class="literal">expressions</code>
|
||||
evaluate to true. Otherwise the <code class="literal">false-properties</code> get added
|
||||
as requirements. For example you could use it to enable or disable features
|
||||
in your programs:
|
||||
</p>
|
||||
<pre class="programlisting">import path-to-predef-src/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
exe my_special_exe : source.cpp
|
||||
: [ predef-check "BOOST_OS_WINDOWS == 0"
|
||||
: : <define>ENABLE_WMF=0
|
||||
: <define>ENABLE_WMF=1 ] ;
|
||||
</pre>
|
||||
<p>
|
||||
For both <code class="literal">check</code> and <code class="literal">require</code> the <code class="literal">language</code>
|
||||
argument controls which variant of the <code class="literal">predef_check</code> program
|
||||
is used to check the expressions. It defaults to "c++", but can be
|
||||
any of: "c", "cpp", "objc", and "objcpp".
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="reference/version_definition_macros.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="history.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,127 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>History</title>
|
||||
<link rel="stylesheet" href="../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../index.html" title="Predef 1.3">
|
||||
<link rel="prev" href="check_utilities.html" title="Check Utilities">
|
||||
<link rel="next" href="to_do.html" title="To Do">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="check_utilities.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="to_do.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="predef.history"></a><a class="link" href="history.html" title="History">History</a>
|
||||
</h2></div></div></div>
|
||||
<h4>
|
||||
<a name="predef.history.h0"></a>
|
||||
<span class="phrase"><a name="predef.history.1_3"></a></span><a class="link" href="history.html#predef.history.1_3">1.3</a>
|
||||
</h4>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
Fix many problems with <code class="computeroutput"><span class="identifier">predef_check</span></code>
|
||||
functionality.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Update SunPro detection to accomodate latest version of compiler from Oracle.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Addition of Travis-CI and Appveyor testing.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Add <code class="computeroutput"><span class="keyword">and</span></code> and <code class="computeroutput"><span class="keyword">or</span></code> logical operators for <code class="computeroutput"><span class="identifier">predef_check</span></code>
|
||||
expression on the Boost Build side.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Fix <code class="computeroutput"><span class="identifier">BOOST_ARCH_PARISC</span></code> to
|
||||
correctly spelled name (from Graham Hanson).
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Fix <code class="computeroutput"><span class="identifier">MAKE_YYYYM</span></code> macros to
|
||||
correctly limit the month (from rick68).
|
||||
</li>
|
||||
</ul></div>
|
||||
<h4>
|
||||
<a name="predef.history.h1"></a>
|
||||
<span class="phrase"><a name="predef.history.1_2"></a></span><a class="link" href="history.html#predef.history.1_2">1.2</a>
|
||||
</h4>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
Account for skip in Visual Studio product version vs. compiler version.
|
||||
This supports version of VS 2015 an onward.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Add detection of Haiku OS (from Jessica Hamilton).
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Some fixes to endian detection for Android (from mstahl-at-redhat.com).
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Add missing <code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VVRRPP</span></code>
|
||||
macro (from Erik Lindahl).
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Add <code class="computeroutput"><span class="identifier">predef_check</span></code> program
|
||||
and BBv2 integration for build configuration checks.
|
||||
</li>
|
||||
</ul></div>
|
||||
<h4>
|
||||
<a name="predef.history.h2"></a>
|
||||
<span class="phrase"><a name="predef.history.1_1"></a></span><a class="link" href="history.html#predef.history.1_1">1.1</a>
|
||||
</h4>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
Addition of <code class="computeroutput"><span class="identifier">BOOST_PLAT_</span><span class="special">*</span></code> platform definitions for MinGW and Windows
|
||||
platform variants.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Detection of ARM architecture for Windows compilers to target mobile devices
|
||||
of Windows 8.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Improved ARM detection for 64 bit ARM.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Added detection of iOS an an operating system.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Improved detection of endianess on some platforms.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Addition of exclusive plus emulated definitions for platform and compiler
|
||||
detection.
|
||||
</li>
|
||||
</ul></div>
|
||||
<div class="warning"><table border="0" summary="Warning">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../images/warning.png"></td>
|
||||
<th align="left">Warning</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
The big change for this version is the restructuring of the definitions to
|
||||
avoid duplicate definitions in one category. That is, only one <code class="computeroutput"><span class="identifier">BOOST_OS_</span><span class="special">*</span></code>,
|
||||
<code class="computeroutput"><span class="identifier">BOOST_COMP_</span><span class="special">*</span></code>,
|
||||
and <code class="computeroutput"><span class="identifier">BOOST_PLAT_</span><span class="special">*</span></code>
|
||||
variant will be detected (except for sub-categories).
|
||||
</p></td></tr>
|
||||
</table></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="check_utilities.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="to_do.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,206 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Introduction</title>
|
||||
<link rel="stylesheet" href="../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../index.html" title="Predef 1.3">
|
||||
<link rel="prev" href="../index.html" title="Predef 1.3">
|
||||
<link rel="next" href="using_the_predefs.html" title="Using the predefs">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="using_the_predefs.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<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, 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>
|
||||
<span class="phrase"><a name="predef.introduction.proposal"></a></span><a class="link" href="introduction.html#predef.introduction.proposal">Proposal</a>
|
||||
</h4>
|
||||
<p>
|
||||
The idea is to define a set of macros to identify compilers and consistently
|
||||
represent their version. This includes:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
A unique BOOST_VERSION_NUMBER(major,minor,patch) macro to specify version
|
||||
numbers (unfortunately, the name BOOST_VERSION is already taken to designate
|
||||
the version number of boost itself).
|
||||
</li>
|
||||
<li class="listitem">
|
||||
A compiler identification macro, suitable for use in <code class="computeroutput"><span class="preprocessor">#if</span></code>/<code class="computeroutput"><span class="preprocessor">#elif</span></code> directives, for each of the supported
|
||||
compilers. All macros would be defined, regardless of the compiler. The
|
||||
one macro corresponding to the compiler being used would be defined, in
|
||||
terms of BOOST_VERSION_NUMBER, to carry the exact compiler version. All
|
||||
other macros would expand to an expression evaluating to false (for instance,
|
||||
the token 0) to indicate that the corresponding compiler is not present.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
"Null values" could be set, for all macros, in boost/config/select_compiler.hpp;
|
||||
then, for each compiler the corresponding identification macro would be
|
||||
#undef and re-#defined in the corresponding boost/compiler/(cc).hpp; however
|
||||
in the context of the Boost.Config infrastructure using a "prefix"
|
||||
header (to be introduced) or boost/config/suffix.hpp is a better solution.
|
||||
</li>
|
||||
</ul></div>
|
||||
<h4>
|
||||
<a name="predef.introduction.h1"></a>
|
||||
<span class="phrase"><a name="predef.introduction.current_library"></a></span><a class="link" href="introduction.html#predef.introduction.current_library">Current
|
||||
Library</a>
|
||||
</h4>
|
||||
<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, 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"><</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">></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"><</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">></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.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
The headers are usable from multiple languages, that support the C preprocessor.
|
||||
In particular C++, C, Objective C, and Objective C++.
|
||||
</li>
|
||||
</ul></div>
|
||||
<h4>
|
||||
<a name="predef.introduction.h2"></a>
|
||||
<span class="phrase"><a name="predef.introduction.design_choices"></a></span><a class="link" href="introduction.html#predef.introduction.design_choices">Design
|
||||
choices</a>
|
||||
</h4>
|
||||
<p>
|
||||
An important design choice concerns how to represent compiler versions by means
|
||||
of a single integer number suitable for use in preprocessing directives. Let's
|
||||
do some calculation. The "basic" signed type for preprocessing constant-expressions
|
||||
is long in C90 (and C++, as of 2006) and intmax_t in C99. The type long shall
|
||||
at least be able to represent the number <code class="literal">+2 147 483 647</code>.
|
||||
This means the most significant digit can only be 0, 1 or 2; and if we want
|
||||
all decimal digits to be able to vary between 0 and 9, the largest range we
|
||||
can consider is <code class="literal">[0, 999 999 999]</code>. Distributing evenly, this
|
||||
means 3 decimal digits for each version number part.
|
||||
</p>
|
||||
<p>
|
||||
So we can:
|
||||
</p>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
use an uneven distribution or
|
||||
</li>
|
||||
<li class="listitem">
|
||||
use more bits (a larger type) or
|
||||
</li>
|
||||
<li class="listitem">
|
||||
use 3/3/3 and have the particular compiler/platform/stdlib deal with setting
|
||||
the numbers within the 3-digit range.
|
||||
</li>
|
||||
</ol></div>
|
||||
<p>
|
||||
It appears relatively safe to go for the first option and set it at 2/2/5.
|
||||
That covers CodeWarrior and others, which are up to and past 10 for the major
|
||||
number. Some compilers use the build number in lieu of the patch one; five
|
||||
digits (which is already reached by VC++ 8) seems a reasonable limit even in
|
||||
this case.
|
||||
</p>
|
||||
<div class="note"><table border="0" summary="Note">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
|
||||
<th align="left">Note</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
A 2/2/6 scheme would allow for bigger patch/build numbers at the cost, for
|
||||
instance, of limiting the major version number to 20 (or, with further constraints,
|
||||
to 21).
|
||||
</p></td></tr>
|
||||
</table></div>
|
||||
<p>
|
||||
It might reassure the reader that this decision is actually encoded in one
|
||||
place in the code; the definition of <code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code>.
|
||||
</p>
|
||||
<h4>
|
||||
<a name="predef.introduction.h3"></a>
|
||||
<span class="phrase"><a name="predef.introduction.future_work"></a></span><a class="link" href="introduction.html#predef.introduction.future_work">Future
|
||||
work</a>
|
||||
</h4>
|
||||
<p>
|
||||
Even though the basics of this library are done, there is much work that can
|
||||
be done:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
Right now we limit the detection of libraries to known built-in predefined
|
||||
macros, and to guaranteed to exist system and library headers. It might
|
||||
be interesting to add something like auto-configuration predefs. This way
|
||||
we can add definitions for user specific libraries and features.
|
||||
</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. 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
|
||||
be good to add optionally included headers so that user can get consistent
|
||||
version number definitions for libraries they use.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Having a consistent set of version number definitions opens the door to
|
||||
improving the user level syntax of libraries that do checks against version
|
||||
numbers. Specifically Boost Config's <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span></code>
|
||||
macro would benefit from a more readable syntax. As would the <code class="computeroutput"><span class="identifier">BOOST_TESTED_AT</span></code> detail macro.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
And obviously there's lots of work to do in reformulating the existing
|
||||
Boost libraries to use the Predef library once it's accepted.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
And there's the continuing work of adding definitions for present and future
|
||||
compilers, platforms, architectures, languages, and libraries.
|
||||
</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="using_the_predefs.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,46 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Reference</title>
|
||||
<link rel="stylesheet" href="../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../index.html" title="Predef 1.3">
|
||||
<link rel="prev" href="adding_new_predefs.html" title="Adding new predefs">
|
||||
<link rel="next" href="reference/boost_arch_architecture_macros.html" title="BOOST_ARCH architecture macros">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="adding_new_predefs.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="reference/boost_arch_architecture_macros.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="predef.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
|
||||
</h2></div></div></div>
|
||||
<div class="toc"><dl class="toc">
|
||||
<dt><span class="section"><a href="reference/boost_arch_architecture_macros.html"><code class="computeroutput"><span class="identifier">BOOST_ARCH</span></code> architecture macros</a></span></dt>
|
||||
<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_plat_platform_macros.html"><code class="computeroutput"><span class="identifier">BOOST_PLAT</span></code> platform 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>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="adding_new_predefs.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="reference/boost_arch_architecture_macros.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,335 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>BOOST_LANG language standards macros</title>
|
||||
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../reference.html" title="Reference">
|
||||
<link rel="prev" href="boost_comp_compiler_macros.html" title="BOOST_COMP compiler macros">
|
||||
<link rel="next" href="boost_lib_library_macros.html" title="BOOST_LIB library macros">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost_comp_compiler_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="boost_lib_library_macros.html"><img src="../../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="predef.reference.boost_lang_language_standards_ma"></a><a class="link" href="boost_lang_language_standards_ma.html" title="BOOST_LANG language standards macros"><code class="computeroutput"><span class="identifier">BOOST_LANG</span></code> language standards macros</a>
|
||||
</h3></div></div></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lang_language_standards_ma.h0"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lang_language_standards_ma.boost_lang_objc"></a></span><a class="link" href="boost_lang_language_standards_ma.html#predef.reference.boost_lang_language_standards_ma.boost_lang_objc"><code class="computeroutput"><span class="identifier">BOOST_LANG_OBJC</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://en.wikipedia.org/wiki/Objective-C" target="_top">Objective-C</a>
|
||||
language.
|
||||
</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">__OBJC__</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_lang_language_standards_ma.h1"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lang_language_standards_ma.boost_lang_stdc"></a></span><a class="link" href="boost_lang_language_standards_ma.html#predef.reference.boost_lang_language_standards_ma.boost_lang_stdc"><code class="computeroutput"><span class="identifier">BOOST_LANG_STDC</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://en.wikipedia.org/wiki/C_(programming_language)" target="_top">Standard
|
||||
C</a> language. If available, the year of the standard is detected as
|
||||
YYYY.MM.1 from the Epoc date.
|
||||
</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">__STDC__</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">__STDC_VERSION__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lang_language_standards_ma.h2"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lang_language_standards_ma.boost_lang_stdcpp"></a></span><a class="link" href="boost_lang_language_standards_ma.html#predef.reference.boost_lang_language_standards_ma.boost_lang_stdcpp"><code class="computeroutput"><span class="identifier">BOOST_LANG_STDCPP</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://en.wikipedia.org/wiki/C%2B%2B" target="_top">Standard C++</a> language.
|
||||
If available, the year of the standard is detected as YYYY.MM.1 from the
|
||||
Epoc date. Because of the way the C++ standardization process works the defined
|
||||
version year will not be the commonly known year of the standard. Specifically
|
||||
the defined versions are:
|
||||
</p>
|
||||
<div class="table">
|
||||
<a name="predef.reference.boost_lang_language_standards_ma.detected_version_number_vs_c_sta"></a><p class="title"><b>Table 1. Detected Version Number vs. C++ Standard Year</b></p>
|
||||
<div class="table-contents"><table class="table" summary="Detected Version Number vs. C++ Standard Year">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead><tr>
|
||||
<th>
|
||||
<p>
|
||||
Detected Version Number
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Standard Year
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
C++ Standard
|
||||
</p>
|
||||
</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
27.11.1
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
1998
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
ISO/IEC 14882:1998
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
41.12.1
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
2011
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
ISO/IEC 14882:2011
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
</div>
|
||||
<br class="table-break"><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">__cplusplus</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">__cplusplus</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
YYYY.MM.1
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lang_language_standards_ma.h3"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lang_language_standards_ma.boost_lang_stdcppcli"></a></span><a class="link" href="boost_lang_language_standards_ma.html#predef.reference.boost_lang_language_standards_ma.boost_lang_stdcppcli"><code class="computeroutput"><span class="identifier">BOOST_LANG_STDCPPCLI</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://en.wikipedia.org/wiki/C%2B%2B/CLI" target="_top">Standard C++/CLI</a>
|
||||
language. If available, the year of the standard is detected as YYYY.MM.1
|
||||
from the Epoc date.
|
||||
</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">__cplusplus_cli</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">__cplusplus_cli</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
YYYY.MM.1
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lang_language_standards_ma.h4"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lang_language_standards_ma.boost_lang_stdecpp"></a></span><a class="link" href="boost_lang_language_standards_ma.html#predef.reference.boost_lang_language_standards_ma.boost_lang_stdecpp"><code class="computeroutput"><span class="identifier">BOOST_LANG_STDECPP</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://en.wikipedia.org/wiki/Embedded_C%2B%2B" target="_top">Standard Embedded
|
||||
C++</a> language.
|
||||
</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">__embedded_cplusplus</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>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost_comp_compiler_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="boost_lib_library_macros.html"><img src="../../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,897 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>BOOST_LIB library macros</title>
|
||||
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../../index.html" title="Predef 1.3">
|
||||
<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">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost_lang_language_standards_ma.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="boost_os_operating_system_macros.html"><img src="../../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="predef.reference.boost_lib_library_macros"></a><a class="link" href="boost_lib_library_macros.html" title="BOOST_LIB library macros"><code class="computeroutput"><span class="identifier">BOOST_LIB</span></code> library macros</a>
|
||||
</h3></div></div></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h0"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_c_gnu"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_c_gnu"><code class="computeroutput"><span class="identifier">BOOST_LIB_C_GNU</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://en.wikipedia.org/wiki/Glibc" target="_top">GNU glibc</a> Standard
|
||||
C library. Version number available as major, and minor.
|
||||
</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">__GLIBC__</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">__GNU_LIBRARY__</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">__GLIBC__</span></code>, <code class="computeroutput"><span class="identifier">__GLIBC_MINOR__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.0
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">__GNU_LIBRARY__</span></code>,
|
||||
<code class="computeroutput"><span class="identifier">__GNU_LIBRARY_MINOR__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.0
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h1"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_c_uc"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_c_uc"><code class="computeroutput"><span class="identifier">BOOST_LIB_C_UC</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://en.wikipedia.org/wiki/Uclibc" target="_top">uClibc</a> Standard
|
||||
C library.
|
||||
</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">__UCLIBC__</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">__UCLIBC_MAJOR__</span></code>,
|
||||
<code class="computeroutput"><span class="identifier">__UCLIBC_MINOR__</span></code>,
|
||||
<code class="computeroutput"><span class="identifier">__UCLIBC_SUBLEVEL__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h2"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_c_vms"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_c_vms"><code class="computeroutput"><span class="identifier">BOOST_LIB_C_VMS</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
VMS libc Standard C library. 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">__CRTL_VER</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">__CRTL_VER</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h3"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_c_zos"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_c_zos"><code class="computeroutput"><span class="identifier">BOOST_LIB_C_ZOS</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
z/OS libc Standard C library. 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">__LIBREL__</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">__LIBREL__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">__TARGET_LIB__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h4"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_cxx"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_cxx"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_CXX</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://libcxx.llvm.org/" target="_top">libc++</a> C++ Standard Library.
|
||||
</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">_LIBCPP_VERSION</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">_LIBCPP_VERSION</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.0.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h5"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_dinkumware"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_dinkumware"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_DINKUMWARE</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://en.wikipedia.org/wiki/Dinkumware" target="_top">Dinkumware</a> Standard
|
||||
C++ Library. If available version number 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">_YVALS</span></code>, <code class="computeroutput"><span class="identifier">__IBMCPP__</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">_CPPLIB_VER</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">_CPPLIB_VER</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.0
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h6"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_como"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_como"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_COMO</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://www.comeaucomputing.com/libcomo/" target="_top">Comeau Computing</a>
|
||||
Standard C++ Library. Version number available as major.
|
||||
</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">__LIBCOMO__</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">__LIBCOMO_VERSION__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.0.0
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h7"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_msipl"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_msipl"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_MSIPL</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://modena.us/" target="_top">Modena Software Lib++</a> Standard C++
|
||||
Library.
|
||||
</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">MSIPL_COMPILE_H</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">__MSIPL_COMPILE_H</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_lib_library_macros.h8"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_msl"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_msl"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_MSL</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://www.freescale.com/" target="_top">Metrowerks</a> Standard C++ Library.
|
||||
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">__MSL_CPP__</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">__MSL__</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">__MSL_CPP__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">__MSL__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h9"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_rw"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_rw"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_RW</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://stdcxx.apache.org/" target="_top">Roguewave</a> Standard C++ library.
|
||||
If available version number 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">__STD_RWCOMPILER_H__</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">_RWSTD_VER</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">_RWSTD_VER</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h10"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_sgi"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_sgi"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_SGI</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://www.sgi.com/tech/stl/" target="_top">SGI</a> Standard C++ library.
|
||||
If available version number 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">__STL_CONFIG_H</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">__SGI_STL</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h11"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_gnu"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_gnu"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_GNU</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://gcc.gnu.org/libstdc++/" target="_top">GNU libstdc++</a> Standard
|
||||
C++ library. Version number available as year (from 1970), month, and day.
|
||||
</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">__GLIBCXX__</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">__GLIBCPP__</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">__GLIBCXX__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">__GLIBCPP__</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h12"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_stlport"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_stlport"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_STLPORT</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://sourceforge.net/projects/stlport/" target="_top">STLport Standard C++</a>
|
||||
library. 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">__SGI_STL_PORT</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">_STLPORT_VERSION</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">_STLPORT_MAJOR</span></code>,
|
||||
<code class="computeroutput"><span class="identifier">_STLPORT_MINOR</span></code>,
|
||||
<code class="computeroutput"><span class="identifier">_STLPORT_PATCHLEVEL</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">_STLPORT_VERSION</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">__SGI_STL_PORT</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
V.R.P
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_lib_library_macros.h13"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_lib_library_macros.boost_lib_std_ibm"></a></span><a class="link" href="boost_lib_library_macros.html#predef.reference.boost_lib_library_macros.boost_lib_std_ibm"><code class="computeroutput"><span class="identifier">BOOST_LIB_STD_IBM</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://www.ibm.com/software/awdtools/xlcpp/" target="_top">IBM VACPP Standard
|
||||
C++</a> library.
|
||||
</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">__IBMCPP__</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>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost_lang_language_standards_ma.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="boost_os_operating_system_macros.html"><img src="../../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,277 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>BOOST_PLAT platform macros</title>
|
||||
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../../index.html" title="Predef 1.3">
|
||||
<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="next" href="other_macros.html" title="Other macros">
|
||||
</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="n" href="other_macros.html"><img src="../../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="predef.reference.boost_plat_platform_macros"></a><a class="link" href="boost_plat_platform_macros.html" title="BOOST_PLAT platform macros"><code class="computeroutput"><span class="identifier">BOOST_PLAT</span></code> platform macros</a>
|
||||
</h3></div></div></div>
|
||||
<h5>
|
||||
<a name="predef.reference.boost_plat_platform_macros.h0"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_plat_platform_macros.boost_plat_mingw"></a></span><a class="link" href="boost_plat_platform_macros.html#predef.reference.boost_plat_platform_macros.boost_plat_mingw"><code class="computeroutput"><span class="identifier">BOOST_PLAT_MINGW</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
<a href="http://en.wikipedia.org/wiki/MinGW" target="_top">MinGW</a> platform. 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_plat_platform_macros.h1"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_plat_platform_macros.boost_plat_windows_desktop"></a></span><a class="link" href="boost_plat_platform_macros.html#predef.reference.boost_plat_platform_macros.boost_plat_windows_desktop"><code class="computeroutput"><span class="identifier">BOOST_PLAT_WINDOWS_DESKTOP</span></code></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="special">!</span><span class="identifier">WINAPI_FAMILY</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">WINAPI_FAMILY</span> <span class="special">==</span> <span class="identifier">WINAPI_FAMILY_DESKTOP_APP</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_plat_platform_macros.h2"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_plat_platform_macros.boost_plat_windows_phone"></a></span><a class="link" href="boost_plat_platform_macros.html#predef.reference.boost_plat_platform_macros.boost_plat_windows_phone"><code class="computeroutput"><span class="identifier">BOOST_PLAT_WINDOWS_PHONE</span></code></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">WINAPI_FAMILY</span> <span class="special">==</span> <span class="identifier">WINAPI_FAMILY_PHONE_APP</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_plat_platform_macros.h3"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_plat_platform_macros.boost_plat_windows_runtime"></a></span><a class="link" href="boost_plat_platform_macros.html#predef.reference.boost_plat_platform_macros.boost_plat_windows_runtime"><code class="computeroutput"><span class="identifier">BOOST_PLAT_WINDOWS_RUNTIME</span></code></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">WINAPI_FAMILY</span> <span class="special">==</span> <span class="identifier">WINAPI_FAMILY_APP</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">WINAPI_FAMILY</span> <span class="special">==</span> <span class="identifier">WINAPI_FAMILY_PHONE_APP</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_plat_platform_macros.h4"></a>
|
||||
<span class="phrase"><a name="predef.reference.boost_plat_platform_macros.boost_plat_windows_store"></a></span><a class="link" href="boost_plat_platform_macros.html#predef.reference.boost_plat_platform_macros.boost_plat_windows_store"><code class="computeroutput"><span class="identifier">BOOST_PLAT_WINDOWS_STORE</span></code></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">WINAPI_FAMILY</span> <span class="special">==</span> <span class="identifier">WINAPI_FAMILY_APP</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>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</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="n" href="other_macros.html"><img src="../../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,85 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Other macros</title>
|
||||
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../reference.html" title="Reference">
|
||||
<link rel="prev" href="boost_plat_platform_macros.html" title="BOOST_PLAT platform macros">
|
||||
<link rel="next" href="version_definition_macros.html" title="Version definition macros">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost_plat_platform_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="version_definition_macros.html"><img src="../../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="predef.reference.other_macros"></a><a class="link" href="other_macros.html" title="Other macros">Other macros</a>
|
||||
</h3></div></div></div>
|
||||
<h5>
|
||||
<a name="predef.reference.other_macros.h0"></a>
|
||||
<span class="phrase"><a name="predef.reference.other_macros.boost_endian"></a></span><a class="link" href="other_macros.html#predef.reference.other_macros.boost_endian"><code class="computeroutput"><span class="identifier">BOOST_ENDIAN_</span><span class="special">*</span></code></a>
|
||||
</h5>
|
||||
<p>
|
||||
Detection of endian memory ordering. There are four defined macros in this
|
||||
header that define the various generally possible endian memory orderings:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="identifier">BOOST_ENDIAN_BIG_BYTE</span></code>,
|
||||
byte-swapped big-endian.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="identifier">BOOST_ENDIAN_BIG_WORD</span></code>,
|
||||
word-swapped big-endian.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="identifier">BOOST_ENDIAN_LITTLE_BYTE</span></code>,
|
||||
byte-swapped little-endian.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="identifier">BOOST_ENDIAN_LITTLE_WORD</span></code>,
|
||||
word-swapped little-endian.
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
The detection is conservative in that it only identifies endianness that
|
||||
it knows for certain. In particular bi-endianness is not indicated as is
|
||||
it not practically possible to determine the endianness from anything but
|
||||
an operating system provided header. And the currently known headers do not
|
||||
define that programatic bi-endianness is available.
|
||||
</p>
|
||||
<p>
|
||||
This implementation is a compilation of various publicly available information
|
||||
and acquired knowledge:
|
||||
</p>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
The indispensable documentation of "Pre-defined Compiler Macros"
|
||||
<a href="http://sourceforge.net/p/predef/wiki/Endianness" target="_top">Endianness</a>.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
The various endian specifications available in the <a href="http://wikipedia.org/" target="_top">Wikipedia</a>
|
||||
computer architecture pages.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Generally available searches for headers that define endianness.
|
||||
</li>
|
||||
</ol></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost_plat_platform_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="version_definition_macros.html"><img src="../../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,188 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Version definition macros</title>
|
||||
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../reference.html" title="Reference">
|
||||
<link rel="prev" href="other_macros.html" title="Other macros">
|
||||
<link rel="next" href="../check_utilities.html" title="Check Utilities">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<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="../check_utilities.html"><img src="../../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="predef.reference.version_definition_macros"></a><a class="link" href="version_definition_macros.html" title="Version definition macros">Version definition
|
||||
macros</a>
|
||||
</h3></div></div></div>
|
||||
<h5>
|
||||
<a name="predef.reference.version_definition_macros.h0"></a>
|
||||
<span class="phrase"><a name="predef.reference.version_definition_macros.boost_version_number"></a></span><a class="link" href="version_definition_macros.html#predef.reference.version_definition_macros.boost_version_number"><code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code></a>
|
||||
</h5>
|
||||
<pre class="programlisting"><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>
|
||||
</pre>
|
||||
<p>
|
||||
Defines standard version numbers, with these properties:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
Decimal base whole numbers in the range [0,1000000000). The number range
|
||||
is designed to allow for a (2,2,5) triplet. Which fits within a 32 bit
|
||||
value.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
The <code class="computeroutput"><span class="identifier">major</span></code> number can
|
||||
be in the [0,99] range.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
The <code class="computeroutput"><span class="identifier">minor</span></code> number can
|
||||
be in the [0,99] range.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
The <code class="computeroutput"><span class="identifier">patch</span></code> number can
|
||||
be in the [0,99999] range.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Values can be specified in any base. As the defined value is an constant
|
||||
expression.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Value can be directly used in both preprocessor and compiler expressions
|
||||
for comparison to other similarly defined values.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
The implementation enforces the individual ranges for the major, minor,
|
||||
and patch numbers. And values over the ranges are truncated (modulo).
|
||||
</li>
|
||||
</ul></div>
|
||||
<h5>
|
||||
<a name="predef.reference.version_definition_macros.h1"></a>
|
||||
<span class="phrase"><a name="predef.reference.version_definition_macros.boost_predef_make_macros"></a></span><a class="link" href="version_definition_macros.html#predef.reference.version_definition_macros.boost_predef_make_macros"><code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_</span><span class="special">..</span></code>
|
||||
macros</a>
|
||||
</h5>
|
||||
<p>
|
||||
These set of macros decompose common vendor version number macros which are
|
||||
composed version, revision, and patch digits. The naming convention indicates:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
The base of the specified version number. "<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X</span></code>"
|
||||
for hexadecimal digits, and "<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10</span></code>"
|
||||
for decimal digits.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
The format of the vendor version number. Where "<code class="computeroutput"><span class="identifier">V</span></code>"
|
||||
indicates the version digits, "<code class="computeroutput"><span class="identifier">R</span></code>"
|
||||
indicates the revision digits, "<code class="computeroutput"><span class="identifier">P</span></code>"
|
||||
indicates the patch digits, and "<code class="computeroutput"><span class="number">0</span></code>"
|
||||
indicates an ignored digit.
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
Macros are:
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VRP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VVRP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VRPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VVRR</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VRRPPPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VVRRP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VRRPP000</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_0X_VVRRPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VPPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRP000</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRR</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRRPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VRR000</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VV00</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VVRR</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VVRRPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VVRR0PP00</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VVRR0PPPP</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_10_VVRR00PP00</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<h5>
|
||||
<a name="predef.reference.version_definition_macros.h2"></a>
|
||||
<span class="phrase"><a name="predef.reference.version_definition_macros.boost_predef_make_date_macros"></a></span><a class="link" href="version_definition_macros.html#predef.reference.version_definition_macros.boost_predef_make_date_macros"><code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_</span><span class="special">*..</span></code>
|
||||
date macros</a>
|
||||
</h5>
|
||||
<p>
|
||||
Date decomposition macros return a date in the relative to the 1970 Epoch
|
||||
date. If the month is not available, January 1st is used as the month and
|
||||
day. If the day is not available, but the month is, the 1st of the month
|
||||
is used as the day.
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_DATE</span><span class="special">(</span><span class="identifier">Y</span><span class="special">,</span><span class="identifier">M</span><span class="special">,</span><span class="identifier">D</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_YYYYMMDD</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_YYYY</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_PREDEF_MAKE_YYYYMM</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<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="../check_utilities.html"><img src="../../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,43 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>To Do</title>
|
||||
<link rel="stylesheet" href="../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../index.html" title="Predef 1.3">
|
||||
<link rel="prev" href="history.html" title="History">
|
||||
<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="history.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="predef.to_do"></a><a class="link" href="to_do.html" title="To Do">To Do</a>
|
||||
</h2></div></div></div>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
Improve reference documentation.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Provide BOOST_WORKAROUND style macros for public use.
|
||||
</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="history.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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>
|
@ -1,226 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Using the predefs</title>
|
||||
<link rel="stylesheet" href="../boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||
<link rel="home" href="../index.html" title="Predef 1.3">
|
||||
<link rel="up" href="../index.html" title="Predef 1.3">
|
||||
<link rel="prev" href="introduction.html" title="Introduction">
|
||||
<link rel="next" href="adding_new_predefs.html" title="Adding new predefs">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="introduction.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="adding_new_predefs.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="predef.using_the_predefs"></a><a class="link" href="using_the_predefs.html" title="Using the predefs">Using the predefs</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
To use the automatically defined predefs one needs to only include the single
|
||||
top-level header:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">></span>
|
||||
</pre>
|
||||
<p>
|
||||
This defines <span class="bold"><strong>all</strong></span> the version macros known
|
||||
to the library. For each macro it will be defined to either a <span class="emphasis"><em>zero</em></span>
|
||||
valued expression for when the particular item is not detected, and to a <span class="emphasis"><em>positive</em></span>
|
||||
value if it is detected. The predef macros fall onto five categories each with
|
||||
macros of a particular prefix:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
<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_COMP_</span></code> for the compiler
|
||||
one is using.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<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_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_PLAT_</span></code> for platforms
|
||||
on top of operating system or compilers.
|
||||
</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>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
|
||||
<th align="left">Note</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
The detected definitions are for the configuration one is targeting during
|
||||
the compile. In particular in a cross-compile this means the target system,
|
||||
and not the host system.
|
||||
</p></td></tr>
|
||||
</table></div>
|
||||
<p>
|
||||
One uses the individual definitions to compare against specific versions by
|
||||
comparing against the <code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code>
|
||||
macro. For example, to make a choice based on the version of the GCC C++ compiler
|
||||
one would:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">></span>
|
||||
<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
|
||||
|
||||
<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_COMP_GNUC</span> <span class="special">>=</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"><<</span> <span class="string">"GCC compiler is at least version 4.0.0"</span> <span class="special"><<</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"><<</span> <span class="string">"GCC compiler is at older than version 4.0.0, or not a GCC compiler"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
|
||||
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
</pre>
|
||||
<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 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>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">></span>
|
||||
<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
|
||||
|
||||
<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_COMP_GNUC</span><span class="special">)</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"This is GNU GCC!"</span> <span class="special"><<</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"><<</span> <span class="string">"Not GNU GCC."</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
|
||||
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
</pre>
|
||||
<p>
|
||||
And since the predef's are preprocessor definitions the same is possible from
|
||||
the preprocessor:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">></span>
|
||||
<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</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">>=</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>
|
||||
<span class="preprocessor">#endif</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">"Not GNU GCC."</span>
|
||||
<span class="preprocessor">#endif</span>
|
||||
|
||||
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
|
||||
<span class="special">{</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">the_compiler</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
|
||||
<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 an <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.the_emulated_macros"></a></span><a class="link" href="using_the_predefs.html#predef.using_the_predefs.the_emulated_macros">The
|
||||
<code class="computeroutput"><span class="special">*</span><span class="identifier">_EMULATED</span></code>
|
||||
macros</a>
|
||||
</h4>
|
||||
<p>
|
||||
Predef definitions are guaranteed to be uniquely detected within one category.
|
||||
But there are contexts under which multiple underlying detections are possible.
|
||||
The well known example of this is detection of GCC and MSVC compilers which
|
||||
are commonly emulated by other compilers by defining the same base macros.
|
||||
To account for this detection headers are allowed to define <code class="computeroutput"><span class="special">*</span><span class="identifier">_EMULATED</span></code> predefs when this situation is
|
||||
detected. The emulated predefs will be set to the version number of the detection
|
||||
instead of the regular predef macro for that detection. For example MSVC will
|
||||
set <code class="computeroutput"><span class="identifier">BOOST_COMP_MSVC_EMULATED</span></code>
|
||||
but not set <code class="computeroutput"><span class="identifier">BOOST_COM_MSVC</span></code>,
|
||||
and it will also set <code class="computeroutput"><span class="identifier">BOOST_COMP_MSVC_AVAILABLE</span></code>.
|
||||
</p>
|
||||
<h4>
|
||||
<a name="predef.using_the_predefs.h1"></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
|
||||
<code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code> macro</a>
|
||||
</h4>
|
||||
<p>
|
||||
All the predefs are defined to be a use of the <code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code>
|
||||
macro. The macro takes individual major, minor, and patch value expressions:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#define</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="special">...</span>
|
||||
</pre>
|
||||
<p>
|
||||
The arguments are:
|
||||
</p>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
Major version number, as a constant value expression in the range [0,99].
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Minor version number, as a constant value expression in the range [0,99].
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Patch-level version number, as a constant value expression in the range
|
||||
[0,99999].
|
||||
</li>
|
||||
</ol></div>
|
||||
<p>
|
||||
The ranges for each are "enforced" by the use of a modulo ("%"),
|
||||
i.e. truncation, as opposed to a clamp. And hence this means that the limits
|
||||
are enforced only enough to keep from having out-of-range problems. But not
|
||||
enough to prevent other kinds of problems. Like exceeding the range and getting
|
||||
false detections, or non-detections. It is up to the individual predefs to
|
||||
ensure correct usage beyond the range guarantee.
|
||||
</p>
|
||||
<p>
|
||||
The values for the arguments can be any preprocessor valid constant value expression.
|
||||
Only constant value arithmetic is used in the definition of the <code class="computeroutput"><span class="identifier">BOOST_VERSION_NUMBER</span></code> macro and in any of
|
||||
the other predef macros. This means that any allowed base is possible, i.e.
|
||||
binary, octal, decimal, and hexadecimal. For example:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">MY_APPLICATION_VERSION_NUMBER</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">2</span><span class="special">,</span><span class="number">0xA</span><span class="special">,</span><span class="number">015</span><span class="special">)</span>
|
||||
</pre>
|
||||
<p>
|
||||
Is equivalent to:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">MY_APPLICATION_VERSION_NUMBER</span> <span class="identifier">BOOST_VERSION_NUMBER</span><span class="special">(</span><span class="number">2</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">13</span><span class="special">)</span>
|
||||
</pre>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2005, 2008-2015 Rene
|
||||
Rivera<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="introduction.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="adding_new_predefs.html"><img src="../images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,8 +1,10 @@
|
||||
[article Predef
|
||||
[article Boost.Predef
|
||||
[quickbook 1.7]
|
||||
[version 1.3]
|
||||
[version 1.10]
|
||||
[authors [Rivera, Rene]]
|
||||
[copyright 2005, 2008-2015 Rene Rivera]
|
||||
[copyright 2005-2019 Rene Rivera]
|
||||
[copyright 2015 Charly Chevalier]
|
||||
[copyright 2015 Joel Falcou]
|
||||
[purpose Identification and specification of predefined macros.]
|
||||
[license
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
@ -10,6 +12,9 @@
|
||||
[@http://www.boost.org/LICENSE_1_0.txt])
|
||||
]
|
||||
[source-mode c++]
|
||||
[category miscellaneous]
|
||||
[id predef]
|
||||
[dirname predef]
|
||||
]
|
||||
|
||||
[section Introduction]
|
||||
@ -109,12 +114,8 @@ done:
|
||||
* 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.
|
||||
* Having a consistent set of version number definitions opens the door to
|
||||
improving the user level syntax of libraries that do checks against version
|
||||
numbers. Specifically Boost Config's `BOOST_WORKAROUND` macro would benefit
|
||||
from a more readable syntax. As would the `BOOST_TESTED_AT` detail macro.
|
||||
* And obviously there's lots of work to do in reformulating the existing
|
||||
Boost libraries to use the Predef library once it's accepted.
|
||||
Boost libraries to use the Predef library.
|
||||
* And there's the continuing work of adding definitions for present and
|
||||
future compilers, platforms, architectures, languages, and libraries.
|
||||
|
||||
@ -143,6 +144,8 @@ macros of a particular prefix:
|
||||
* `BOOST_OS_` for the operating system we are compiling to.
|
||||
* `BOOST_PLAT_` for platforms on top of operating system or compilers.
|
||||
* `BOOST_ENDIAN_` for endianness of the os and architecture combination.
|
||||
* `BOOST_HW_` for hardware specific features.
|
||||
* `BOOST_HW_SIMD` for SIMD (Single Instruction Multiple Data) detection.
|
||||
|
||||
[note The detected definitions are for the configuration one is targeting
|
||||
during the compile. In particular in a cross-compile this means the target
|
||||
@ -232,7 +235,7 @@ commonly emulated by other compilers by defining the same base macros. To
|
||||
account for this detection headers are allowed to define `*_EMULATED` predefs
|
||||
when this situation is detected. The emulated predefs will be set to the
|
||||
version number of the detection instead of the regular predef macro for that
|
||||
detection. For example MSVC will set `BOOST_COMP_MSVC_EMULATED` but not set `BOOST_COM_MSVC`, and it will also set `BOOST_COMP_MSVC_AVAILABLE`.
|
||||
detection. For example MSVC will set `BOOST_COMP_MSVC_EMULATED` but not set `BOOST_COMP_MSVC`, and it will also set `BOOST_COMP_MSVC_AVAILABLE`.
|
||||
|
||||
[heading Using the `BOOST_VERSION_NUMBER` macro]
|
||||
|
||||
@ -398,7 +401,7 @@ We also need to provide the `*_AVAILABLE` versions of the predef.
|
||||
And for convenience we also want to provide a `*_NAME` macro:
|
||||
|
||||
``
|
||||
#define BOOST_catagory_tag_NAME "Name"
|
||||
#define BOOST_category_tag_NAME "Name"
|
||||
``
|
||||
|
||||
The testing of the predef macros is automated to generate checks for all
|
||||
@ -504,7 +507,7 @@ uses a simple 3-digit version macro (M,N,P). It can be decomposed
|
||||
and defined as:
|
||||
|
||||
``
|
||||
#define BOOST_CCOMP_EDG BOOST_PREDEF_MAKE_N_N_N(__EDG_VERSION__)
|
||||
#define BOOST_COMP_EDG BOOST_PREDEF_MAKE_N_N_N(__EDG_VERSION__)
|
||||
``
|
||||
|
||||
The decomposition macros are split into three types: decimal
|
||||
@ -547,6 +550,10 @@ and "Y", "M", "D" for dates.
|
||||
[include ../include/boost/predef/platform/*.h]
|
||||
[endsect]
|
||||
|
||||
[section `BOOST_HW` hardware macros]
|
||||
[include ../include/boost/predef/hardware/*.h]
|
||||
[endsect]
|
||||
|
||||
[section Other macros]
|
||||
[include ../include/boost/predef/other/*.h]
|
||||
[endsect]
|
||||
@ -611,7 +618,7 @@ version information available in Predef. The basic use is simple:
|
||||
|
||||
[teletype]
|
||||
``
|
||||
import path-to-predef-src/check/predef
|
||||
import path-to-predef-src/tools/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
@ -627,7 +634,7 @@ For example:
|
||||
|
||||
[teletype]
|
||||
``
|
||||
import path-to-predef-src/check/predef
|
||||
import path-to-predef-src/tools/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
@ -655,7 +662,7 @@ to for more complex checks:
|
||||
|
||||
[teletype]
|
||||
``
|
||||
import path-to-predef-src/check/predef
|
||||
import path-to-predef-src/tools/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
@ -682,7 +689,7 @@ features in your programs:
|
||||
|
||||
[teletype]
|
||||
``
|
||||
import path-to-predef-src/check/predef
|
||||
import path-to-predef-src/tools/check/predef
|
||||
: check require
|
||||
: predef-check predef-require ;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
[/
|
||||
Copyright 2014 Rene Rivera
|
||||
Copyright 2014-2017 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)
|
||||
@ -8,6 +8,5 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
[section To Do]
|
||||
|
||||
* Improve reference documentation.
|
||||
* Provide BOOST_WORKAROUND style macros for public use.
|
||||
|
||||
[endsect]
|
||||
|
@ -17,6 +17,7 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
#include <boost/predef/os.h>
|
||||
#include <boost/predef/other.h>
|
||||
#include <boost/predef/platform.h>
|
||||
#include <boost/predef/hardware.h>
|
||||
|
||||
#include <boost/predef/version.h>
|
||||
|
||||
|
@ -19,7 +19,9 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
#include <boost/predef/architecture/mips.h>
|
||||
#include <boost/predef/architecture/parisc.h>
|
||||
#include <boost/predef/architecture/ppc.h>
|
||||
#include <boost/predef/architecture/ptx.h>
|
||||
#include <boost/predef/architecture/pyramid.h>
|
||||
#include <boost/predef/architecture/riscv.h>
|
||||
#include <boost/predef/architecture/rs6k.h>
|
||||
#include <boost/predef/architecture/sparc.h>
|
||||
#include <boost/predef/architecture/superh.h>
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright Rene Rivera 2008-2015
|
||||
Copyright Rene Rivera 2008-2019
|
||||
Copyright Franz Detro 2014
|
||||
Copyright (c) Microsoft Corporation 2014
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
@ -21,28 +21,68 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__arm__`] [__predef_detection__]]
|
||||
[[`__arm64`] [__predef_detection__]]
|
||||
[[`__thumb__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH`] [__predef_detection__]]
|
||||
[[`__TARGET_ARCH_ARM`] [__predef_detection__]]
|
||||
[[`__TARGET_ARCH_THUMB`] [__predef_detection__]]
|
||||
[[`_M_ARM`] [__predef_detection__]]
|
||||
[[`__arm__`] [__predef_detection__]]
|
||||
[[`__arm64`] [__predef_detection__]]
|
||||
[[`__thumb__`] [__predef_detection__]]
|
||||
[[`_M_ARM64`] [__predef_detection__]]
|
||||
[[`__aarch64__`] [__predef_detection__]]
|
||||
[[`__AARCH64EL__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_7__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_7A__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_7R__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_7M__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_6K__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_6Z__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_6KZ__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_6T2__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_5TE__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_5TEJ__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_4T__`] [__predef_detection__]]
|
||||
[[`__ARM_ARCH_4__`] [__predef_detection__]]
|
||||
|
||||
[[`__arm64`] [8.0.0]]
|
||||
[[`__ARM_ARCH`] [V.0.0]]
|
||||
[[`__TARGET_ARCH_ARM`] [V.0.0]]
|
||||
[[`__TARGET_ARCH_THUMB`] [V.0.0]]
|
||||
[[`_M_ARM`] [V.0.0]]
|
||||
[[`__arm64`] [8.0.0]]
|
||||
[[`_M_ARM64`] [8.0.0]]
|
||||
[[`__aarch64__`] [8.0.0]]
|
||||
[[`__AARCH64EL__`] [8.0.0]]
|
||||
[[`__ARM_ARCH_7__`] [7.0.0]]
|
||||
[[`__ARM_ARCH_7A__`] [7.0.0]]
|
||||
[[`__ARM_ARCH_7R__`] [7.0.0]]
|
||||
[[`__ARM_ARCH_7M__`] [7.0.0]]
|
||||
[[`__ARM_ARCH_6K__`] [6.0.0]]
|
||||
[[`__ARM_ARCH_6Z__`] [6.0.0]]
|
||||
[[`__ARM_ARCH_6KZ__`] [6.0.0]]
|
||||
[[`__ARM_ARCH_6T2__`] [6.0.0]]
|
||||
[[`__ARM_ARCH_5TE__`] [5.0.0]]
|
||||
[[`__ARM_ARCH_5TEJ__`] [5.0.0]]
|
||||
[[`__ARM_ARCH_4T__`] [4.0.0]]
|
||||
[[`__ARM_ARCH_4__`] [4.0.0]]
|
||||
]
|
||||
*/
|
||||
|
||||
#define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#if defined(__arm__) || defined(__arm64) || defined(__thumb__) || \
|
||||
defined(__TARGET_ARCH_ARM) || defined(__TARGET_ARCH_THUMB) || \
|
||||
defined(_M_ARM)
|
||||
#if \
|
||||
defined(__ARM_ARCH) || defined(__TARGET_ARCH_ARM) || \
|
||||
defined(__TARGET_ARCH_THUMB) || defined(_M_ARM) || \
|
||||
defined(__arm__) || defined(__arm64) || defined(__thumb__) || \
|
||||
defined(_M_ARM64) || defined(__aarch64__) || defined(__AARCH64EL__) || \
|
||||
defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
|
||||
defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \
|
||||
defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
|
||||
defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) || \
|
||||
defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) || \
|
||||
defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__)
|
||||
# undef BOOST_ARCH_ARM
|
||||
# if !defined(BOOST_ARCH_ARM) && defined(__arm64)
|
||||
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
|
||||
# if !defined(BOOST_ARCH_ARM) && defined(__ARM_ARCH)
|
||||
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__ARM_ARCH,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM)
|
||||
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0)
|
||||
@ -53,6 +93,29 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
# if !defined(BOOST_ARCH_ARM) && defined(_M_ARM)
|
||||
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_ARM) && ( \
|
||||
defined(__arm64) || defined(_M_ARM64) || defined(__aarch64__) || \
|
||||
defined(__AARCH64EL__) )
|
||||
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_ARM) && ( \
|
||||
defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
|
||||
defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) )
|
||||
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(7,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_ARM) && ( \
|
||||
defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
|
||||
defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) )
|
||||
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(6,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_ARM) && ( \
|
||||
defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) )
|
||||
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(5,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_ARM) && ( \
|
||||
defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__) )
|
||||
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(4,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_ARM)
|
||||
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# endif
|
||||
|
@ -12,7 +12,7 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
#include <boost/predef/make.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_ARCH_PARISK`]
|
||||
[heading `BOOST_ARCH_PARISC`]
|
||||
|
||||
[@http://en.wikipedia.org/wiki/PA-RISC_family HP/PA RISC] architecture.
|
||||
|
||||
|
44
include/boost/predef/architecture/ptx.h
Normal file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
Copyright Benjamin Worpitz 2018
|
||||
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_PTX_H
|
||||
#define BOOST_PREDEF_ARCHITECTURE_PTX_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/make.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_ARCH_PTX`]
|
||||
|
||||
[@https://en.wikipedia.org/wiki/Parallel_Thread_Execution PTX] architecture.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__CUDA_ARCH__`] [__predef_detection__]]
|
||||
|
||||
[[`__CUDA_ARCH__`] [V.R.0]]
|
||||
]
|
||||
*/
|
||||
|
||||
#define BOOST_ARCH_PTX BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#if defined(__CUDA_ARCH__)
|
||||
# undef BOOST_ARCH_PTX
|
||||
# define BOOST_ARCH_PTX BOOST_PREDEF_MAKE_10_VR0(__CUDA_ARCH__)
|
||||
#endif
|
||||
|
||||
#if BOOST_ARCH_PTX
|
||||
# define BOOST_ARCH_PTX_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_ARCH_PTX_NAME "PTX"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PTX,BOOST_ARCH_PTX_NAME)
|
42
include/boost/predef/architecture/riscv.h
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
Copyright Andreas Schwab 2019
|
||||
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_RISCV_H
|
||||
#define BOOST_PREDEF_ARCHITECTURE_RISCV_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/make.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_ARCH_RISCV`]
|
||||
|
||||
[@http://en.wikipedia.org/wiki/RISC-V] architecture.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__riscv`] [__predef_detection__]]
|
||||
]
|
||||
*/
|
||||
|
||||
#define BOOST_ARCH_RISCV BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#if defined(__riscv)
|
||||
# undef BOOST_ARCH_RISCV
|
||||
# define BOOST_ARCH_RISCV BOOST_VERSION_NUMBER_AVAILABLE
|
||||
#endif
|
||||
|
||||
#if BOOST_ARCH_RISCV
|
||||
# define BOOST_ARCH_RISCV_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_ARCH_RISCV_NAME "RISC-V"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_RISCV,BOOST_ARCH_RISCV_NAME)
|
@ -32,6 +32,7 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
#include <boost/predef/compiler/metrowerks.h>
|
||||
#include <boost/predef/compiler/microtec.h>
|
||||
#include <boost/predef/compiler/mpw.h>
|
||||
#include <boost/predef/compiler/nvcc.h>
|
||||
#include <boost/predef/compiler/palm.h>
|
||||
#include <boost/predef/compiler/pgi.h>
|
||||
#include <boost/predef/compiler/sgi_mipspro.h>
|
||||
|
@ -38,7 +38,7 @@ Version number available as major, minor, and patch.
|
||||
# define BOOST_COMP_DEC_DETECTION BOOST_PREDEF_MAKE_10_VVRR0PP00(__DECC_VER)
|
||||
# endif
|
||||
# if !defined(BOOST_COMP_DEC_DETECTION)
|
||||
# define BOOST_COM_DEC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# define BOOST_COMP_DEC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright Rene Rivera 2008-2015
|
||||
Copyright Rene Rivera 2008-2017
|
||||
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)
|
||||
@ -25,7 +25,8 @@ Version number available as major, minor, and patch.
|
||||
[[`__ICC`] [__predef_detection__]]
|
||||
[[`__ECC`] [__predef_detection__]]
|
||||
|
||||
[[`__INTEL_COMPILER`] [V.R.P]]
|
||||
[[`__INTEL_COMPILER`] [V.R]]
|
||||
[[`__INTEL_COMPILER` and `__INTEL_COMPILER_UPDATE`] [V.R.P]]
|
||||
]
|
||||
*/
|
||||
|
||||
@ -33,8 +34,21 @@ Version number available as major, minor, and patch.
|
||||
|
||||
#if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || \
|
||||
defined(__ECC)
|
||||
/*`
|
||||
[note Because of an Intel mistake in the release version numbering when
|
||||
`__INTEL_COMPILER` is `9999` it is detected as version 12.1.0.]
|
||||
*/
|
||||
# if !defined(BOOST_COMP_INTEL_DETECTION) && defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 9999)
|
||||
# define BOOST_COMP_INTEL_DETECTION BOOST_VERSION_NUMBER(12,1,0)
|
||||
# endif
|
||||
# if !defined(BOOST_COMP_INTEL_DETECTION) && defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE)
|
||||
# define BOOST_COMP_INTEL_DETECTION BOOST_VERSION_NUMBER( \
|
||||
BOOST_VERSION_NUMBER_MAJOR(BOOST_PREDEF_MAKE_10_VVRR(__INTEL_COMPILER)), \
|
||||
BOOST_VERSION_NUMBER_MINOR(BOOST_PREDEF_MAKE_10_VVRR(__INTEL_COMPILER)), \
|
||||
__INTEL_COMPILER_UPDATE)
|
||||
# endif
|
||||
# if !defined(BOOST_COMP_INTEL_DETECTION) && defined(__INTEL_COMPILER)
|
||||
# define BOOST_COMP_INTEL_DETECTION BOOST_PREDEF_MAKE_10_VRP(__INTEL_COMPILER)
|
||||
# define BOOST_COMP_INTEL_DETECTION BOOST_PREDEF_MAKE_10_VVRR(__INTEL_COMPILER)
|
||||
# endif
|
||||
# if !defined(BOOST_COMP_INTEL_DETECTION)
|
||||
# define BOOST_COMP_INTEL_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
|
||||
|
73
include/boost/predef/compiler/nvcc.h
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
Copyright Benjamin Worpitz 2018
|
||||
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_COMPILER_NVCC_H
|
||||
#define BOOST_PREDEF_COMPILER_NVCC_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/make.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_COMP_NVCC`]
|
||||
|
||||
[@https://en.wikipedia.org/wiki/NVIDIA_CUDA_Compiler NVCC] compiler.
|
||||
Version number available as major, minor, and patch beginning with version 7.5.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__NVCC__`] [__predef_detection__]]
|
||||
|
||||
[[`__CUDACC_VER_MAJOR__`, `__CUDACC_VER_MINOR__`, `__CUDACC_VER_BUILD__`] [V.R.P]]
|
||||
]
|
||||
*/
|
||||
|
||||
#define BOOST_COMP_NVCC BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#if defined(__NVCC__)
|
||||
# if !defined(__CUDACC_VER_MAJOR__) || !defined(__CUDACC_VER_MINOR__) || !defined(__CUDACC_VER_BUILD__)
|
||||
# define BOOST_COMP_NVCC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# else
|
||||
# define BOOST_COMP_NVCC_DETECTION BOOST_VERSION_NUMBER(__CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, __CUDACC_VER_BUILD__)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef BOOST_COMP_NVCC_DETECTION
|
||||
/*
|
||||
Always define BOOST_COMP_NVCC instead of BOOST_COMP_NVCC_EMULATED
|
||||
The nvcc compilation process is somewhat special as can be read here:
|
||||
https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#cuda-compilation-trajectory
|
||||
The nvcc compiler precompiles the input two times. Once for the device code
|
||||
being compiled by the cicc device compiler and once for the host code
|
||||
compiled by the real host compiler. NVCC uses gcc/clang/msvc/...
|
||||
depending on the host compiler being set on the command line.
|
||||
|
||||
Predef (as a preprocessor only lib) detects the one doing the preprocessing
|
||||
as compiler and expects it to be the one doing the real compilation.
|
||||
This is not true for NVCC which is only doing the preprocessing and which
|
||||
is using another compiler for parts of its work. So for NVCC it should be
|
||||
allowed to set BOOST_COMP_NVCC additionally to the already detected host
|
||||
compiler because both is true: It is gcc/clang/... compiling the code, but it
|
||||
is also NVCC doing the preprocessing and adding some other quirks you may
|
||||
want to detect.
|
||||
|
||||
This behavior is similar to what boost config is doing in `select_compiler_config.hpp`.
|
||||
There the NVCC detection is not handled as a real compiler (part of the
|
||||
#if-#elif) but as additional option before the real compiler.
|
||||
*/
|
||||
# undef BOOST_COMP_NVCC
|
||||
# define BOOST_COMP_NVCC BOOST_COMP_NVCC_DETECTION
|
||||
# define BOOST_COMP_NVCC_AVAILABLE
|
||||
# include <boost/predef/detail/comp_detected.h>
|
||||
#endif
|
||||
|
||||
#define BOOST_COMP_NVCC_NAME "NVCC"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_NVCC,BOOST_COMP_NVCC_NAME)
|
@ -29,6 +29,10 @@ Version number available as major, minor, and patch.
|
||||
[[`_MSC_FULL_VER`] [V.R.P]]
|
||||
[[`_MSC_VER`] [V.R.0]]
|
||||
]
|
||||
|
||||
[note Release of Visual Studio after 2015 will no longer be identified
|
||||
by Boost Predef as the marketing version number. Instead we use the
|
||||
compiler version number directly, i.e. the _MSC_VER number.]
|
||||
*/
|
||||
|
||||
#define BOOST_COMP_MSVC BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
@ -53,8 +57,18 @@ Version number available as major, minor, and patch.
|
||||
means that the compiler and VS product versions are no longer
|
||||
in sync. Hence we need to use different formulas for
|
||||
mapping from MSC version to VS product version.
|
||||
|
||||
VS2017 is a total nightmare when it comes to version numbers.
|
||||
Hence to avoid arguments relating to that both present and
|
||||
future.. Any version after VS2015 will use solely the compiler
|
||||
version, i.e. cl.exe, as the version number here.
|
||||
*/
|
||||
# if (_MSC_VER >= 1900)
|
||||
# if (_MSC_VER > 1900)
|
||||
# define BOOST_COMP_MSVC_DETECTION BOOST_VERSION_NUMBER(\
|
||||
_MSC_VER/100,\
|
||||
_MSC_VER%100,\
|
||||
BOOST_COMP_MSVC_BUILD)
|
||||
# elif (_MSC_VER >= 1900)
|
||||
# define BOOST_COMP_MSVC_DETECTION BOOST_VERSION_NUMBER(\
|
||||
_MSC_VER/100-5,\
|
||||
_MSC_VER%100,\
|
||||
|
@ -8,7 +8,7 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
#ifndef BOOST_PREDEF_DETAIL__CASSERT_H
|
||||
#define BOOST_PREDEF_DETAIL__CASSERT_H
|
||||
|
||||
#if defined(__cpluplus)
|
||||
#if defined(__cplusplus)
|
||||
#include <cassert>
|
||||
#else
|
||||
#include <assert.h>
|
||||
|
@ -8,7 +8,7 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
#ifndef BOOST_PREDEF_DETAIL__EXCEPTION_H
|
||||
#define BOOST_PREDEF_DETAIL__EXCEPTION_H
|
||||
|
||||
#if defined(__cpluplus)
|
||||
#if defined(__cplusplus)
|
||||
#include <exception>
|
||||
#endif
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright Rene Rivera 2013
|
||||
Copyright Rene Rivera 2013-2018
|
||||
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)
|
||||
@ -8,6 +8,8 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
#ifndef BOOST_PREDEF_DETAIL_ENDIAN_COMPAT_H
|
||||
#define BOOST_PREDEF_DETAIL_ENDIAN_COMPAT_H
|
||||
|
||||
#pragma message("The use of BOOST_*_ENDIAN and BOOST_BYTE_ORDER is deprecated. Please include <boost/predef/other/endian.h> and use BOOST_ENDIAN_*_BYTE instead")
|
||||
|
||||
#include <boost/predef/other/endian.h>
|
||||
|
||||
#if BOOST_ENDIAN_BIG_BYTE
|
||||
|
16
include/boost/predef/hardware.h
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
Copyright Charly Chevalier 2015
|
||||
Copyright Joel Falcou 2015
|
||||
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)
|
||||
*/
|
||||
|
||||
#if !defined(BOOST_PREDEF_HARDWARE_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
|
||||
#ifndef BOOST_PREDEF_HARDWARE_H
|
||||
#define BOOST_PREDEF_HARDWARE_H
|
||||
#endif
|
||||
|
||||
#include <boost/predef/hardware/simd.h>
|
||||
|
||||
#endif
|
119
include/boost/predef/hardware/simd.h
Normal file
@ -0,0 +1,119 @@
|
||||
/*
|
||||
Copyright Charly Chevalier 2015
|
||||
Copyright Joel Falcou 2015
|
||||
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)
|
||||
*/
|
||||
|
||||
#include <boost/predef/hardware/simd/x86.h>
|
||||
#include <boost/predef/hardware/simd/x86_amd.h>
|
||||
#include <boost/predef/hardware/simd/arm.h>
|
||||
#include <boost/predef/hardware/simd/ppc.h>
|
||||
|
||||
#ifndef BOOST_PREDEF_HARDWARE_SIMD_H
|
||||
#define BOOST_PREDEF_HARDWARE_SIMD_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
|
||||
/*`
|
||||
[section Using the `BOOST_HW_SIMD_*` predefs]
|
||||
[include ../doc/hardware_simd.qbk]
|
||||
[endsect]
|
||||
|
||||
[/ --------------------------- ]
|
||||
|
||||
[section `BOOST_HW_SIMD_*`]
|
||||
|
||||
[heading `BOOST_HW_SIMD`]
|
||||
|
||||
The SIMD extension detected for a specific architectures.
|
||||
Version number depends on the detected extension.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`BOOST_HW_SIMD_X86_AVAILABLE`] [__predef_detection__]]
|
||||
[[`BOOST_HW_SIMD_X86_AMD_AVAILABLE`] [__predef_detection__]]
|
||||
[[`BOOST_HW_SIMD_ARM_AVAILABLE`] [__predef_detection__]]
|
||||
[[`BOOST_HW_SIMD_PPC_AVAILABLE`] [__predef_detection__]]
|
||||
]
|
||||
|
||||
[include ../include/boost/predef/hardware/simd/x86.h]
|
||||
[include ../include/boost/predef/hardware/simd/x86_amd.h]
|
||||
[include ../include/boost/predef/hardware/simd/arm.h]
|
||||
[include ../include/boost/predef/hardware/simd/ppc.h]
|
||||
|
||||
[endsect]
|
||||
|
||||
[/ --------------------------- ]
|
||||
|
||||
[section `BOOST_HW_SIMD_X86_*_VERSION`]
|
||||
[include ../include/boost/predef/hardware/simd/x86/versions.h]
|
||||
[endsect]
|
||||
|
||||
[section `BOOST_HW_SIMD_X86_AMD_*_VERSION`]
|
||||
[include ../include/boost/predef/hardware/simd/x86_amd/versions.h]
|
||||
[endsect]
|
||||
|
||||
[section `BOOST_HW_SIMD_ARM_*_VERSION`]
|
||||
[include ../include/boost/predef/hardware/simd/arm/versions.h]
|
||||
[endsect]
|
||||
|
||||
[section `BOOST_HW_SIMD_PPC_*_VERSION`]
|
||||
[include ../include/boost/predef/hardware/simd/ppc/versions.h]
|
||||
[endsect]
|
||||
|
||||
*/
|
||||
|
||||
// We check if SIMD extension of multiples architectures have been detected,
|
||||
// if yes, then this is an error!
|
||||
//
|
||||
// NOTE: _X86_AMD implies _X86, so there is no need to check for it here!
|
||||
//
|
||||
#if defined(BOOST_HW_SIMD_ARM_AVAILABLE) && defined(BOOST_HW_SIMD_PPC_AVAILABLE) ||\
|
||||
defined(BOOST_HW_SIMD_ARM_AVAILABLE) && defined(BOOST_HW_SIMD_X86_AVAILABLE) ||\
|
||||
defined(BOOST_HW_SIMD_PPC_AVAILABLE) && defined(BOOST_HW_SIMD_X86_AVAILABLE)
|
||||
# error "Multiple SIMD architectures detected, this cannot happen!"
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_HW_SIMD_X86_AVAILABLE) && defined(BOOST_HW_SIMD_X86_AMD_AVAILABLE)
|
||||
// If both standard _X86 and _X86_AMD are available,
|
||||
// then take the biggest version of the two!
|
||||
# if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_AMD
|
||||
# define BOOST_HW_SIMD BOOST_HW_SIMD_X86
|
||||
# else
|
||||
# define BOOST_HW_SIMD BOOST_HW_SIMD_X86_AMD
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_HW_SIMD)
|
||||
// At this point, only one of these two is defined
|
||||
# if defined(BOOST_HW_SIMD_X86_AVAILABLE)
|
||||
# define BOOST_HW_SIMD BOOST_HW_SIMD_X86
|
||||
# endif
|
||||
# if defined(BOOST_HW_SIMD_X86_AMD_AVAILABLE)
|
||||
# define BOOST_HW_SIMD BOOST_HW_SIMD_X86_AMD
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_HW_SIMD_ARM_AVAILABLE)
|
||||
# define BOOST_HW_SIMD BOOST_HW_SIMD_ARM
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_HW_SIMD_PPC_AVAILABLE)
|
||||
# define BOOST_HW_SIMD BOOST_HW_SIMD_PPC
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_HW_SIMD)
|
||||
# define BOOST_HW_SIMD_AVAILABLE
|
||||
#else
|
||||
# define BOOST_HW_SIMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_HW_SIMD_NAME "Hardware SIMD"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD, BOOST_HW_SIMD_NAME)
|
59
include/boost/predef/hardware/simd/arm.h
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
Copyright Charly Chevalier 2015
|
||||
Copyright Joel Falcou 2015
|
||||
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_HARDWARE_SIMD_ARM_H
|
||||
#define BOOST_PREDEF_HARDWARE_SIMD_ARM_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/hardware/simd/arm/versions.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_ARM`]
|
||||
|
||||
The SIMD extension for ARM (*if detected*).
|
||||
Version number depends on the most recent detected extension.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__ARM_NEON__`] [__predef_detection__]]
|
||||
[[`__aarch64__`] [__predef_detection__]]
|
||||
[[`_M_ARM`] [__predef_detection__]]
|
||||
[[`_M_ARM64`] [__predef_detection__]]
|
||||
]
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__ARM_NEON__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
|
||||
[[`__aarch64__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
|
||||
[[`_M_ARM`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
|
||||
[[`_M_ARM64`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
|
||||
]
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_HW_SIMD_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#undef BOOST_HW_SIMD_ARM
|
||||
#if !defined(BOOST_HW_SIMD_ARM) && (defined(__ARM_NEON__) || defined(__aarch64__) || defined (_M_ARM) || defined (_M_ARM64))
|
||||
# define BOOST_HW_SIMD_ARM BOOST_HW_SIMD_ARM_NEON_VERSION
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_HW_SIMD_ARM)
|
||||
# define BOOST_HW_SIMD_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
#else
|
||||
# define BOOST_HW_SIMD_ARM_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_HW_SIMD_ARM_NAME "ARM SIMD"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_ARM, BOOST_HW_SIMD_ARM_NAME)
|
32
include/boost/predef/hardware/simd/arm/versions.h
Normal file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
Copyright Charly Chevalier 2015
|
||||
Copyright Joel Falcou 2015
|
||||
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_HARDWARE_SIMD_ARM_VERSIONS_H
|
||||
#define BOOST_PREDEF_HARDWARE_SIMD_ARM_VERSIONS_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
|
||||
/*`
|
||||
Those defines represent ARM SIMD extensions versions.
|
||||
|
||||
[note You *MUST* compare them with the predef `BOOST_HW_SIMD_ARM`.]
|
||||
*/
|
||||
|
||||
// ---------------------------------
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_ARM_NEON_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON]
|
||||
ARM extension version number.
|
||||
|
||||
Version number is: *1.0.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_ARM_NEON_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
|
||||
|
||||
#endif
|
69
include/boost/predef/hardware/simd/ppc.h
Normal file
@ -0,0 +1,69 @@
|
||||
/*
|
||||
Copyright Charly Chevalier 2015
|
||||
Copyright Joel Falcou 2015
|
||||
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_HARDWARE_SIMD_PPC_H
|
||||
#define BOOST_PREDEF_HARDWARE_SIMD_PPC_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/hardware/simd/ppc/versions.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_PPC`]
|
||||
|
||||
The SIMD extension for PowerPC (*if detected*).
|
||||
Version number depends on the most recent detected extension.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__VECTOR4DOUBLE__`] [__predef_detection__]]
|
||||
|
||||
[[`__ALTIVEC__`] [__predef_detection__]]
|
||||
[[`__VEC__`] [__predef_detection__]]
|
||||
|
||||
[[`__VSX__`] [__predef_detection__]]
|
||||
]
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__VECTOR4DOUBLE__`] [BOOST_HW_SIMD_PPC_QPX_VERSION]]
|
||||
|
||||
[[`__ALTIVEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]]
|
||||
[[`__VEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]]
|
||||
|
||||
[[`__VSX__`] [BOOST_HW_SIMD_PPC_VSX_VERSION]]
|
||||
]
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_HW_SIMD_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#undef BOOST_HW_SIMD_PPC
|
||||
#if !defined(BOOST_HW_SIMD_PPC) && defined(__VECTOR4DOUBLE__)
|
||||
# define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_QPX_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_PPC) && defined(__VSX__)
|
||||
# define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_VSX_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_PPC) && (defined(__ALTIVEC__) || defined(__VEC__))
|
||||
# define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_VMX_VERSION
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_HW_SIMD_PPC)
|
||||
# define BOOST_HW_SIMD_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
#else
|
||||
# define BOOST_HW_SIMD_PPC_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_HW_SIMD_PPC_NAME "PPC SIMD"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_PPC, BOOST_HW_SIMD_PPC_NAME)
|
51
include/boost/predef/hardware/simd/ppc/versions.h
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
Copyright Charly Chevalier 2015
|
||||
Copyright Joel Falcou 2015
|
||||
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_HARDWARE_SIMD_PPC_VERSIONS_H
|
||||
#define BOOST_PREDEF_HARDWARE_SIMD_PPC_VERSIONS_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
|
||||
/*`
|
||||
Those defines represent Power PC SIMD extensions versions.
|
||||
|
||||
[note You *MUST* compare them with the predef `BOOST_HW_SIMD_PPC`.]
|
||||
*/
|
||||
|
||||
// ---------------------------------
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_PPC_VMX_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/AltiVec#VMX128 VMX] powerpc extension
|
||||
version number.
|
||||
|
||||
Version number is: *1.0.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_PPC_VMX_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_PPC_VSX_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/AltiVec#VSX VSX] powerpc extension version
|
||||
number.
|
||||
|
||||
Version number is: *1.1.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_PPC_VSX_VERSION BOOST_VERSION_NUMBER(1, 1, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_PPC_QPX_VERSION`]
|
||||
|
||||
The QPX powerpc extension version number.
|
||||
|
||||
Version number is: *2.0.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_PPC_QPX_VERSION BOOST_VERSION_NUMBER(2, 0, 0)
|
||||
|
||||
#endif
|
123
include/boost/predef/hardware/simd/x86.h
Normal file
@ -0,0 +1,123 @@
|
||||
/*
|
||||
Copyright Charly Chevalier 2015
|
||||
Copyright Joel Falcou 2015
|
||||
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_HARDWARE_SIMD_X86_H
|
||||
#define BOOST_PREDEF_HARDWARE_SIMD_X86_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/hardware/simd/x86/versions.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86`]
|
||||
|
||||
The SIMD extension for x86 (*if detected*).
|
||||
Version number depends on the most recent detected extension.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__SSE__`] [__predef_detection__]]
|
||||
[[`_M_X64`] [__predef_detection__]]
|
||||
[[`_M_IX86_FP >= 1`] [__predef_detection__]]
|
||||
|
||||
[[`__SSE2__`] [__predef_detection__]]
|
||||
[[`_M_X64`] [__predef_detection__]]
|
||||
[[`_M_IX86_FP >= 2`] [__predef_detection__]]
|
||||
|
||||
[[`__SSE3__`] [__predef_detection__]]
|
||||
|
||||
[[`__SSSE3__`] [__predef_detection__]]
|
||||
|
||||
[[`__SSE4_1__`] [__predef_detection__]]
|
||||
|
||||
[[`__SSE4_2__`] [__predef_detection__]]
|
||||
|
||||
[[`__AVX__`] [__predef_detection__]]
|
||||
|
||||
[[`__FMA__`] [__predef_detection__]]
|
||||
|
||||
[[`__AVX2__`] [__predef_detection__]]
|
||||
]
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__SSE__`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
|
||||
[[`_M_X64`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
|
||||
[[`_M_IX86_FP >= 1`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
|
||||
|
||||
[[`__SSE2__`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
|
||||
[[`_M_X64`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
|
||||
[[`_M_IX86_FP >= 2`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
|
||||
|
||||
[[`__SSE3__`] [BOOST_HW_SIMD_X86_SSE3_VERSION]]
|
||||
|
||||
[[`__SSSE3__`] [BOOST_HW_SIMD_X86_SSSE3_VERSION]]
|
||||
|
||||
[[`__SSE4_1__`] [BOOST_HW_SIMD_X86_SSE4_1_VERSION]]
|
||||
|
||||
[[`__SSE4_2__`] [BOOST_HW_SIMD_X86_SSE4_2_VERSION]]
|
||||
|
||||
[[`__AVX__`] [BOOST_HW_SIMD_X86_AVX_VERSION]]
|
||||
|
||||
[[`__FMA__`] [BOOST_HW_SIMD_X86_FMA3_VERSION]]
|
||||
|
||||
[[`__AVX2__`] [BOOST_HW_SIMD_X86_AVX2_VERSION]]
|
||||
]
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_HW_SIMD_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#undef BOOST_HW_SIMD_X86
|
||||
#if !defined(BOOST_HW_SIMD_X86) && defined(__MIC__)
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_MIC_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86) && defined(__AVX2__)
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_AVX2_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86) && defined(__AVX__)
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_AVX_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86) && defined(__FMA__)
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_FMA_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE4_2__)
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE4_2_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE4_1__)
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE4_1_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86) && defined(__SSSE3__)
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSSE3_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE3__)
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE3_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86) && (defined(__SSE2__) || defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2))
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE2_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86) && (defined(__SSE__) || defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1))
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86) && defined(__MMX__)
|
||||
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_MMX_VERSION
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_HW_SIMD_X86)
|
||||
# define BOOST_HW_SIMD_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
#else
|
||||
# define BOOST_HW_SIMD_X86_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_HW_SIMD_X86_NAME "x86 SIMD"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_X86, BOOST_HW_SIMD_X86_NAME)
|
129
include/boost/predef/hardware/simd/x86/versions.h
Normal file
@ -0,0 +1,129 @@
|
||||
/*
|
||||
Copyright Charly Chevalier 2015
|
||||
Copyright Joel Falcou 2015
|
||||
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_HARDWARE_SIMD_X86_VERSIONS_H
|
||||
#define BOOST_PREDEF_HARDWARE_SIMD_X86_VERSIONS_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
|
||||
/*`
|
||||
Those defines represent x86 SIMD extensions versions.
|
||||
|
||||
[note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86`.]
|
||||
*/
|
||||
|
||||
// ---------------------------------
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_MMX_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/MMX_(instruction_set) MMX] x86 extension
|
||||
version number.
|
||||
|
||||
Version number is: *0.99.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_MMX_VERSION BOOST_VERSION_NUMBER(0, 99, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_SSE_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions SSE] x86 extension
|
||||
version number.
|
||||
|
||||
Version number is: *1.0.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_SSE_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_SSE2_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/SSE2 SSE2] x86 extension version number.
|
||||
|
||||
Version number is: *2.0.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_SSE2_VERSION BOOST_VERSION_NUMBER(2, 0, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_SSE3_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/SSE3 SSE3] x86 extension version number.
|
||||
|
||||
Version number is: *3.0.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_SSE3_VERSION BOOST_VERSION_NUMBER(3, 0, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_SSSE3_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/SSSE3 SSSE3] x86 extension version number.
|
||||
|
||||
Version number is: *3.1.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_SSSE3_VERSION BOOST_VERSION_NUMBER(3, 1, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_SSE4_1_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/SSE4#SSE4.1 SSE4_1] x86 extension version
|
||||
number.
|
||||
|
||||
Version number is: *4.1.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_SSE4_1_VERSION BOOST_VERSION_NUMBER(4, 1, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_SSE4_2_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/SSE4##SSE4.2 SSE4_2] x86 extension version
|
||||
number.
|
||||
|
||||
Version number is: *4.2.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_SSE4_2_VERSION BOOST_VERSION_NUMBER(4, 2, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_AVX_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions AVX] x86
|
||||
extension version number.
|
||||
|
||||
Version number is: *5.0.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_AVX_VERSION BOOST_VERSION_NUMBER(5, 0, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_FMA3_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/FMA_instruction_set FMA3] x86 extension
|
||||
version number.
|
||||
|
||||
Version number is: *5.2.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_FMA3_VERSION BOOST_VERSION_NUMBER(5, 2, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_AVX2_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2 AVX2]
|
||||
x86 extension version number.
|
||||
|
||||
Version number is: *5.3.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_AVX2_VERSION BOOST_VERSION_NUMBER(5, 3, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_MIC_VERSION`]
|
||||
|
||||
The [@https://en.wikipedia.org/wiki/Xeon_Phi MIC] (Xeon Phi) x86 extension
|
||||
version number.
|
||||
|
||||
Version number is: *9.0.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_MIC_VERSION BOOST_VERSION_NUMBER(9, 0, 0)
|
||||
|
||||
#endif
|
87
include/boost/predef/hardware/simd/x86_amd.h
Normal file
@ -0,0 +1,87 @@
|
||||
/*
|
||||
Copyright Charly Chevalier 2015
|
||||
Copyright Joel Falcou 2015
|
||||
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_HARDWARE_SIMD_X86_AMD_H
|
||||
#define BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/hardware/simd/x86_amd/versions.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_AMD`]
|
||||
|
||||
The SIMD extension for x86 (AMD) (*if detected*).
|
||||
Version number depends on the most recent detected extension.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__SSE4A__`] [__predef_detection__]]
|
||||
|
||||
[[`__FMA4__`] [__predef_detection__]]
|
||||
|
||||
[[`__XOP__`] [__predef_detection__]]
|
||||
|
||||
[[`BOOST_HW_SIMD_X86`] [__predef_detection__]]
|
||||
]
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__SSE4A__`] [BOOST_HW_SIMD_X86_SSE4A_VERSION]]
|
||||
|
||||
[[`__FMA4__`] [BOOST_HW_SIMD_X86_FMA4_VERSION]]
|
||||
|
||||
[[`__XOP__`] [BOOST_HW_SIMD_X86_XOP_VERSION]]
|
||||
|
||||
[[`BOOST_HW_SIMD_X86`] [BOOST_HW_SIMD_X86]]
|
||||
]
|
||||
|
||||
[note This predef includes every other x86 SIMD extensions and also has other
|
||||
more specific extensions (FMA4, XOP, SSE4a). You should use this predef
|
||||
instead of `BOOST_HW_SIMD_X86` to test if those specific extensions have
|
||||
been detected.]
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_HW_SIMD_X86_AMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
// AMD CPUs also use x86 architecture. We first try to detect if any AMD
|
||||
// specific extension are detected, if yes, then try to detect more recent x86
|
||||
// common extensions.
|
||||
|
||||
#undef BOOST_HW_SIMD_X86_AMD
|
||||
#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__XOP__)
|
||||
# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_XOP_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__FMA4__)
|
||||
# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_FMA4_VERSION
|
||||
#endif
|
||||
#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__SSE4A__)
|
||||
# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_HW_SIMD_X86_AMD)
|
||||
# define BOOST_HW_SIMD_X86_AMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
#else
|
||||
// At this point, we know that we have an AMD CPU, we do need to check for
|
||||
// other x86 extensions to determine the final version number.
|
||||
# include <boost/predef/hardware/simd/x86.h>
|
||||
# if BOOST_HW_SIMD_X86 > BOOST_HW_SIMD_X86_AMD
|
||||
# undef BOOST_HW_SIMD_X86_AMD
|
||||
# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86
|
||||
# endif
|
||||
# define BOOST_HW_SIMD_X86_AMD_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_HW_SIMD_X86_AMD_NAME "x86 (AMD) SIMD"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_X86_AMD, BOOST_HW_SIMD_X86_AMD_NAME)
|
51
include/boost/predef/hardware/simd/x86_amd/versions.h
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
Copyright Charly Chevalier 2015
|
||||
Copyright Joel Falcou 2015
|
||||
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_HARDWARE_SIMD_X86_AMD_VERSIONS_H
|
||||
#define BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_VERSIONS_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
|
||||
/*`
|
||||
Those defines represent x86 (AMD specific) SIMD extensions versions.
|
||||
|
||||
[note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86_AMD`.]
|
||||
*/
|
||||
|
||||
|
||||
// ---------------------------------
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION`]
|
||||
|
||||
[@https://en.wikipedia.org/wiki/SSE4##SSE4A SSE4A] x86 extension (AMD specific).
|
||||
|
||||
Version number is: *4.0.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION BOOST_VERSION_NUMBER(4, 0, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_AMD_FMA4_VERSION`]
|
||||
|
||||
[@https://en.wikipedia.org/wiki/FMA_instruction_set#FMA4_instruction_set FMA4] x86 extension (AMD specific).
|
||||
|
||||
Version number is: *5.1.0*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_AMD_FMA4_VERSION BOOST_VERSION_NUMBER(5, 1, 0)
|
||||
|
||||
/*`
|
||||
[heading `BOOST_HW_SIMD_X86_AMD_XOP_VERSION`]
|
||||
|
||||
[@https://en.wikipedia.org/wiki/XOP_instruction_set XOP] x86 extension (AMD specific).
|
||||
|
||||
Version number is: *5.1.1*.
|
||||
*/
|
||||
#define BOOST_HW_SIMD_X86_AMD_XOP_VERSION BOOST_VERSION_NUMBER(5, 1, 1)
|
||||
|
||||
|
||||
#endif
|
@ -13,5 +13,6 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
#include <boost/predef/language/stdc.h>
|
||||
#include <boost/predef/language/stdcpp.h>
|
||||
#include <boost/predef/language/objc.h>
|
||||
#include <boost/predef/language/cuda.h>
|
||||
|
||||
#endif
|
||||
|
52
include/boost/predef/language/cuda.h
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
Copyright Benjamin Worpitz 2018
|
||||
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_LANGUAGE_CUDA_H
|
||||
#define BOOST_PREDEF_LANGUAGE_CUDA_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/make.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_LANG_CUDA`]
|
||||
|
||||
[@https://en.wikipedia.org/wiki/CUDA CUDA C/C++] language.
|
||||
If available, the version is detected as VV.RR.P.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__CUDACC__`] [__predef_detection__]]
|
||||
[[`__CUDA__`] [__predef_detection__]]
|
||||
|
||||
[[`CUDA_VERSION`] [VV.RR.P]]
|
||||
]
|
||||
*/
|
||||
|
||||
#define BOOST_LANG_CUDA BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#if defined(__CUDACC__) || defined(__CUDA__)
|
||||
# undef BOOST_LANG_CUDA
|
||||
# include <cuda.h>
|
||||
# if defined(CUDA_VERSION)
|
||||
# define BOOST_LANG_CUDA BOOST_PREDEF_MAKE_10_VVRRP(CUDA_VERSION)
|
||||
# else
|
||||
# define BOOST_LANG_CUDA BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if BOOST_LANG_CUDA
|
||||
# define BOOST_LANG_CUDA_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_LANG_CUDA_NAME "CUDA C/C++"
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_CUDA,BOOST_LANG_CUDA_NAME)
|
@ -12,6 +12,7 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <boost/predef/library/c/_prefix.h>
|
||||
|
||||
#include <boost/predef/library/c/cloudabi.h>
|
||||
#include <boost/predef/library/c/gnu.h>
|
||||
#include <boost/predef/library/c/uc.h>
|
||||
#include <boost/predef/library/c/vms.h>
|
||||
|
53
include/boost/predef/library/c/cloudabi.h
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (C) 2017 James E. King III
|
||||
*
|
||||
* 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_LIBRARY_C_CLOUDABI_H
|
||||
#define BOOST_PREDEF_LIBRARY_C_CLOUDABI_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/make.h>
|
||||
|
||||
#include <boost/predef/library/c/_prefix.h>
|
||||
|
||||
#if defined(__CloudABI__)
|
||||
#include <stddef.h>
|
||||
#endif
|
||||
|
||||
/*`
|
||||
[heading `BOOST_LIB_C_CLOUDABI`]
|
||||
|
||||
[@https://github.com/NuxiNL/cloudlibc cloudlibc] - CloudABI's standard C library.
|
||||
Version number available as major, and minor.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__cloudlibc__`] [__predef_detection__]]
|
||||
|
||||
[[`__cloudlibc_major__`, `__cloudlibc_minor__`] [V.R.0]]
|
||||
]
|
||||
*/
|
||||
|
||||
#define BOOST_LIB_C_CLOUDABI BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#if defined(__cloudlibc__)
|
||||
# undef BOOST_LIB_C_CLOUDABI
|
||||
# define BOOST_LIB_C_CLOUDABI \
|
||||
BOOST_VERSION_NUMBER(__cloudlibc_major__,__cloudlibc_minor__,0)
|
||||
#endif
|
||||
|
||||
#if BOOST_LIB_C_CLOUDABI
|
||||
# define BOOST_LIB_C_CLOUDABI_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_LIB_C_CLOUDABI_NAME "cloudlibc"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_CLOUDABI,BOOST_LIB_C_CLOUDABI_NAME)
|
@ -46,10 +46,14 @@ Macros are:
|
||||
#define BOOST_PREDEF_MAKE_0X_VVRRPP(V) BOOST_VERSION_NUMBER((V&0xFF0000)>>16,(V&0xFF00)>>8,(V&0xFF))
|
||||
/*` `BOOST_PREDEF_MAKE_10_VPPP(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,0,(V)%1000)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VR0(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VR0(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,0)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VRP(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VRP(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,(V)%10)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VRP000(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VRP000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,((V)/1000)%10)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VRPPPP(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VRPPPP(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,(V)%10000)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VRPP(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VRPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,((V)/100)%10,(V)%100)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VRR(V)` */
|
||||
@ -62,8 +66,12 @@ Macros are:
|
||||
#define BOOST_PREDEF_MAKE_10_VV00(V) BOOST_VERSION_NUMBER(((V)/100)%100,0,0)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VVRR(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VVRRP(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VVRRP(V) BOOST_VERSION_NUMBER(((V)/1000)%100,((V)/10)%100,(V)%10)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VVRRPP(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VVRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%100,((V)/100)%100,(V)%100)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VVRRPPP(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VVRRPPP(V) BOOST_VERSION_NUMBER(((V)/100000)%100,((V)/1000)%100,(V)%1000)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VVRR0PP00(V)` */
|
||||
#define BOOST_PREDEF_MAKE_10_VVRR0PP00(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,((V)/100)%100)
|
||||
/*` `BOOST_PREDEF_MAKE_10_VVRR0PPPP(V)` */
|
||||
|
@ -13,7 +13,6 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <boost/predef/os/aix.h>
|
||||
#include <boost/predef/os/amigaos.h>
|
||||
#include <boost/predef/os/android.h>
|
||||
#include <boost/predef/os/beos.h>
|
||||
#include <boost/predef/os/bsd.h>
|
||||
#include <boost/predef/os/cygwin.h>
|
||||
@ -30,4 +29,6 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
#include <boost/predef/os/vms.h>
|
||||
#include <boost/predef/os/windows.h>
|
||||
|
||||
#include <boost/predef/os/android.h>
|
||||
|
||||
#endif
|
||||
|
@ -5,8 +5,8 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_PREDEF_OS_ADROID_H
|
||||
#define BOOST_PREDEF_OS_ADROID_H
|
||||
#ifndef BOOST_PREDEF_OS_ANDROID_H
|
||||
#define BOOST_PREDEF_OS_ANDROID_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/make.h>
|
||||
@ -14,6 +14,9 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
/*`
|
||||
[heading `BOOST_OS_ANDROID`]
|
||||
|
||||
NOTE: `BOOST_OS_ANDROID` is deprecated, and will be removed in a following release.
|
||||
Please use `BOOST_PLAT_ANDROID` instead.
|
||||
|
||||
[@http://en.wikipedia.org/wiki/Android_%28operating_system%29 Android] operating system.
|
||||
|
||||
[table
|
||||
|
@ -89,7 +89,7 @@ of BSD. If the above variants is detected the corresponding macro is also set.]
|
||||
|
||||
#define BOOST_OS_BSD_NAME "BSD"
|
||||
|
||||
#else
|
||||
#endif
|
||||
|
||||
#include <boost/predef/os/bsd/bsdi.h>
|
||||
#include <boost/predef/os/bsd/dragonfly.h>
|
||||
@ -97,7 +97,5 @@ of BSD. If the above variants is detected the corresponding macro is also set.]
|
||||
#include <boost/predef/os/bsd/open.h>
|
||||
#include <boost/predef/os/bsd/net.h>
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD,BOOST_OS_BSD_NAME)
|
||||
|