Compare commits

...

20 Commits

Author SHA1 Message Date
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
10 changed files with 188 additions and 61 deletions

View File

@ -1,71 +1,98 @@
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=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=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.0
os: osx
osx_image: xcode7.1
- env: TOOLSET=xcode-7.2
os: osx
osx_image: xcode7.2
osx_image: xcode8
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,10 +1,29 @@
# 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
@ -21,22 +40,33 @@ environment:
- TOOLSET: vs-2015
platform: 64
# 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
# We cache the boost repo, which is cleaned before caching.
# This saves some time as cloning the git submodules fresh
# takes a few minutes on Windows.
cache:
- C:\projects\boostorg\boost -> appveyor.yml

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

View File

@ -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,14 @@ Version number available as major, minor, and patch.
#if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || \
defined(__ECC)
# 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

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

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