Compare commits

...

60 Commits

Author SHA1 Message Date
c8c26821b9 Merge remote-tracking branch 'origin/develop' 2017-11-10 09:01:39 -06:00
5e8f5d5a4b properly obtain the FreeBSD version (BOOST_OS_BSD_FREE) (#69) 2017-11-10 07:04:25 -06:00
74f88005cc rename library/c/cloudlibc.h to library/c/cloudabi.h (#68)
fix typo in cloudlibc detection
2017-11-09 22:48:35 -06:00
4a230ebe85 add detection for OpenBSD 5.x and 6.x (#67)
This fixes #66
2017-11-08 23:01:35 -06:00
e62a9c68b1 Merge remote-tracking branch 'origin/develop' 2017-10-25 13:44:21 -05:00
e31d12f25d Fix typo in header guard. 2017-10-25 12:32:20 -05:00
2bba31c5f4 Merge remote-tracking branch 'origin/develop' 2017-10-24 07:30:44 -05:00
e87cef64fe History note for CloudABI/LIB addition. 2017-10-23 17:07:20 -05:00
6f8a9ae440 platform detection for CloudABI with cloudlibc detection (#65) 2017-10-23 13:54:01 -05:00
a7cdea8faf Merge branch 'develop' of https://github.com/boostorg/predef into
develop

Conflicts:
	include/boost/predef/platform/windows_runtime.h
	include/boost/predef/platform/windows_uwp.h
2017-10-23 09:34:04 -05:00
1c0b55c2f9 Some tweak for 1.7 release.
* Bump version to 1.7
* Tweak docs for UWP detection.
* Add 1.7 history items.
2017-10-23 09:25:43 -05:00
0ab200d19e make BOOST_PLAT_WINDOWS_DESKTOP available in older SDKs for backwards compatibility (#64) 2017-10-18 07:00:02 -05:00
7c17b932e4 detect mingw32 and mingw64 as separate entities (#61) 2017-10-16 18:41:33 -05:00
de79c6d341 fix typo s/BOOST_ARCH_PARISK/BOOST_ARCH_PARISC (#63) 2017-10-11 08:16:56 -05:00
7c99dfbbd5 Revert "isolate all headers to ensure that none rely on inclusions from another (#60)" (#62)
This reverts commit 284cde95a2.
2017-10-04 14:13:28 -05:00
284cde95a2 isolate all headers to ensure that none rely on inclusions from another (#60) 2017-10-04 10:20:45 -05:00
bca18299d2 correct Windows UWP platform detection (#57) 2017-10-03 20:36:17 -05:00
aa4604a3bd Remove executable attribute from file. (#53) 2017-09-17 09:21:38 -05:00
ba45bd73f3 Seems we need to avoid duplicate project names. 2017-08-01 12:24:55 -05:00
ada62932d0 Merge remote-tracking branch 'origin/develop' 2017-06-27 21:21:56 -05:00
6a24a3a4bb Changes for version 1.6. 2017-06-05 09:14:37 -05:00
9afb15401b Handle Intel version 9999 == 12.1.0 (fixes #38). 2017-06-05 09:09:13 -05:00
0d9d5591da Merge branch 'develop' of https://github.com/boostorg/predef.git into develop 2017-06-01 22:31:30 -05:00
db499c07df Add WORKAROUND style definitions for public use. 2017-06-01 22:31:09 -05:00
9f6191e0bc Merge pull request #50 from gongminmin/develop
Adds support for MSVC ARM64 target.
2017-06-01 07:03:32 -05:00
4c822c49c2 Adds support for MSVC ARM64 target. 2017-06-01 00:08:56 -07:00
f109e20ad1 Fix missing non-detection test for new iOS platform. 2017-05-28 23:31:06 -05:00
d81ab5cc34 Merge pull request #49 from ruslo/pr.ios
Detect iOS simulator/device
2017-05-28 21:20:00 -05:00
cda33c33d9 Try mingw testing again. 2017-05-28 16:39:29 -05:00
6dfdf9d4dd Add testing with language flags. 2017-05-28 15:53:55 -05:00
5e76979e05 No MinGW for now, as it fails for some unknown reason. 2017-05-28 13:59:25 -05:00
541ec7edef MinGW64 5.x doesn't seem to actually exist in Appveyor. 2017-05-27 18:42:14 -05:00
87c4de2da2 Lets try MinGW builds. 2017-05-27 14:35:24 -05:00
693e973635 Never mind.. Travis empty job bug is not fixed. 2017-05-27 10:09:23 -05:00
77c66456dc Remove caching. Free limits are too low for Boost. 2017-05-27 10:01:09 -05:00
43758299bc Remove no longer needed empty job workaround. 2017-05-27 09:50:52 -05:00
ec6c26ef68 Detect iOS simulator/device 2017-05-22 12:28:47 +03:00
0f86c9b95e Add latest toolsets for CI testing. 2017-05-21 22:57:26 -05:00
523e866076 Merge remote-tracking branch 'origin/develop' 2017-05-21 21:43:36 -05:00
0bb6e754cb Fix header guard to correct type of predef.
Addresses PR #48 from @ruslo (Ruslan Baratov) but with shorter "PLAT" to
match the other platform headers.
2017-05-21 16:37:34 -05:00
b0ca8915b5 Merge remote-tracking branch 'origin/develop' 2017-03-17 20:44:25 -05:00
0d56819d68 Switch VS versions post 2015 to CL version. 2017-03-17 11:11:30 -05:00
b6910fb493 Merge branch 'develop' 2017-02-23 10:33:37 -06:00
822d09f19b 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.
2017-01-03 22:07:48 -06:00
e7e3a2ac38 Document and cleanup Appveyor build spec. 2016-11-19 16:18:44 -06:00
eaccac21dc Back to just the boost repo in the cache. 2016-11-19 09:51:01 -06:00
3c2d8bdb47 Try and tweak the cache settings to get a valid git repo back. 2016-11-18 19:15:24 -06:00
5111859be2 Lets see if the cache works on Travis. 2016-11-18 18:54:23 -06:00
4f9b045d74 Try and directly add git subtree to see if it makes the cache work. 2016-11-18 13:24:47 -06:00
af39447f70 First attempt at caching with Appveyor. 2016-11-18 09:37:47 -06:00
72e2f8c288 Reduce Xcode builds to the new smaller set Travis supports. 2016-11-17 16:04:13 -06:00
dc9b143061 Clean up and document Travis setup. 2016-11-17 13:24:58 -06:00
5393bee297 Make sure we run on trusty and add all clang versions for Travis. 2016-11-13 14:24:03 -06:00
6cc5e91e7c Add g++-6 testing. 2016-11-13 09:22:08 -06:00
99bcba4ff9 Test plain gcc-5 toolset. 2016-11-13 08:14:28 -06:00
d39d1b9dc4 Add current Xcode versions for testing. 2016-11-12 17:31:12 -06:00
0fb2c586b0 Switch Appveyor CI to latest generic testing scripts. 2016-11-10 23:37:38 -06:00
3680a040a2 Switch CI testing script to latest generic version. 2016-11-09 23:34:23 -06:00
ca4d2f3288 Add, and update, documentation build targets. 2016-10-10 11:39:52 -05:00
06f6303d16 Add, and update, documentation build targets. 2016-10-07 23:07:35 -05:00
41 changed files with 1341 additions and 97 deletions

View File

@ -1,71 +1,119 @@
language: cpp
# 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 2015-2016.
# Setting up notifications like this is optional as the default behavior
# of Travis is to notify the commiter of problems. But setting a specific
# recipient this way ensures you get all the communications about the
# builds.
notifications:
email:
recipients:
- grafikrobot@gmail.com
irc:
channels:
- "chat.freenode.net#boost"
template:
- "%{repository}/%{branch} (%{commit} - %{author}): %{build_url}: %{message}"
# For now the CI scripts only support the two main branches available
# on the boost super-project.
branches:
only:
- master
- develop
# We specify a generic language instead of C++ as Travis sets up
# additional environment vars that point to its default toolset
# instead of the one we install. The extra env doesn't interfere,
# but at the same time it's misleading. So to avoid confusion and
# possible unseen side effects we stick with no C++ default setup.
language: generic
# Speficy the default as Linux here, to avoid duplication in the matrix
# below. We use Trausty as that's the latest we can use. And it's better
# supported by the whole range of C++ toolsets we like to test on.
dist: trusty
os: linux
# Because we install our own toolsets and other software we need
# to run the sudo support.
sudo: required
# Travis has a long standing bug with their rather complicated
# build matrix evaluation that causes empty jobs to be created.
# This global matrix entry in combination with the exclusion
# below works around that bug. This is the suggested fix from
# the Travis support people.
env:
matrix:
- TRAVIS_EMPTY_JOB_WORKAROUND=true
# This lists all the toolsets we will test with the Boost CI
# scripts. Predef needs to check all of them as its job is to
# distiguish between all of them. For other libraries you would
# want to limit the list to the toolsets that are important
# for that.
matrix:
exclude:
- env: TRAVIS_EMPTY_JOB_WORKAROUND=true
include:
- env: TOOLSET=clang-3.4
os: linux
dist: precise
- env: TOOLSET=clang-3.5
os: linux
dist: precise
- env: TOOLSET=clang-3.6
os: linux
dist: precise
- env: TOOLSET=clang-3.7
- env: TOOLSET=clang-3.8
- env: TOOLSET=clang-3.9
- env: TOOLSET=clang-4.0 CXXFLAGS=-std=c++03
- env: TOOLSET=clang-4.0 CXXFLAGS=-std=c++11
- env: TOOLSET=clang-4.0 CXXFLAGS=-std=c++14
- env: TOOLSET=clang-4.0 CXXFLAGS=-std=c++1z
- env: TOOLSET=gcc-4.7
os: linux
dist: precise
- env: TOOLSET=gcc-4.8
os: linux
dist: precise
- env: TOOLSET=gcc-4.9
os: linux
dist: precise
- env: TOOLSET=gcc-5.1
os: linux
dist: precise
- env: TOOLSET=gcc-5
- env: TOOLSET=gcc-6
- env: TOOLSET=gcc-7 CXXFLAGS=-std=c++03
- env: TOOLSET=gcc-7 CXXFLAGS=-std=c++11
- env: TOOLSET=gcc-7 CXXFLAGS=-std=c++14
- env: TOOLSET=gcc-7 CXXFLAGS=-std=c++1z
- env: TOOLSET=gcc-7 CXXFLAGS=-std=gnu++03
- env: TOOLSET=gcc-7 CXXFLAGS=-std=gnu++11
- env: TOOLSET=gcc-7 CXXFLAGS=-std=gnu++14
- env: TOOLSET=gcc-7 CXXFLAGS=-std=gnu++1z
- env: TOOLSET=xcode-6.1
os: osx
- env: TOOLSET=xcode-6.2
os: osx
osx_image: beta-xcode6.2
- env: TOOLSET=xcode-6.3
os: osx
osx_image: beta-xcode6.3
- env: TOOLSET=xcode-6.4
os: osx
osx_image: xcode6.4
- env: TOOLSET=xcode-7.0
- env: TOOLSET=xcode-7.3
os: osx
osx_image: xcode7
- env: TOOLSET=xcode-7.1
osx_image: xcode7.3
- env: TOOLSET=xcode-8.3 CXXFLAGS=-std=c++03
os: osx
osx_image: xcode7.1
- env: TOOLSET=xcode-7.2
osx_image: xcode8.3
- env: TOOLSET=xcode-8.3 CXXFLAGS=-std=c++11
os: osx
osx_image: xcode7.2
osx_image: xcode8.3
- env: TOOLSET=xcode-8.3 CXXFLAGS=-std=c++14
os: osx
osx_image: xcode8.3
- env: TOOLSET=xcode-8.3 CXXFLAGS=-std=c++1z
os: osx
osx_image: xcode8.3
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
# These are the standard steps to bootstrap the Boost CI scripts
# and to forward the actions to the scripts.
before_install:
# Fetch the scripts to do the actual building/testing.
- |
wget "https://raw.githubusercontent.com/boostorg/regression/develop/ci/src/ci_boost_common.py" -P ..
wget "https://raw.githubusercontent.com/boostorg/regression/develop/ci/src/ci_boost_library_test.py" -P ..
install: python "${TRAVIS_BUILD_DIR}/../ci_boost_library_test.py" install
before_script: python "${TRAVIS_BUILD_DIR}/../ci_boost_library_test.py" before_script
script: python "${TRAVIS_BUILD_DIR}/../ci_boost_library_test.py" script
before_cache: python "${TRAVIS_BUILD_DIR}/../ci_boost_library_test.py" before_cache
after_success: python "${TRAVIS_BUILD_DIR}/../ci_boost_library_test.py" after_success
after_failure: python "${TRAVIS_BUILD_DIR}/../ci_boost_library_test.py" after_failure
after_script: python "${TRAVIS_BUILD_DIR}/../ci_boost_library_test.py" after_script
cache:
directories:
- $HOME/boostorg/boost

View File

@ -1,42 +1,152 @@
# 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 2015-2016.
# Set up notifications so that the maintainers of the library get
# build status messages.
notifications:
- provider: Email
to:
- grafikrobot@gmail.com
on_build_status_changed: true
# This lists all the toolsets we will test with the Boost CI
# scripts. Predef needs to check all of them as its job is to
# distiguish between all of them. For other libraries you would
# want to limit the list to the toolsets that are important
# for that.
#
# This also includes setting up how to create the cache. We
# opt for slightly better compression and solid archives.
# As we have a lot of files in the boost tree which is what
# we are putting in the cache.
environment:
APPVEYOR_CACHE_ENTRY_ZIP_ARGS: -t7z -m0=lzma2 -mx=3
matrix:
- TOOLSET: vs-2008
platform: 32
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2010
platform: 32
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2012
platform: 32
- TOOLSET: vs-2012
COMMENT: UWP DESKTOP
CXXFLAGS: /D_WIN32_WINNT=0x0602 /DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP
platform: 32
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2012
COMMENT: UWP STORE
CXXFLAGS: /D_WIN32_WINNT=0x0602 /DWINAPI_FAMILY=WINAPI_FAMILY_APP
platform: 32
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2013
platform: 32
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2013
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2013
COMMENT: UWP DESKTOP
CXXFLAGS: /D_WIN32_WINNT=0x0603 /DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2013
COMMENT: UWP PHONE
CXXFLAGS: /D_WIN32_WINNT=0x0603 /DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2013
COMMENT: UWP STORE
CXXFLAGS: /D_WIN32_WINNT=0x0603 /DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2015
platform: 32
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2015
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: vs-2017
platform: 32
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- TOOLSET: vs-2017
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- TOOLSET: vs-2017
CXXFLAGS: /std:c++14
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- TOOLSET: vs-2017
CXXFLAGS: /std:c++latest
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- TOOLSET: vs-2017
COMMENT: UWP DESKTOP
CXXFLAGS: /D_WIN32_WINNT=0x0A00 /DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- TOOLSET: vs-2017
COMMENT: UWP PHONE
CXXFLAGS: /D_WIN32_WINNT=0x0A00 /DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- TOOLSET: vs-2017
COMMENT: UWP STORE
CXXFLAGS: /D_WIN32_WINNT=0x0A00 /DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- TOOLSET: vs-2017
COMMENT: UWP SERVER
CXXFLAGS: /D_WIN32_WINNT=0x0A00 /DWINAPI_FAMILY=WINAPI_FAMILY_SERVER
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- TOOLSET: vs-2017
COMMENT: UWP SYSTEM
CXXFLAGS: /D_WIN32_WINNT=0x0A00 /DWINAPI_FAMILY=WINAPI_FAMILY_SYSTEM
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- TOOLSET: mingw-5
platform: 32
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: mingw64-6
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: mingw64-6
COMMENT: UWP DESKTOP
CXXFLAGS: -D_WIN32_WINNT=0x0602 -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- TOOLSET: mingw64-6
COMMENT: UWP STORE
CXXFLAGS: -D_WIN32_WINNT=0x0602 -DWINAPI_FAMILY=WINAPI_FAMILY_APP
platform: 64
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
# We can also set up configurations for testing which map to
# the b2 build variants.
configuration:
- debug
- release
# These are the standard steps to bootstrap the Boost CI scripts
# and to forward the actions to the scripts.
init:
# Fetch the scripts to do the actual building/testing.
- cd %APPVEYOR_BUILD_FOLDER%/..
- appveyor DownloadFile "https://raw.githubusercontent.com/boostorg/regression/develop/ci/src/script.py"
- dir
- appveyor DownloadFile "https://raw.githubusercontent.com/boostorg/regression/develop/ci/src/ci_boost_common.py"
- appveyor DownloadFile "https://raw.githubusercontent.com/boostorg/regression/develop/ci/src/ci_boost_library_test.py"
- 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
install: python ../ci_boost_library_test.py install
before_build: python ../ci_boost_library_test.py before_build
build_script: python ../ci_boost_library_test.py build_script
after_build: python ../ci_boost_library_test.py after_build
before_test: python ../ci_boost_library_test.py before_test
test_script: python ../ci_boost_library_test.py test_script
after_test: python ../ci_boost_library_test.py after_test
on_success: python ../ci_boost_library_test.py on_success
on_failure: python ../ci_boost_library_test.py on_failure
on_finish: python ../ci_boost_library_test.py on_finish

View File

@ -76,7 +76,7 @@ boostbook standalone
# alias boostdoc ;
# explicit boostdoc ;
#
alias boostdoc : predef : : : <implicit-dependency>predef ;
alias boostdoc : predef ;
explicit boostdoc ;
# Target for Boost standalone release documentation building.

View File

@ -7,6 +7,31 @@ http://www.boost.org/LICENSE_1_0.txt)
[section History]
[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.

View File

@ -1,8 +1,8 @@
[article Boost.Predef
[quickbook 1.7]
[version 1.4.1]
[version 1.7]
[authors [Rivera, Rene]]
[copyright 2005, 2008-2016 Rene Rivera]
[copyright 2005-2016 Rene Rivera]
[copyright 2015 Charly Chevalier]
[copyright 2015 Joel Falcou]
[purpose Identification and specification of predefined macros.]
@ -114,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.

View File

@ -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]

View File

@ -27,11 +27,13 @@ http://www.boost.org/LICENSE_1_0.txt)
[[`__TARGET_ARCH_ARM`] [__predef_detection__]]
[[`__TARGET_ARCH_THUMB`] [__predef_detection__]]
[[`_M_ARM`] [__predef_detection__]]
[[`_M_ARM64`] [__predef_detection__]]
[[`__arm64`] [8.0.0]]
[[`__TARGET_ARCH_ARM`] [V.0.0]]
[[`__TARGET_ARCH_THUMB`] [V.0.0]]
[[`_M_ARM`] [V.0.0]]
[[`_M_ARM64`] [8.0.0]]
]
*/
@ -39,7 +41,7 @@ http://www.boost.org/LICENSE_1_0.txt)
#if defined(__arm__) || defined(__arm64) || defined(__thumb__) || \
defined(__TARGET_ARCH_ARM) || defined(__TARGET_ARCH_THUMB) || \
defined(_M_ARM)
defined(_M_ARM) || defined(_M_ARM64)
# undef BOOST_ARCH_ARM
# if !defined(BOOST_ARCH_ARM) && defined(__arm64)
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
@ -50,6 +52,9 @@ http://www.boost.org/LICENSE_1_0.txt)
# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB)
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0)
# endif
# if !defined(BOOST_ARCH_ARM) && defined(_M_ARM64)
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
# endif
# if !defined(BOOST_ARCH_ARM) && defined(_M_ARM)
# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0)
# endif

View File

@ -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.

View File

@ -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

View File

@ -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,\

View File

@ -24,6 +24,7 @@ http://www.boost.org/LICENSE_1_0.txt)
[[`__ARM_NEON__`] [__predef_detection__]]
[[`__aarch64__`] [__predef_detection__]]
[[`_M_ARM`] [__predef_detection__]]
[[`_M_ARM64`] [__predef_detection__]]
]
[table
@ -32,6 +33,7 @@ http://www.boost.org/LICENSE_1_0.txt)
[[`__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]]
]
*/
@ -39,7 +41,7 @@ http://www.boost.org/LICENSE_1_0.txt)
#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))
#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

View File

@ -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>

View 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)

View File

@ -50,6 +50,8 @@ Macros are:
#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)` */
@ -64,6 +66,8 @@ Macros are:
#define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0)
/*` `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)` */

View File

@ -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>

View File

@ -34,13 +34,20 @@ http://www.boost.org/LICENSE_1_0.txt)
# define BOOST_OS_BSD_AVAILABLE
# endif
# undef BOOST_OS_BSD_FREE
# include <sys/param.h>
# if defined(__FreeBSD_version)
# if __FreeBSD_version < 500000
# if __FreeBSD_version == 491000
# define BOOST_OS_BSD_FREE \
BOOST_PREDEF_MAKE_10_VRP000(__FreeBSD_version)
BOOST_VERSION_NUMBER(4, 10, 0)
# elif __FreeBSD_version == 492000
# define BOOST_OS_BSD_FREE \
BOOST_VERSION_NUMBER(4, 11, 0)
# elif __FreeBSD_version < 500000
# define BOOST_OS_BSD_FREE \
BOOST_PREDEF_MAKE_10_VRPPPP(__FreeBSD_version)
# else
# define BOOST_OS_BSD_FREE \
BOOST_PREDEF_MAKE_10_VRR000(__FreeBSD_version)
BOOST_PREDEF_MAKE_10_VVRRPPP(__FreeBSD_version)
# endif
# else
# define BOOST_OS_BSD_FREE BOOST_VERSION_NUMBER_AVAILABLE

View File

@ -50,6 +50,26 @@ http://www.boost.org/LICENSE_1_0.txt)
[[`OpenBSD4_7`] [4.7.0]]
[[`OpenBSD4_8`] [4.8.0]]
[[`OpenBSD4_9`] [4.9.0]]
[[`OpenBSD5_0`] [5.0.0]]
[[`OpenBSD5_1`] [5.1.0]]
[[`OpenBSD5_2`] [5.2.0]]
[[`OpenBSD5_3`] [5.3.0]]
[[`OpenBSD5_4`] [5.4.0]]
[[`OpenBSD5_5`] [5.5.0]]
[[`OpenBSD5_6`] [5.6.0]]
[[`OpenBSD5_7`] [5.7.0]]
[[`OpenBSD5_8`] [5.8.0]]
[[`OpenBSD5_9`] [5.9.0]]
[[`OpenBSD6_0`] [6.0.0]]
[[`OpenBSD6_1`] [6.1.0]]
[[`OpenBSD6_2`] [6.2.0]]
[[`OpenBSD6_3`] [6.3.0]]
[[`OpenBSD6_4`] [6.4.0]]
[[`OpenBSD6_5`] [6.5.0]]
[[`OpenBSD6_6`] [6.6.0]]
[[`OpenBSD6_7`] [6.7.0]]
[[`OpenBSD6_8`] [6.8.0]]
[[`OpenBSD6_9`] [6.9.0]]
]
*/
@ -153,6 +173,66 @@ http://www.boost.org/LICENSE_1_0.txt)
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_9)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,9,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_0)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,0,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_1)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,1,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_2)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,2,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_3)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,3,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_4)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,4,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_5)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,5,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_6)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,6,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_7)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,7,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_8)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,8,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_9)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,9,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_0)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,0,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_1)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,1,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_2)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,2,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_3)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,3,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_4)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,4,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_5)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,5,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_6)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,6,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_7)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,7,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_8)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,8,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_9)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,9,0)
# endif
# if !defined(BOOST_OS_BSD_OPEN)
# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER_AVAILABLE
# endif

View File

@ -0,0 +1,87 @@
/*
Copyright Rene Rivera 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)
*/
#ifndef BOOST_PREDEF_WORKAROUND_H
#define BOOST_PREDEF_WORKAROUND_H
/*`
[heading `BOOST_PREDEF_WORKAROUND`]
``
BOOST_PREDEF_WORKAROUND(symbol,comp,major,minor,patch)
``
Usage:
``
#if BOOST_PREDEF_WORKAROUND(BOOST_COMP_CLANG,<,3,0,0)
// Workaround for old clang compilers..
#endif
``
Defines a comparison against two version numbers that depends on the definion
of `BOOST_STRICT_CONFIG`. When `BOOST_STRICT_CONFIG` is defined this will expand
to a value convertible to `false`. Which has the effect of disabling all code
conditionally guarded by `BOOST_PREDEF_WORKAROUND`. When `BOOST_STRICT_CONFIG`
is undefine this expand to test the given `symbol` version value with the
`comp` comparison against `BOOST_VERSION_NUMBER(major,minor,patch)`.
*/
#ifdef BOOST_STRICT_CONFIG
# define BOOST_PREDEF_WORKAROUND(symbol, comp, major, minor, patch) (0)
#else
# include <boost/predef/version_number.h>
# define BOOST_PREDEF_WORKAROUND(symbol, comp, major, minor, patch) \
( (symbol) != (0) ) && \
( (symbol) comp (BOOST_VERSION_NUMBER( (major) , (minor) , (patch) )) )
#endif
/*`
[heading `BOOST_PREDEF_TESTED_AT`]
``
BOOST_PREDEF_TESTED_AT(symbol,major,minor,patch)
``
Usage:
``
#if BOOST_PREDEF_TESTED_AT(BOOST_COMP_CLANG,3,5,0)
// Needed for clang, and last checked for 3.5.0.
#endif
``
Defines a comparison against two version numbers that depends on the definion
of `BOOST_STRICT_CONFIG` and `BOOST_DETECT_OUTDATED_WORKAROUNDS`.
When `BOOST_STRICT_CONFIG` is defined this will expand to a value convertible
to `false`. Which has the effect of disabling all code
conditionally guarded by `BOOST_PREDEF_TESTED_AT`. When `BOOST_STRICT_CONFIG`
is undefined this expand to either:
* A value convertible to `true` when `BOOST_DETECT_OUTDATED_WORKAROUNDS` is not
defined.
* A value convertible `true` when the expansion of
`BOOST_PREDEF_WORKAROUND(symbol, <=, major, minor, patch)` is `true` and
`BOOST_DETECT_OUTDATED_WORKAROUNDS` is defined.
* A compile error when the expansion of
`BOOST_PREDEF_WORKAROUND(symbol, >, major, minor, patch)` is true and
`BOOST_DETECT_OUTDATED_WORKAROUNDS` is defined.
*/
#ifdef BOOST_STRICT_CONFIG
# define BOOST_PREDEF_TESTED_AT(symbol, major, minor, patch) (0)
#else
# ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS
# define BOOST_PREDEF_TESTED_AT(symbol, major, minor, patch) ( \
BOOST_PREDEF_WORKAROUND(symbol, <=, major, minor, patch) \
? 1 \
: (1%0) )
# else
# define BOOST_PREDEF_TESTED_AT(symbol, major, minor, patch) \
( (symbol) >= BOOST_VERSION_NUMBER_AVAILABLE )
# endif
#endif
#endif

View File

@ -11,11 +11,18 @@ http://www.boost.org/LICENSE_1_0.txt)
#define BOOST_PREDEF_PLATFORM_H
#endif
#include <boost/predef/platform/cloudabi.h>
#include <boost/predef/platform/mingw.h>
#include <boost/predef/platform/mingw32.h>
#include <boost/predef/platform/mingw64.h>
#include <boost/predef/platform/windows_uwp.h>
#include <boost/predef/platform/windows_desktop.h>
#include <boost/predef/platform/windows_store.h>
#include <boost/predef/platform/windows_phone.h>
#include <boost/predef/platform/windows_runtime.h>
#include <boost/predef/platform/windows_server.h>
#include <boost/predef/platform/windows_store.h>
#include <boost/predef/platform/windows_system.h>
#include <boost/predef/platform/windows_runtime.h> // deprecated
#include <boost/predef/platform/ios.h>
/*#include <boost/predef/platform/.h>*/
#endif

View File

@ -0,0 +1,43 @@
/*
Copyright 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_PLAT_CLOUDABI_H
#define BOOST_PREDEF_PLAT_CLOUDABI_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_PLAT_CLOUDABI`]
[@https://github.com/NuxiNL/cloudabi CloudABI] platform.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__CloudABI__`] [__predef_detection__]]
]
*/
#define BOOST_PLAT_CLOUDABI BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__CloudABI__)
# undef BOOST_PLAT_CLOUDABI
# define BOOST_PLAT_CLOUDABI BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_PLAT_CLOUDABI
# define BOOST_PLAT_CLOUDABI_AVAILABLE
# include <boost/predef/detail/platform_detected.h>
#endif
#define BOOST_PLAT_CLOUDABI_NAME "CloudABI"
#endif
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_CLOUDABI,BOOST_PLAT_CLOUDABI_NAME)

View File

@ -0,0 +1,58 @@
/*
Copyright Ruslan Baratov 2017
Copyright Rene Rivera 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)
*/
#ifndef BOOST_PREDEF_PLAT_IOS_H
#define BOOST_PREDEF_PLAT_IOS_H
#include <boost/predef/os/ios.h> // BOOST_OS_IOS
#include <boost/predef/version_number.h> // BOOST_VERSION_NUMBER_NOT_AVAILABLE
/*`
[heading `BOOST_PLAT_IOS_DEVICE`]
[heading `BOOST_PLAT_IOS_SIMULATOR`]
[table
[[__predef_symbol__] [__predef_version__]]
[[`TARGET_IPHONE_SIMULATOR`] [__predef_detection__]]
]
*/
#define BOOST_PLAT_IOS_DEVICE BOOST_VERSION_NUMBER_NOT_AVAILABLE
#define BOOST_PLAT_IOS_SIMULATOR BOOST_VERSION_NUMBER_NOT_AVAILABLE
// https://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/TargetConditionals.h
#if BOOST_OS_IOS
# include <TargetConditionals.h>
# if TARGET_IPHONE_SIMULATOR == 1
# undef BOOST_PLAT_IOS_SIMULATOR
# define BOOST_PLAT_IOS_SIMULATOR BOOST_VERSION_NUMBER_AVAILABLE
# else
# undef BOOST_PLAT_IOS_DEVICE
# define BOOST_PLAT_IOS_DEVICE BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#if BOOST_PLAT_IOS_SIMULATOR
# define BOOST_PLAT_IOS_SIMULATOR_AVAILABLE
# include <boost/predef/detail/platform_detected.h>
#endif
#if BOOST_PLAT_IOS_DEVICE
# define BOOST_PLAT_IOS_DEVICE_AVAILABLE
# include <boost/predef/detail/platform_detected.h>
#endif
#define BOOST_PLAT_IOS_SIMULATOR_NAME "iOS Simulator"
#define BOOST_PLAT_IOS_DEVICE_NAME "iOS Device"
#endif // BOOST_PREDEF_PLAT_IOS_H
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_IOS_SIMULATOR,BOOST_PLAT_IOS_SIMULATOR_NAME)
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_IOS_DEVICE,BOOST_PLAT_IOS_DEVICE_NAME)

View File

@ -5,8 +5,8 @@ Distributed under the Boost Software License, Version 1.0.
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_MINGW_H
#define BOOST_PREDEF_COMPILER_MINGW_H
#ifndef BOOST_PREDEF_PLAT_MINGW_H
#define BOOST_PREDEF_PLAT_MINGW_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
@ -14,7 +14,7 @@ http://www.boost.org/LICENSE_1_0.txt)
/*`
[heading `BOOST_PLAT_MINGW`]
[@http://en.wikipedia.org/wiki/MinGW MinGW] platform.
[@http://en.wikipedia.org/wiki/MinGW MinGW] platform, either variety.
Version number available as major, minor, and patch.
[table
@ -56,7 +56,7 @@ Version number available as major, minor, and patch.
# include <boost/predef/detail/platform_detected.h>
#endif
#define BOOST_PLAT_MINGW_NAME "MinGW"
#define BOOST_PLAT_MINGW_NAME "MinGW (any variety)"
#endif

View File

@ -0,0 +1,63 @@
/*
Copyright Rene Rivera 2008-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_PLAT_MINGW32_H
#define BOOST_PREDEF_PLAT_MINGW32_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_PLAT_MINGW32`]
[@http://www.mingw.org/ MinGW] platform.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__MINGW32__`] [__predef_detection__]]
[[`__MINGW32_VERSION_MAJOR`, `__MINGW32_VERSION_MINOR`] [V.R.0]]
]
*/
#define BOOST_PLAT_MINGW32 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__MINGW32__)
# include <_mingw.h>
# if !defined(BOOST_PLAT_MINGW32_DETECTION) && (defined(__MINGW32_VERSION_MAJOR) && defined(__MINGW32_VERSION_MINOR))
# define BOOST_PLAT_MINGW32_DETECTION \
BOOST_VERSION_NUMBER(__MINGW32_VERSION_MAJOR,__MINGW32_VERSION_MINOR,0)
# endif
# if !defined(BOOST_PLAT_MINGW32_DETECTION)
# define BOOST_PLAT_MINGW32_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#ifdef BOOST_PLAT_MINGW32_DETECTION
# define BOOST_PLAT_MINGW32_AVAILABLE
# if defined(BOOST_PREDEF_DETAIL_PLAT_DETECTED)
# define BOOST_PLAT_MINGW32_EMULATED BOOST_PLAT_MINGW32_DETECTION
# else
# undef BOOST_PLAT_MINGW32
# define BOOST_PLAT_MINGW32 BOOST_PLAT_MINGW32_DETECTION
# endif
# include <boost/predef/detail/platform_detected.h>
#endif
#define BOOST_PLAT_MINGW32_NAME "MinGW"
#endif
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW32,BOOST_PLAT_MINGW32_NAME)
#ifdef BOOST_PLAT_MINGW32_EMULATED
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW32_EMULATED,BOOST_PLAT_MINGW32_NAME)
#endif

View File

@ -0,0 +1,63 @@
/*
Copyright Rene Rivera 2008-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_PLAT_MINGW64_H
#define BOOST_PREDEF_PLAT_MINGW64_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/*`
[heading `BOOST_PLAT_MINGW64`]
[@https://mingw-w64.org/ MinGW-w64] platform.
Version number available as major, minor, and patch.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__MINGW64__`] [__predef_detection__]]
[[`__MINGW64_VERSION_MAJOR`, `__MINGW64_VERSION_MINOR`] [V.R.0]]
]
*/
#define BOOST_PLAT_MINGW64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__MINGW64__)
# include <_mingw.h>
# if !defined(BOOST_PLAT_MINGW64_DETECTION) && (defined(__MINGW64_VERSION_MAJOR) && defined(__MINGW64_VERSION_MINOR))
# define BOOST_PLAT_MINGW64_DETECTION \
BOOST_VERSION_NUMBER(__MINGW64_VERSION_MAJOR,__MINGW64_VERSION_MINOR,0)
# endif
# if !defined(BOOST_PLAT_MINGW64_DETECTION)
# define BOOST_PLAT_MINGW64_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
#ifdef BOOST_PLAT_MINGW64_DETECTION
# define BOOST_PLAT_MINGW64_AVAILABLE
# if defined(BOOST_PREDEF_DETAIL_PLAT_DETECTED)
# define BOOST_PLAT_MINGW64_EMULATED BOOST_PLAT_MINGW64_DETECTION
# else
# undef BOOST_PLAT_MINGW64
# define BOOST_PLAT_MINGW64 BOOST_PLAT_MINGW64_DETECTION
# endif
# include <boost/predef/detail/platform_detected.h>
#endif
#define BOOST_PLAT_MINGW64_NAME "MinGW-w64"
#endif
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW64,BOOST_PLAT_MINGW64_NAME)
#ifdef BOOST_PLAT_MINGW64_EMULATED
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW64_EMULATED,BOOST_PLAT_MINGW64_NAME)
#endif

View File

@ -9,25 +9,31 @@ http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_PREDEF_PLAT_WINDOWS_DESKTOP_H
#define BOOST_PREDEF_PLAT_WINDOWS_DESKTOP_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
#include <boost/predef/os/windows.h>
#include <boost/predef/platform/windows_uwp.h>
#include <boost/predef/version_number.h>
/*`
[heading `BOOST_PLAT_WINDOWS_DESKTOP`]
[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
for Windows Desktop development. Also available if the Platform SDK is too
old to support UWP.
[table
[[__predef_symbol__] [__predef_version__]]
[[`!WINAPI_FAMILY`] [__predef_detection__]]
[[`WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP`] [__predef_detection__]]
[[`!BOOST_PLAT_WINDOWS_UWP`] [__predef_detection__]]
]
*/
#define BOOST_PLAT_WINDOWS_DESKTOP BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if BOOST_OS_WINDOWS && \
( !defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) )
((defined(WINAPI_FAMILY_DESKTOP_APP) && WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) || \
!BOOST_PLAT_WINDOWS_UWP)
# undef BOOST_PLAT_WINDOWS_DESKTOP
# define BOOST_PLAT_WINDOWS_DESKTOP BOOST_VERSION_NUMBER_AVAILABLE
#endif

View File

@ -9,13 +9,17 @@ http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_PREDEF_PLAT_WINDOWS_PHONE_H
#define BOOST_PREDEF_PLAT_WINDOWS_PHONE_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
#include <boost/predef/os/windows.h>
#include <boost/predef/platform/windows_uwp.h>
#include <boost/predef/version_number.h>
/*`
[heading `BOOST_PLAT_WINDOWS_PHONE`]
[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
for Windows Phone development.
[table
[[__predef_symbol__] [__predef_version__]]
@ -25,7 +29,8 @@ http://www.boost.org/LICENSE_1_0.txt)
#define BOOST_PLAT_WINDOWS_PHONE BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if BOOST_OS_WINDOWS && defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
#if BOOST_OS_WINDOWS && \
defined(WINAPI_FAMILY_PHONE_APP) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
# undef BOOST_PLAT_WINDOWS_PHONE
# define BOOST_PLAT_WINDOWS_PHONE BOOST_VERSION_NUMBER_AVAILABLE
#endif

View File

@ -9,25 +9,33 @@ http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_PREDEF_PLAT_WINDOWS_RUNTIME_H
#define BOOST_PREDEF_PLAT_WINDOWS_RUNTIME_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
#include <boost/predef/os/windows.h>
#include <boost/predef/platform/windows_phone.h>
#include <boost/predef/platform/windows_store.h>
#include <boost/predef/version_number.h>
/*`
[heading `BOOST_PLAT_WINDOWS_RUNTIME`]
Deprecated.
[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
for Windows Phone or Store development. This does not align to the existing development model for
UWP and is deprecated. Use one of the other `BOOST_PLAT_WINDOWS_*`definitions instead.
[table
[[__predef_symbol__] [__predef_version__]]
[[`WINAPI_FAMILY == WINAPI_FAMILY_APP`] [__predef_detection__]]
[[`WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP`] [__predef_detection__]]
[[`BOOST_PLAT_WINDOWS_PHONE`] [__predef_detection__]]
[[`BOOST_PLAT_WINDOWS_STORE`] [__predef_detection__]]
]
*/
#define BOOST_PLAT_WINDOWS_RUNTIME BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if BOOST_OS_WINDOWS && defined(WINAPI_FAMILY) && \
( WINAPI_FAMILY == WINAPI_FAMILY_APP || WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP )
#if BOOST_OS_WINDOWS && \
(BOOST_PLAT_WINDOWS_STORE || BOOST_PLAT_WINDOWS_PHONE)
# undef BOOST_PLAT_WINDOWS_RUNTIME
# define BOOST_PLAT_WINDOWS_RUNTIME BOOST_VERSION_NUMBER_AVAILABLE
#endif

View File

@ -0,0 +1,47 @@
/*
Copyright James E. King III, 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)
*/
#ifndef BOOST_PREDEF_PLAT_WINDOWS_SERVER_H
#define BOOST_PREDEF_PLAT_WINDOWS_SERVER_H
#include <boost/predef/make.h>
#include <boost/predef/os/windows.h>
#include <boost/predef/platform/windows_uwp.h>
#include <boost/predef/version_number.h>
/*`
[heading `BOOST_PLAT_WINDOWS_SERVER`]
[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
for Windows Server development.
[table
[[__predef_symbol__] [__predef_version__]]
[[`WINAPI_FAMILY == WINAPI_FAMILY_SERVER`] [__predef_detection__]]
]
*/
#define BOOST_PLAT_WINDOWS_SERVER BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if BOOST_OS_WINDOWS && \
defined(WINAPI_FAMILY_SERVER) && WINAPI_FAMILY == WINAPI_FAMILY_SERVER
# undef BOOST_PLAT_WINDOWS_SERVER
# define BOOST_PLAT_WINDOWS_SERVER BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_PLAT_WINDOWS_SERVER
# define BOOST_PLAT_WINDOWS_SERVER_AVAILABLE
# include <boost/predef/detail/platform_detected.h>
#endif
#define BOOST_PLAT_WINDOWS_SERVER_NAME "Windows Server"
#endif
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_SERVER,BOOST_PLAT_WINDOWS_SERVER_NAME)

View File

@ -9,23 +9,30 @@ http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_PREDEF_PLAT_WINDOWS_STORE_H
#define BOOST_PREDEF_PLAT_WINDOWS_STORE_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
#include <boost/predef/os/windows.h>
#include <boost/predef/platform/windows_uwp.h>
#include <boost/predef/version_number.h>
/*`
[heading `BOOST_PLAT_WINDOWS_STORE`]
[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
for Windows Store development.
[table
[[__predef_symbol__] [__predef_version__]]
[[`WINAPI_FAMILY == WINAPI_FAMILY_APP`] [__predef_detection__]]
]
[[`WINAPI_FAMILY == WINAPI_FAMILY_PC_APP`] [__predef_detection__]]
[[`WINAPI_FAMILY == WINAPI_FAMILY_APP` (deprecated)] [__predef_detection__]]
]
*/
#define BOOST_PLAT_WINDOWS_STORE BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if BOOST_OS_WINDOWS && defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_APP
#if BOOST_OS_WINDOWS && \
((defined(WINAPI_FAMILY_PC_APP) && WINAPI_FAMILY == WINAPI_FAMILY_PC_APP) || \
(defined(WINAPI_FAMILY_APP) && WINAPI_FAMILY == WINAPI_FAMILY_APP))
# undef BOOST_PLAT_WINDOWS_STORE
# define BOOST_PLAT_WINDOWS_STORE BOOST_VERSION_NUMBER_AVAILABLE
#endif

View File

@ -0,0 +1,47 @@
/*
Copyright James E. King III, 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)
*/
#ifndef BOOST_PREDEF_PLAT_WINDOWS_SYSTEM_H
#define BOOST_PREDEF_PLAT_WINDOWS_SYSTEM_H
#include <boost/predef/make.h>
#include <boost/predef/os/windows.h>
#include <boost/predef/platform/windows_uwp.h>
#include <boost/predef/version_number.h>
/*`
[heading `BOOST_PLAT_WINDOWS_SYSTEM`]
[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
for Windows System development.
[table
[[__predef_symbol__] [__predef_version__]]
[[`WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM`] [__predef_detection__]]
]
*/
#define BOOST_PLAT_WINDOWS_SYSTEM BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if BOOST_OS_WINDOWS && \
defined(WINAPI_FAMILY_SYSTEM) && WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM
# undef BOOST_PLAT_WINDOWS_SYSTEM
# define BOOST_PLAT_WINDOWS_SYSTEM BOOST_VERSION_NUMBER_AVAILABLE
#endif
#if BOOST_PLAT_WINDOWS_SYSTEM
# define BOOST_PLAT_WINDOWS_SYSTEM_AVAILABLE
# include <boost/predef/detail/platform_detected.h>
#endif
#define BOOST_PLAT_WINDOWS_SYSTEM_NAME "Windows Drivers and Tools"
#endif
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_SYSTEM,BOOST_PLAT_WINDOWS_SYSTEM_NAME)

View File

@ -0,0 +1,60 @@
/*
Copyright James E. King III, 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)
*/
#ifndef BOOST_PREDEF_PLAT_WINDOWS_UWP_H
#define BOOST_PREDEF_PLAT_WINDOWS_UWP_H
#include <boost/predef/make.h>
#include <boost/predef/os/windows.h>
#include <boost/predef/version_number.h>
/*`
[heading `BOOST_PLAT_WINDOWS_UWP`]
[@http://docs.microsoft.com/windows/uwp/ Universal Windows Platform]
is available if the current development environment is capable of targeting
UWP development.
[table
[[__predef_symbol__] [__predef_version__]]
[[`__MINGW64_VERSION_MAJOR` from `_mingw.h`] [`>= 3`]]
[[`VER_PRODUCTBUILD` from `ntverp.h`] [`>= 9200`]]
]
*/
#define BOOST_PLAT_WINDOWS_UWP BOOST_VERSION_NUMBER_NOT_AVAILABLE
#define BOOST_PLAT_WINDOWS_SDK_VERSION BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if BOOST_OS_WINDOWS
// MinGW (32-bit) has no ntverp.h header
#if !defined(__MINGW32__)
# include <ntverp.h>
# undef BOOST_PLAT_WINDOWS_SDK_VERSION
# define BOOST_PLAT_WINDOWS_SDK_VERSION BOOST_VERSION_NUMBER(0, 0, VER_PRODUCTBUILD)
#endif
// 9200 is Windows SDK 8.0 from ntverp.h which introduced family support
#if ((BOOST_PLAT_WINDOWS_SDK_VERSION >= BOOST_VERSION_NUMBER(0, 0, 9200)) || \
(defined(__MINGW64__) && __MINGW64_VERSION_MAJOR >= 3))
# undef BOOST_PLAT_WINDOWS_UWP
# define BOOST_PLAT_WINDOWS_UWP BOOST_VERSION_NUMBER_AVAILABLE
#endif
#endif
#if BOOST_PLAT_WINDOWS_UWP
# define BOOST_PLAT_WINDOWS_UWP_AVAILABLE
# include <boost/predef/detail/platform_detected.h>
# include <winapifamily.h> // Windows SDK
#endif
#define BOOST_PLAT_WINDOWS_UWP_NAME "Universal Windows Platform"
#endif
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_UWP, BOOST_PLAT_WINDOWS_UWP_NAME)

View File

@ -10,6 +10,6 @@ http://www.boost.org/LICENSE_1_0.txt)
#include <boost/predef/version_number.h>
#define BOOST_PREDEF_VERSION BOOST_VERSION_NUMBER(1,4,1)
#define BOOST_PREDEF_VERSION BOOST_VERSION_NUMBER(1,7,0)
#endif

View File

@ -1,5 +1,5 @@
/*
Copyright Rene Rivera 2005, 2008-2013
Copyright Rene Rivera 2005-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)
@ -50,4 +50,23 @@ Defines standard version numbers, with these properties:
#define BOOST_VERSION_NUMBER_NOT_AVAILABLE \
BOOST_VERSION_NUMBER_ZERO
/*`
``
BOOST_VERSION_NUMBER_MAJOR(N), BOOST_VERSION_NUMBER_MINOR(N), BOOST_VERSION_NUMBER_PATCH(N)
``
The macros extract the major, minor, and patch portion from a well formed
version number resulting in a preprocessor expression in the range of
\[0,99\] or \[0,99999\] for the major and minor, or patch numbers
respectively.
*/
#define BOOST_VERSION_NUMBER_MAJOR(N) \
( ((N)/10000000)%100 )
#define BOOST_VERSION_NUMBER_MINOR(N) \
( ((N)/100000)%100 )
#define BOOST_VERSION_NUMBER_PATCH(N) \
( (N)%100000 )
#endif

7
test/build.jam Executable file → Normal file
View File

@ -38,7 +38,7 @@ else
predef-dependency = $(predef-include-root)/boost/predef.h ;
}
project test
project predef-test
: requirements
<include>$(predef-include-root)
# Add explicit dependency since we don't have header scanner for
@ -59,6 +59,11 @@ test-suite predef :
[ compile macos_vs_bsd.c : [ predef-require "BOOST_OS_MACOS" : cpp ] ]
[ run check_value.cpp : : : <test-info>always_show_run_output
[ predef-check "BOOST_COMP_CLANG > 0.0.0" "BOOST_OS_LINUX == 0" : : <cxxflags>-DCHECK_VALUE=true ] ]
[ run workaround.cpp ]
[ compile workaround_strict_config.cpp ]
[ run tested_at.cpp ]
[ compile-fail tested_at_outdated.cpp : <test-info>always_show_run_output ]
[ compile platform_windows.cpp ]
;
# Minimal testing done for predef for CI. Since

View File

@ -44,6 +44,8 @@ void test_BOOST_VERSION_NUMBER()
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRR(9999) == BOOST_VERSION_NUMBER(99,99,0));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRPP(9999) == BOOST_VERSION_NUMBER(9,9,99));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRRPP(99999) == BOOST_VERSION_NUMBER(9,99,99));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRPPPP(460002) == BOOST_VERSION_NUMBER(4,6,2));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRPPPP(491000) == BOOST_VERSION_NUMBER(4,9,1000));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRP000(999000) == BOOST_VERSION_NUMBER(9,9,9));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRR000(999000) == BOOST_VERSION_NUMBER(9,99,0));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRR00PP00(2199009900u) == BOOST_VERSION_NUMBER(21,99,99));
@ -52,6 +54,8 @@ void test_BOOST_VERSION_NUMBER()
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VV00(9900) == BOOST_VERSION_NUMBER(99,00,00));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRR0PPPP(999909999) == BOOST_VERSION_NUMBER(99,99,9999));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRR(999) == BOOST_VERSION_NUMBER(9,99,00));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRRPPP(903122) == BOOST_VERSION_NUMBER(9,3,122));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRRPPP(1101002) == BOOST_VERSION_NUMBER(11,1,2));
PREDEF_CHECK(BOOST_PREDEF_MAKE_DATE(1971,1,1) == BOOST_VERSION_NUMBER(1,1,1));
PREDEF_CHECK(BOOST_PREDEF_MAKE_YYYYMMDD(19700101) == BOOST_VERSION_NUMBER(0,1,1));

177
test/platform_windows.cpp Normal file
View File

@ -0,0 +1,177 @@
/*
Copyright James E. King, III - 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)
*/
#include <boost/predef/platform.h>
//
// This file is used to verify the BOOST_PLAT_WINDOWS_* logic.
//
// To exercise all of the combinations the CI build needs many
// jobs where it defines all the different possible WINAPI_FAMILY
// values on all supported platforms.
//
//
// UWP is available on Windows SDK 8.0 or later, or on MinGW-w64 major release 3 or later
//
#if (defined(__MINGW64__) && (__MINGW64_VERSION_MAJOR >= 3)) || (BOOST_PLAT_WINDOWS_SDK_VERSION >= 9200)
#if !BOOST_PLAT_WINDOWS_UWP
#error "BOOST_PLAT_WINDOWS_UWP should be available"
#endif
#else
#if BOOST_PLAT_WINDOWS_UWP
#error "BOOST_PLAT_WINDOWS_UWP should not be available"
#endif
#endif
#if !BOOST_PLAT_WINDOWS_UWP
//
// If BOOST_PLAT_WINDOWS_UWP is not available, none of the other BOOST_PLAT_WINDOWS_* are either
// except for BOOST_PLAT_WINDOWS_DESKTOP which is available for backwards compatibility.
//
#if BOOST_OS_WINDOWS && !BOOST_PLAT_WINDOWS_DESKTOP
#error "BOOST_PLAT_WINDOWS_DESKTOP should be available"
#endif
#if BOOST_PLAT_WINDOWS_PHONE
#error "BOOST_PLAT_WINDOWS_PHONE should not be available"
#endif
#if BOOST_PLAT_WINDOWS_RUNTIME /* deprecated */
#error "BOOST_PLAT_WINDOWS_RUNTIME should not be available"
#endif
#if BOOST_PLAT_WINDOWS_SERVER
#error "BOOST_PLAT_WINDOWS_SERVER should not be available"
#endif
#if BOOST_PLAT_WINDOWS_STORE
#error "BOOST_PLAT_WINDOWS_STORE should not be available"
#endif
#if BOOST_PLAT_WINDOWS_SYSTEM
#error "BOOST_PLAT_WINDOWS_SYSTEM should not be available"
#endif
#else // !BOOST_PLAT_WINDOWS_UWP
//
// If BOOST_PLAT_WINDOWS_UWP is available, and the SDK supports a particular family,
// and if WINAPI_FAMILY is set to it, then it and only it should be available.
//
#if !defined(WINAPI_FAMILY)
#error "windows_uwp.h should have included <winapifamily.h> which should have defined supported families"
#endif
#if WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP
#if !BOOST_PLAT_WINDOWS_DESKTOP
#error "BOOST_PLAT_WINDOWS_DESKTOP should be available"
#endif
#if BOOST_PLAT_WINDOWS_PHONE
#error "BOOST_PLAT_WINDOWS_PHONE should not be available"
#endif
#if BOOST_PLAT_WINDOWS_RUNTIME /* deprecated */
#error "BOOST_PLAT_WINDOWS_RUNTIME should not be available"
#endif
#if BOOST_PLAT_WINDOWS_SERVER
#error "BOOST_PLAT_WINDOWS_SERVER should not be available"
#endif
#if BOOST_PLAT_WINDOWS_STORE
#error "BOOST_PLAT_WINDOWS_STORE should not be available"
#endif
#if BOOST_PLAT_WINDOWS_SYSTEM
#error "BOOST_PLAT_WINDOWS_SYSTEM should not be available"
#endif
#endif
#if defined(WINAPI_FAMILY_PHONE_APP) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
#if BOOST_PLAT_WINDOWS_DESKTOP
#error "BOOST_PLAT_WINDOWS_DESKTOP should not be available"
#endif
#if !BOOST_PLAT_WINDOWS_PHONE
#error "BOOST_PLAT_WINDOWS_PHONE should be available"
#endif
#if !BOOST_PLAT_WINDOWS_RUNTIME /* deprecated */
#error "BOOST_PLAT_WINDOWS_RUNTIME should be available"
#endif
#if BOOST_PLAT_WINDOWS_SERVER
#error "BOOST_PLAT_WINDOWS_SERVER should not be available"
#endif
#if BOOST_PLAT_WINDOWS_STORE
#error "BOOST_PLAT_WINDOWS_STORE should not be available"
#endif
#if BOOST_PLAT_WINDOWS_SYSTEM
#error "BOOST_PLAT_WINDOWS_SYSTEM should not be available"
#endif
#endif
#if defined(WINAPI_FAMILY_SERVER_APP) && WINAPI_FAMILY == WINAPI_FAMILY_SERVER_APP
#if BOOST_PLAT_WINDOWS_DESKTOP
#error "BOOST_PLAT_WINDOWS_DESKTOP should not be available"
#endif
#if BOOST_PLAT_WINDOWS_PHONE
#error "BOOST_PLAT_WINDOWS_PHONE should not be available"
#endif
#if BOOST_PLAT_WINDOWS_RUNTIME /* deprecated */
#error "BOOST_PLAT_WINDOWS_RUNTIME should not be available"
#endif
#if !BOOST_PLAT_WINDOWS_SERVER
#error "BOOST_PLAT_WINDOWS_SERVER should be available"
#endif
#if BOOST_PLAT_WINDOWS_STORE
#error "BOOST_PLAT_WINDOWS_STORE should not be available"
#endif
#if BOOST_PLAT_WINDOWS_SYSTEM
#error "BOOST_PLAT_WINDOWS_SYSTEM should not be available"
#endif
#endif
// Store is WINAPI_FAMILY_APP in MinGW-w64 and in Windows SDK 8.0
// then in Windows SDK 8.1 it was deprecated in favor of WINAPI_FAMILY_PC_APP
#if ((defined(WINAPI_FAMILY_PC_APP) && WINAPI_FAMILY == WINAPI_FAMILY_PC_APP) || \
(defined(WINAPI_FAMILY_APP) && WINAPI_FAMILY == WINAPI_FAMILY_APP))
#if BOOST_PLAT_WINDOWS_DESKTOP
#error "BOOST_PLAT_WINDOWS_DESKTOP should not be available"
#endif
#if BOOST_PLAT_WINDOWS_PHONE
#error "BOOST_PLAT_WINDOWS_PHONE should not be available"
#endif
#if !BOOST_PLAT_WINDOWS_RUNTIME /* deprecated */
#error "BOOST_PLAT_WINDOWS_RUNTIME should be available"
#endif
#if BOOST_PLAT_WINDOWS_SERVER
#error "BOOST_PLAT_WINDOWS_SERVER should not be available"
#endif
#if !BOOST_PLAT_WINDOWS_STORE
#error "BOOST_PLAT_WINDOWS_STORE should be available"
#endif
#if BOOST_PLAT_WINDOWS_SYSTEM
#error "BOOST_PLAT_WINDOWS_SYSTEM should not be available"
#endif
#endif
#if defined(WINAPI_FAMILY_SYSTEM_APP) && WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM_APP
#if BOOST_PLAT_WINDOWS_DESKTOP
#error "BOOST_PLAT_WINDOWS_DESKTOP should not be available"
#endif
#if BOOST_PLAT_WINDOWS_PHONE
#error "BOOST_PLAT_WINDOWS_PHONE should not be available"
#endif
#if BOOST_PLAT_WINDOWS_RUNTIME /* deprecated */
#error "BOOST_PLAT_WINDOWS_RUNTIME should not be available"
#endif
#if BOOST_PLAT_WINDOWS_SERVER
#error "BOOST_PLAT_WINDOWS_SERVER should not be available"
#endif
#if BOOST_PLAT_WINDOWS_STORE
#error "BOOST_PLAT_WINDOWS_STORE should not be available"
#endif
#if !BOOST_PLAT_WINDOWS_SYSTEM
#error "BOOST_PLAT_WINDOWS_SYSTEM should be available"
#endif
#endif
#endif // !BOOST_PLAT_WINDOWS_UWP

62
test/tested_at.cpp Normal file
View File

@ -0,0 +1,62 @@
/*
Copyright Rene Rivera 2011-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)
*/
#include <boost/predef/version_number.h>
#include <boost/predef/other/workaround.h>
#include <exception>
#include <vector>
#include <string>
#include <iostream>
namespace
{
struct test_info
{
std::string value;
bool passed;
test_info(std::string const & v, bool p) : value(v), passed(p) {}
test_info(test_info const & o) : value(o.value), passed(o.passed) {}
};
std::vector<test_info> test_results;
}
#define PREDEF_CHECK(X) test_results.push_back(test_info(#X,(X)))
void test_BOOST_PREDEF_TESTED_AT()
{
PREDEF_CHECK(BOOST_PREDEF_TESTED_AT(BOOST_VERSION_NUMBER(15,15,15),0xF,0xF,0xF));
PREDEF_CHECK(BOOST_PREDEF_TESTED_AT(BOOST_VERSION_NUMBER(1,0,0),1,0,0));
PREDEF_CHECK(BOOST_PREDEF_TESTED_AT(BOOST_VERSION_NUMBER(0,9,0),1,0,0));
PREDEF_CHECK(BOOST_PREDEF_TESTED_AT(BOOST_VERSION_NUMBER(2,0,0),1,0,0));
PREDEF_CHECK(!BOOST_PREDEF_TESTED_AT(BOOST_VERSION_NUMBER_NOT_AVAILABLE,1,0,0));
}
int main()
{
test_BOOST_PREDEF_TESTED_AT();
unsigned fail_count = 0;
std::vector<test_info>::iterator i = test_results.begin();
std::vector<test_info>::iterator e = test_results.end();
for (; i != e; ++i)
{
std::cout
<< (i->passed ? "[passed]" : "[failed]")
<< " " << i->value
<< std::endl;
fail_count += i->passed ? 0 : 1;
}
std::cout
<< std::endl
<< "TOTAL: "
<< "passed " << (test_results.size()-fail_count) << ", "
<< "failed " << (fail_count) << ", "
<< "of " << (test_results.size())
<< std::endl;
return fail_count;
}

View File

@ -0,0 +1,18 @@
/*
Copyright Rene Rivera 2011-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)
*/
#include <boost/predef/version_number.h>
#define BOOST_DETECT_OUTDATED_WORKAROUNDS
#include <boost/predef/other/workaround.h>
int main()
{
#if BOOST_PREDEF_TESTED_AT(BOOST_VERSION_NUMBER(2,0,0),1,0,0)
return 1;
#else
return 0;
#endif
}

View File

@ -34,6 +34,27 @@ void test_BOOST_VERSION_NUMBER()
PREDEF_CHECK(BOOST_VERSION_NUMBER(100,99,99999) != 1009999999L);
PREDEF_CHECK(BOOST_VERSION_NUMBER(100,99,99999) == 9999999L);
PREDEF_CHECK(BOOST_VERSION_NUMBER(100,100,100000) == 0L);
PREDEF_CHECK(
BOOST_VERSION_NUMBER_MAJOR(BOOST_VERSION_NUMBER(0,0,0)) == 0);
PREDEF_CHECK(
BOOST_VERSION_NUMBER_MAJOR(BOOST_VERSION_NUMBER(3,3,3)) == 3);
PREDEF_CHECK(
BOOST_VERSION_NUMBER_MAJOR(BOOST_VERSION_NUMBER(99,99,99999)) == 99);
PREDEF_CHECK(
BOOST_VERSION_NUMBER_MINOR(BOOST_VERSION_NUMBER(0,0,0)) == 0);
PREDEF_CHECK(
BOOST_VERSION_NUMBER_MINOR(BOOST_VERSION_NUMBER(3,3,3)) == 3);
PREDEF_CHECK(
BOOST_VERSION_NUMBER_MINOR(BOOST_VERSION_NUMBER(99,99,99999)) == 99);
PREDEF_CHECK(
BOOST_VERSION_NUMBER_PATCH(BOOST_VERSION_NUMBER(0,0,0)) == 0);
PREDEF_CHECK(
BOOST_VERSION_NUMBER_PATCH(BOOST_VERSION_NUMBER(3,3,3)) == 3);
PREDEF_CHECK(
BOOST_VERSION_NUMBER_PATCH(BOOST_VERSION_NUMBER(99,99,99999)) == 99999);
}
int main()

62
test/workaround.cpp Normal file
View File

@ -0,0 +1,62 @@
/*
Copyright Rene Rivera 2011-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)
*/
#include <boost/predef/version_number.h>
#include <boost/predef/other/workaround.h>
#include <exception>
#include <vector>
#include <string>
#include <iostream>
namespace
{
struct test_info
{
std::string value;
bool passed;
test_info(std::string const & v, bool p) : value(v), passed(p) {}
test_info(test_info const & o) : value(o.value), passed(o.passed) {}
};
std::vector<test_info> test_results;
}
#define PREDEF_CHECK(X) test_results.push_back(test_info(#X,(X)))
void test_BOOST_PREDEF_WORKAROUND()
{
PREDEF_CHECK(BOOST_PREDEF_WORKAROUND(BOOST_VERSION_NUMBER(15,15,15),==,0xF,0xF,0xF));
PREDEF_CHECK(BOOST_PREDEF_WORKAROUND(BOOST_VERSION_NUMBER(0,9,0),<,1,0,0));
PREDEF_CHECK(BOOST_PREDEF_WORKAROUND(BOOST_VERSION_NUMBER(0,9,0),!=,1,0,0));
PREDEF_CHECK(BOOST_PREDEF_WORKAROUND(BOOST_VERSION_NUMBER_MIN,<,1,0,0));
PREDEF_CHECK(BOOST_PREDEF_WORKAROUND(BOOST_VERSION_NUMBER_MIN,>,0,0,0));
}
int main()
{
test_BOOST_PREDEF_WORKAROUND();
unsigned fail_count = 0;
std::vector<test_info>::iterator i = test_results.begin();
std::vector<test_info>::iterator e = test_results.end();
for (; i != e; ++i)
{
std::cout
<< (i->passed ? "[passed]" : "[failed]")
<< " " << i->value
<< std::endl;
fail_count += i->passed ? 0 : 1;
}
std::cout
<< std::endl
<< "TOTAL: "
<< "passed " << (test_results.size()-fail_count) << ", "
<< "failed " << (fail_count) << ", "
<< "of " << (test_results.size())
<< std::endl;
return fail_count;
}

View File

@ -0,0 +1,17 @@
/*
Copyright Rene Rivera 2011-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)
*/
#include <boost/predef/version_number.h>
#define BOOST_STRICT_CONFIG
#include <boost/predef/other/workaround.h>
int main()
{
#if BOOST_PREDEF_WORKAROUND(BOOST_VERSION_NUMBER_AVAILABLE,==,0,0,1)
fail();
#endif
return 0;
}