Compare commits

..

99 Commits

Author SHA1 Message Date
9a6a86efc8 Merge pull request #17 from grafikrobot/modular
Add support for modular build structure.
2025-04-15 18:33:22 +01:00
82e8219497 Set a less likely to comflict cmake build dir. 2025-04-09 21:48:37 -05:00
b78ae8e44c Set testing to special value to get ignored tests. 2025-04-09 21:23:50 -05:00
4df5eb93a3 Set the correct cmake dir to work in. 2025-04-09 21:02:58 -05:00
acbd163624 Tell ctest to ignore not having tests. 2025-04-09 20:31:48 -05:00
28277d9854 Need to condition cmake tests on having tests. 2025-04-09 18:54:18 -05:00
91ddf94f3c CMake 3.5 fails to run. 2025-04-09 18:43:27 -05:00
223997c70c Fix cmake build target, test minor msvc version, and specify the correct min cmake. 2025-04-09 18:32:25 -05:00
e74f1d4f6e Workaround not having cmake tests. 2025-04-09 18:24:10 -05:00
bccba72bff Fix library name in GHA CI. 2025-04-07 09:07:01 -05:00
140907f843 Replace GHA CI with simpler working one based on alandefreitas/cpp-actions utilities. 2025-04-07 08:58:35 -05:00
aa4e60bd88 Move inter-lib dependencies to a project variable and into the build targets. 2024-07-23 22:34:23 -05:00
54412f7937 Update copyright dates. 2024-07-20 22:52:04 -05:00
c65f0cd147 Change all <source> references to <library>. 2024-07-20 21:26:14 -05:00
18ab3e9250 Bump B2 require to 5.2 2024-06-14 11:33:56 -05:00
13690ce9b5 Add requires-b2 check to top-level build file. 2024-05-05 09:00:01 -05:00
8df439fa03 Switch to library requirements instead of source. As source puts extra source in install targets. 2024-03-29 21:15:59 -05:00
9519349ab9 Make the library modular usable. 2024-03-11 08:38:17 -05:00
45eec41c29 Merge pull request #15 from sdarwin/githubactions
GitHub Actions config
2022-03-08 09:35:50 +00:00
a1abfec1ef Update GitHub Actions CI file 2022-03-07 20:16:18 +00:00
ba72d3340f Merge pull request #16 from igaztanaga/patch-1
Small fix for Wsign-conversion
2021-10-13 16:03:23 +01:00
803b983da7 Small fix for Wsign-conversion 2021-10-13 15:10:36 +02:00
392199f6b1 Fix CMake tests in .travis.yml 2021-06-10 16:34:02 +03:00
482e81cddd Update CMakeLists.txt 2021-06-10 02:06:15 +03:00
6ec69e506c Add GitHub Actions config [ci skip] 2021-03-04 18:23:07 +00:00
66db74297a Merge pull request #13 from eldiener/develop
[skip ci] Add "cxxstd" json field
2021-01-21 18:01:26 +00:00
e9ab97859d [skip ci] Add "cxxstd" json field. The "cxxstd" json field is being added to each Boost library's meta json information for libraries in order to specify the minumum C++ standard compilation level. The value of this field matches one of the values for 'cxxstd' in Boost.Build. The purpose of doing this is to provide information for the Boost website documentation for each library which will specify the minimum C++ standard compilation that an end-user must employ in order to use the particular library. This will aid end-users who want to know if they can successfully use a Boost library based on their C++ compiler's compilation level, without having to search the library's documentation to find this out. 2021-01-21 11:09:31 -05:00
073c482606 Merge pull request #11 from eldiener/develop
Changes for Embarcadero C++ clang-based compilers, targeting Boost 1.74. Use BOOST_BORLANDC for bcc32 compiler
2020-05-06 17:34:09 +01:00
8ab850a342 Use BOOST_BORLANDC for bcc32 compiler 2020-03-21 22:24:50 -04:00
9102d74933 Merge branch 'develop' into feature/add-cmake-tests 2020-01-06 20:11:01 +02:00
ba846a3091 Update .travis.yml 2020-01-06 17:22:07 +02:00
0277552ae2 Merge branch 'develop' 2020-01-06 15:45:37 +02:00
317f01fc58 Merge branch 'develop' into feature/add-cmake-tests 2019-12-29 20:06:15 +02:00
b57860c33f Use -DBOOST_INCLUDE_LIBRARIES=static_assert 2019-12-29 19:34:08 +02:00
ca94dbbc1a Use Boost_VERBOSE instead of Boost_DEBUG 2019-12-29 18:52:09 +02:00
0a775cf1c5 Untabify 2019-12-29 18:47:06 +02:00
eac11c5e50 Merge pull request #9 from boostorg/pr/add-cmake-install
Add CMake install support (needed by type_traits)
2019-12-28 09:49:16 -08:00
944702b862 Add comment 2019-12-27 06:04:16 +02:00
1aaabeb02b Fix indentation 2019-12-27 04:28:29 +02:00
9064caf95f Merge branch 'pr/add-cmake-install' into feature/add-cmake-tests 2019-12-27 04:24:37 +02:00
f970afff9d Disable installation without the superproject; add comments 2019-12-27 04:22:53 +02:00
ad48daf3b2 Change LIBRARIES to LINK_LIBRARIES 2019-12-27 04:20:36 +02:00
c6b558f1f2 Fix branch handling; add -j3 to b2 test 2019-12-27 03:32:34 +02:00
00724b8429 Fix .travis.yml typos; enable feature/* testing 2019-12-27 03:29:28 +02:00
00a741184c Add cmake_install_test, cmake_subdir_test 2019-12-26 19:05:07 +02:00
f000d27cb2 Add CMake testing job to Travis 2019-12-26 19:00:25 +02:00
a8597c46d5 Add CMake testing support 2019-12-26 18:58:11 +02:00
609a5c0cd1 Add CMake install support (needed by type_traits) 2019-12-26 17:16:45 +02:00
233ef6bedd Merge branch 'develop' 2019-02-27 18:28:11 +00:00
cb6d8fe37d Merge pull request #7 from LukeCz/patch-1
Simplified boolean expression
2019-02-27 18:07:02 +00:00
23ee2b94b5 Simplified boolean expression 2019-01-21 16:50:00 -06:00
cffc57ffba Merge branch 'develop' 2019-01-16 18:19:43 +00:00
488af9cf1b add README.md
[CI SKIP]
2018-10-15 18:12:54 +01:00
a2c81d05e5 Merge pull request #6 from Mike-Devel/min_cmake
[CMake] Generate cmake target that other libraries can use
2018-10-06 18:32:21 +01:00
feaaf3d14a Merge pull request #5 from boostorg/develop
Merge file structure reorganisation from develop.
2018-10-06 18:31:20 +01:00
68e4213583 [CMake] Generate cmake target that other libraries can use
... to express their dependency on this library and retrieve any
configuration information such as the include directory, binary
to link to (if any), transitive dependencies, necessary compiler
options or the required c++ standards level.
2018-10-01 10:41:48 +02:00
b91e4747ce Move header dependencies around -
to try to fix a clang-3.x issue with ::gets not found when compiling std lib header.
2018-09-25 18:25:26 +01:00
62c6cdcd46 Merge branch 'develop' of https://github.com/boostorg/static_assert into develop 2017-05-16 18:17:27 +01:00
662ecd3d9f Add .travis.yml 2017-05-16 18:17:17 +01:00
afe9e9d786 Add, and update, documentation build targets. 2016-10-10 11:39:53 -05:00
c2f58a187a Add, and update, documentation build targets. 2016-10-07 23:07:36 -05:00
0d27f7bcf6 temporarily fix up paths until we can delete this file. 2016-06-14 18:43:24 +01:00
d0967cbf65 Fix doc directory paths. 2016-06-14 18:39:54 +01:00
3e8b6f5322 Move files into standard directory structure. 2016-06-14 18:37:24 +01:00
87f3be4a8f Merge pull request #3 from morinmorin/fix/unused_attribute
Use Boost.Config's BOOST_ATTRIBUTE_UNUSED
2015-09-10 19:21:39 +01:00
46e0bd762c Use Boost.Config's BOOST_ATTRIBUTE_UNUSED. 2015-09-11 02:08:43 +09:00
8cd6ce7829 Merge branch 'develop' 2015-09-10 10:17:52 +01:00
bb3cc11f09 Merge pull request #2 from mgaunard/clang_warning_fix
Avoid unused typedef warnings with clang
2014-10-02 18:28:18 +01:00
15c38db1d2 enable __attribute__((unused)) to avoid unused typedef warnings with all gcc-like variants starting with gcc 4.0. Avoids generating the warning with Clang among others. 2014-09-29 14:55:39 +02:00
41f9c4b99c Merge pull request #1 from danieljames/metadata
Create metadata file.
2014-08-18 17:37:23 +01:00
d2f57474a7 Add metadata file. 2014-08-18 15:11:03 +01:00
29a7d491b8 Create merge base for git. 2014-04-06 14:27:40 +01:00
4aab0b78c3 If we have a static_assert we should use it, even if there are no variadic macros. 2013-12-11 18:57:43 +00:00
d215ee5c9c StaticAssert: Remove obsolete MSVC version check.
[SVN r86035]
2013-09-30 00:20:43 +00:00
f2b7643595 Merge static_assert fix from Trunk.
Fixes #8644.

[SVN r84858]
2013-06-21 12:27:49 +00:00
bc29f7ab62 Apply patch from 8644.
Fixes #8644.

[SVN r84713]
2013-06-09 12:02:07 +00:00
41521344af Merge patches from Trunk.
[SVN r83496]
2013-03-19 18:10:39 +00:00
5233df9b9e Merge changes from Trunk.
[SVN r81828]
2012-12-10 17:28:53 +00:00
7d9fdaee13 Merge documentation and property change fixes from Trunk.
[SVN r71486]
2011-04-25 17:27:05 +00:00
06dedcd232 Merge trunk BOOST_ASSERT_MSG additions
[SVN r68912]
2011-02-15 14:54:16 +00:00
6f1d2476fa Change PDF URL to SF download page.
[SVN r67530]
2011-01-01 12:32:32 +00:00
e27a27c9f3 Merge documentation fixes.
* Use `doc/src/*.css` instead of `doc/html/*.css`.
* Remove wiki and people directories.
* Some documentation fixes.
* Left out `minimal.css` changes and boostbook changes because of clashes.


[SVN r63347]
2010-06-26 12:30:09 +00:00
12f96b5653 Merge warning fixes from Trunk.
[SVN r58217]
2009-12-07 13:23:38 +00:00
23d7abde22 rm cmake from the release branch before it goes out broken. Policy dictates that you never commit to release, you commit to trunk and merge to release.
[SVN r56941]
2009-10-17 01:10:45 +00:00
9e4d6dfeff Add basic copyright/license to keep cmake out of the inspection report
[SVN r55095]
2009-07-22 21:51:01 +00:00
2637358ba9 Merge PDF build changes from Trunk.
[SVN r51417]
2009-02-23 18:39:32 +00:00
9e411076c6 merge of cmake build files from trunk per beman
[SVN r50756]
2009-01-24 18:57:20 +00:00
3488b2bdf2 Merge some documentation updates and fixes from trunk.
Merged revisions 47364,47402-47403 via svnmerge from 
https://svn.boost.org/svn/boost/trunk

........
  r47364 | danieljames | 2008-07-12 20:32:15 +0100 (Sat, 12 Jul 2008) | 1 line
  
  Fix a PDF link that I missed before. (in static assert)
........
  r47402 | danieljames | 2008-07-13 20:42:56 +0100 (Sun, 13 Jul 2008) | 2 lines
  
  Note that emplace is only available on a few compilers.
........
  r47403 | danieljames | 2008-07-13 21:07:45 +0100 (Sun, 13 Jul 2008) | 2 lines
  
  Update the implementation details.
........


[SVN r47405]
2008-07-13 21:08:33 +00:00
28e09a3cca Merge changes from Trunk.
[SVN r47306]
2008-07-11 10:49:31 +00:00
481c2efbac Merge minor change from Trunk.
[SVN r43358]
2008-02-21 16:51:41 +00:00
3b702727b9 Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41370]
2007-11-25 18:38:02 +00:00
f298ed51a9 Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41369]
2007-11-25 18:07:19 +00:00
851fd2622e Starting point for releases
[SVN r39706]
2007-10-05 14:25:06 +00:00
720fb456d5 This commit was manufactured by cvs2svn to create tag
'Version_1_34_1'.

[SVN r38286]
2007-07-24 19:28:14 +00:00
2fa11699bf Added links to PDF docs.
[SVN r37653]
2007-05-09 17:20:56 +00:00
69dbf6f12d Remove obsolete Boost.Build v1 files.
[SVN r35880]
2006-11-06 17:10:46 +00:00
66dd3d2595 Added trivial docs change, based on user suggestion, and brought example code into synch.
[SVN r34874]
2006-08-11 18:14:13 +00:00
7a0a3fbf32 Added license info.
[SVN r34585]
2006-07-17 10:49:22 +00:00
c5de8ff789 This commit was manufactured by cvs2svn to create branch 'RC_1_34_0'.
[SVN r33417]
2006-03-21 02:26:31 +00:00
32 changed files with 728 additions and 69 deletions

152
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,152 @@
name: GitHub Actions CI
on:
pull_request:
push:
branches:
- master
- develop
- githubactions*
- feature/**
- fix/**
- pr/**
jobs:
cpp-matrix:
runs-on: ubuntu-latest
name: Generate Test Matrix
outputs:
matrix: ${{ steps.cpp-matrix.outputs.matrix }}
steps:
- name: Generate Test Matrix
uses: alandefreitas/cpp-actions/cpp-matrix@master
id: cpp-matrix
with:
extra-values: |
boost-lib: static_assert
scan-dirs: test
compilers: |
gcc >= 4.8
clang >= 3.5
msvc >= 14.0
apple-clang *
mingw *
clang-cl *
subrange-policy: |
msvc: one-per-minor
standards: ">=11"
latest-factors: |
gcc Asan TSan UBSan
clang BoundsSan IntSan
factors: |
gcc Shared
msvc Shared x86
mingw Shared
trace-commands: true
build:
needs: cpp-matrix
strategy:
fail-fast: false
matrix:
include: ${{ fromJSON(needs.cpp-matrix.outputs.matrix) }}
# use matrix entries
name: ${{ matrix.name }}
runs-on: ${{ matrix.runs-on }}
container: ${{ matrix.container }}
steps:
# GitHub Actions no longer support older containers.
# The workaround is to install our own Node.js for the actions.
- name: Patch Node
# The containers that need Node.js 20 will have volumes set up so that
# the Node.js 20 installation can go there.
if: ${{ matrix.container.volumes }}
run: |
set -x
apt-get update
apt-get install -y curl xz-utils
curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
ldd /__e/node20/bin/node
- name: Setup C++ Compiler
uses: alandefreitas/cpp-actions/setup-cpp@master
id: setup-cpp
with:
compiler: ${{ matrix.compiler }}
version: ${{ matrix.version }}
- name: Install Packages
if: matrix.install != ''
uses: alandefreitas/cpp-actions/package-install@master
id: package-install
with:
apt-get: ${{ matrix.install }}
- name: Clone Library
uses: actions/checkout@v4
- name: Clone Boost
uses: alandefreitas/cpp-actions/boost-clone@master
id: boost-clone
with:
branch: ${{ (github.ref_name == 'master' && github.ref_name) || 'develop' }}
boost-dir: ../boost-root
scan-modules-dir: .
scan-modules-ignore: ${{ matrix.boost-lib }}
modules-scan-paths: ${{ matrix.scan-dirs }}
cache: false
- name: Copy Library
shell: bash
run: |
workspace_root=$(echo "$GITHUB_WORKSPACE" | sed 's/\\/\//g')
cd ../boost-root
rm -rf "libs/${{ matrix.boost-lib }}"
mkdir "libs/${{ matrix.boost-lib }}"
cp -r "$workspace_root"/* "libs/${{ matrix.boost-lib }}"
- name: B2 Workflow
uses: alandefreitas/cpp-actions/b2-workflow@master
with:
source-dir: ${{ steps.boost-clone.outputs.boost-dir }}
modules: ${{ matrix.boost-lib }}
toolset: ${{ matrix.b2-toolset }}
build-variant: ${{ matrix.build-type }}
cxx: ${{ steps.setup-cpp.outputs.cxx || '' }}
cxxstd: ${{ matrix.cxxstd }}
address-model: ${{ matrix.address-model }}
asan: ${{ matrix.asan }}
ubsan: ${{ matrix.ubsan }}
tsan: ${{ matrix.tsan }}
shared: ${{ matrix.shared }}
abbreviate-paths: false
hash: true
debug-configuration: true
trace-commands: true
- name: CMake Workflow
uses: alandefreitas/cpp-actions/cmake-workflow@master
with:
source-dir: ${{ steps.boost-clone.outputs.boost-dir }}/libs/${{ matrix.boost-lib }}
build-dir: _build_dir_
run-tests: ignore
install: true
cmake-version: ">=3.31"
generator: ${{ matrix.generator }}
generator-toolset: ${{ matrix.generator-toolset }}
toolchain: ${{ steps.package-install.outputs.vcpkg-toolchain }}
build-type: ${{ matrix.build-type }}
install-prefix: .local
cxxstd: ${{ matrix.cxxstd }}
cc: ${{ steps.setup-cpp.outputs.cc }}
ccflags: ${{ matrix.ccflags }}
cxx: ${{ steps.setup-cpp.outputs.cxx }}
cxxflags: ${{ matrix.cxxflags }}
shared: ${{ matrix.shared }}
extra-args:
"${{ ( !matrix.no-deps && format('-D BOOST_SRC_DIR=\"{0}\"', steps.boost-clone.outputs.boost-dir)\
\ ) || '' }} \n${{ ( matrix.no-deps && '-D CPP_ACTIONS_NO_DEPS=ON' ) || '' }}\n"
export-compile-commands: ${{ matrix.time-trace }}
trace-commands: true

327
.travis.yml Normal file
View File

@ -0,0 +1,327 @@
# Copyright 2016-2019 Peter Dimov
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
language: cpp
dist: xenial
branches:
only:
- master
- develop
- /feature\/.*/
env:
matrix:
- BOGUS_JOB=true
matrix:
exclude:
- env: BOGUS_JOB=true
include:
- os: linux
compiler: g++
env: TOOLSET=gcc COMPILER=g++ CXXSTD=03,11
- os: linux
compiler: g++-4.4
env: TOOLSET=gcc COMPILER=g++-4.4 CXXSTD=98
addons:
apt:
packages:
- g++-4.4
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-4.6
env: TOOLSET=gcc COMPILER=g++-4.6 CXXSTD=03,0x
addons:
apt:
packages:
- g++-4.6
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-4.7
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11
addons:
apt:
packages:
- g++-4.7
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-4.8
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11
addons:
apt:
packages:
- g++-4.8
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-4.9
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11
addons:
apt:
packages:
- g++-4.9
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-5
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- g++-5
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-6
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- g++-6
sources:
- ubuntu-toolchain-r-test
- os: linux
dist: trusty
compiler: g++-7
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17
addons:
apt:
packages:
- g++-7
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-8
env: TOOLSET=gcc COMPILER=g++-8 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- g++-8
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-9
env: TOOLSET=gcc COMPILER=g++-9 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- g++-9
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11
- os: linux
dist: trusty
compiler: /usr/bin/clang++
env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11
addons:
apt:
packages:
- clang-3.3
- os: linux
dist: trusty
compiler: /usr/bin/clang++
env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11
addons:
apt:
packages:
- clang-3.4
- os: linux
compiler: clang++-3.5
env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.5
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-3.6
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.6
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-3.7
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.7
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-3.8
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.8
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-3.9
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.9
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-4.0
env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-4.0
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-5.0
env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-5.0
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-6.0
env: TOOLSET=clang COMPILER=clang++-6.0 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- clang-6.0
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-7
env: TOOLSET=clang COMPILER=clang++-7 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- clang-7
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-xenial-7
- os: linux
compiler: clang++-8
env: TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- clang-8
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-xenial-8
- os: linux
compiler: clang++-9
env: TOOLSET=clang COMPILER=clang++-9 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- clang-9
sources:
- ubuntu-toolchain-r-test
- sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
- os: linux
dist: trusty
compiler: clang++-libc++
env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z
addons:
apt:
packages:
- libc++-dev
- os: linux
env: CMAKE=1
script:
- mkdir __build__ && cd __build__
- cmake -DBUILD_TESTING=ON -DBOOST_INCLUDE_LIBRARIES=static_assert ..
- cmake --build . --target tests
- ctest --output-on-failure
- os: linux
env: CMAKE_SUBDIR=1
install:
- BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
- git clone -b $BOOST_BRANCH https://github.com/boostorg/config.git ../config
script:
- cd test/cmake_subdir_test && mkdir __build__ && cd __build__
- cmake ..
- cmake --build .
- cmake --build . --target check
- os: linux
env: CMAKE_INSTALL=1
script:
- pip install --user cmake
- mkdir __build__ && cd __build__
- cmake -DBOOST_INCLUDE_LIBRARIES=static_assert -DCMAKE_INSTALL_PREFIX=~/.local ..
- cmake --build . --target install
- cd ../libs/static_assert/test/cmake_install_test && mkdir __build__ && cd __build__
- cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
- cmake --build .
- cmake --build . --target check
- os: osx
compiler: clang++
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
install:
- BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
- cd ..
- git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
- cd boost-root
- git submodule update --init tools/boostdep
- cp -r $TRAVIS_BUILD_DIR/* libs/static_assert
- python tools/boostdep/depinst/depinst.py static_assert
- ./bootstrap.sh
- ./b2 headers
script:
- |-
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
- ./b2 -j 3 libs/static_assert/test toolset=$TOOLSET cxxstd=$CXXSTD
notifications:
email:
on_success: always

28
CMakeLists.txt Normal file
View File

@ -0,0 +1,28 @@
# Copyright 2018 Mike Dev
# Copyright 2019 Peter Dimov
# 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
# We support CMake 3.5, but prefer 3.16 policies and behavior
cmake_minimum_required(VERSION 3.5...3.16)
project(boost_static_assert VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
add_library(boost_static_assert INTERFACE)
add_library(Boost::static_assert ALIAS boost_static_assert)
target_include_directories(boost_static_assert INTERFACE include)
target_link_libraries(boost_static_assert
INTERFACE
Boost::config
)
# BUILD_TESTING is the standard CTest variable that enables testing
if(BUILD_TESTING)
add_subdirectory(test)
add_subdirectory(example)
endif()

View File

@ -1,31 +0,0 @@
# copyright John Maddock 2003
# 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)
# bring in the rules for testing
import testing ;
test-suite static_assert :
[ run static_assert_test.cpp ]
# [ run static_assert_example_1.cpp ]
[ run static_assert_example_2.cpp ]
[ run static_assert_example_3.cpp ]
[ compile-fail static_assert_test_fail_1.cpp ]
[ compile-fail static_assert_test_fail_2.cpp ]
[ compile-fail static_assert_test_fail_3.cpp ]
[ compile-fail static_assert_test_fail_4.cpp ]
[ compile-fail static_assert_test_fail_5.cpp ]
[ compile-fail static_assert_test_fail_6.cpp ]
[ compile-fail static_assert_test_fail_7.cpp ]
[ compile-fail static_assert_test_fail_8.cpp ]
[ compile-fail static_assert_test_fail_9.cpp ]
[ compile-fail static_assert_test_fail_10.cpp ]
;

36
README.md Normal file
View File

@ -0,0 +1,36 @@
Boost StaticAssert Library
============================
The Boost StaticAssert library provides static assertions for C++, this library is the ancestor to C++ native static_assert's and
can be used on older compilers which don't have that feature.
The full documentation is available on [boost.org](http://www.boost.org/doc/libs/release/libs/static_assert).
## Support, bugs and feature requests ##
Bugs and feature requests can be reported through the [Gitub issue tracker](https://github.com/boostorg/static_assert/issues)
(see [open issues](https://github.com/boostorg/static_assert/issues) and
[closed issues](https://github.com/boostorg/static_assert/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aclosed)).
You can submit your changes through a [pull request](https://github.com/boostorg/static_assert/pulls).
There is no mailing-list specific to Boost StaticAssert, although you can use the general-purpose Boost [mailing-list](http://lists.boost.org/mailman/listinfo.cgi/boost-users) using the tag [static_assert].
## Development ##
Clone the whole boost project, which includes the individual Boost projects as submodules ([see boost+git doc](https://github.com/boostorg/boost/wiki/Getting-Started)):
git clone https://github.com/boostorg/boost
cd boost
git submodule update --init
The Boost StaticAssert Library is located in `libs/static_assert/`.
### Running tests ###
First, make sure you are in `libs/static_assert/test`.
You can either run all the tests listed in `Jamfile.v2` or run a single test:
../../../b2 <- run all tests
../../../b2 static_assert_test <- single test

23
build.jam Normal file
View File

@ -0,0 +1,23 @@
# Copyright René Ferdinand Rivera Morell 2023-2024
# 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)
require-b2 5.2 ;
constant boost_dependencies :
/boost/config//boost_config ;
project /boost/static_assert
: common-requirements
<include>include
;
explicit
[ alias boost_static_assert : : : : <library>$(boost_dependencies) ]
[ alias all : boost_static_assert example test ]
;
call-if : boost-library static_assert
;

View File

@ -37,3 +37,13 @@ boostbook standalone
<format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
;
###############################################################################
alias boostdoc
: static_assert
:
:
: ;
explicit boostdoc ;
alias boostrelease ;
explicit boostrelease ;

View File

@ -222,19 +222,19 @@ working at namespace, function, and class scope outweighed the ugliness of a mac
[table Test programs provided with static_assert
[[Test Program][Expected to Compile][Description]]
[[[@../../libs/static_assert/static_assert_test.cpp static_assert_test.cpp]] [Yes] [Illustrates usage, and should always compile, really just tests compiler compatibility.]]
[[[@../../libs/static_assert/static_assert_example_1.cpp static_assert_example_1.cpp]] [Platform dependent.] [Namespace scope test program, may compile depending upon the platform. ]]
[[[@../../libs/static_assert/static_assert_example_2.cpp static_assert_example_2.cpp]] [Yes] [Function scope test program. ]]
[[[@../../libs/static_assert/static_assert_example_3.cpp static_assert_example_3.cpp]] [Yes] [Class scope test program. ]]
[[[@../../libs/static_assert/static_assert_test_fail_1.cpp static_assert_test_fail_1.cpp]] [No] [Illustrates failure at namespace scope. ]]
[[[@../../libs/static_assert/static_assert_test_fail_2.cpp static_assert_test_fail_2.cpp]] [No] [Illustrates failure at non-template function scope. ]]
[[[@../../libs/static_assert/static_assert_test_fail_3.cpp static_assert_test_fail_3.cpp]] [No] [Illustrates failure at non-template class scope. ]]
[[[@../../libs/static_assert/static_assert_test_fail_4.cpp static_assert_test_fail_4.cpp]] [No] [Illustrates failure at non-template class scope. ]]
[[[@../../libs/static_assert/static_assert_test_fail_5.cpp static_assert_test_fail_5.cpp]] [No] [Illustrates failure at template class scope. ]]
[[[@../../libs/static_assert/static_assert_test_fail_6.cpp static_assert_test_fail_6.cpp]] [No] [Illustrates failure at template class member function scope. ]]
[[[@../../libs/static_assert/static_assert_test_fail_7.cpp static_assert_test_fail_7.cpp]] [No] [Illustrates failure of class scope example. ]]
[[[@../../libs/static_assert/static_assert_test_fail_8.cpp static_assert_test_fail_8.cpp]] [No] [Illustrates failure of function scope example. ]]
[[[@../../libs/static_assert/static_assert_test_fail_9.cpp static_assert_test_fail_9.cpp]] [No] [Illustrates failure of function scope example (part 2). ]]
[[[@../../libs/static_assert/example/static_assert_example_1.cpp static_assert_example_1.cpp]] [Platform dependent.] [Namespace scope test program, may compile depending upon the platform. ]]
[[[@../../libs/static_assert/example/static_assert_example_2.cpp static_assert_example_2.cpp]] [Yes] [Function scope test program. ]]
[[[@../../libs/static_assert/example/static_assert_example_3.cpp static_assert_example_3.cpp]] [Yes] [Class scope test program. ]]
[[[@../../libs/static_assert/test/static_assert_test.cpp static_assert_test.cpp]] [Yes] [Illustrates usage, and should always compile, really just tests compiler compatibility.]]
[[[@../../libs/static_assert/test/static_assert_test_fail_1.cpp static_assert_test_fail_1.cpp]] [No] [Illustrates failure at namespace scope. ]]
[[[@../../libs/static_assert/test/static_assert_test_fail_2.cpp static_assert_test_fail_2.cpp]] [No] [Illustrates failure at non-template function scope. ]]
[[[@../../libs/static_assert/test/static_assert_test_fail_3.cpp static_assert_test_fail_3.cpp]] [No] [Illustrates failure at non-template class scope. ]]
[[[@../../libs/static_assert/test/static_assert_test_fail_4.cpp static_assert_test_fail_4.cpp]] [No] [Illustrates failure at non-template class scope. ]]
[[[@../../libs/static_assert/test/static_assert_test_fail_5.cpp static_assert_test_fail_5.cpp]] [No] [Illustrates failure at template class scope. ]]
[[[@../../libs/static_assert/test/static_assert_test_fail_6.cpp static_assert_test_fail_6.cpp]] [No] [Illustrates failure at template class member function scope. ]]
[[[@../../libs/static_assert/test/static_assert_test_fail_7.cpp static_assert_test_fail_7.cpp]] [No] [Illustrates failure of class scope example. ]]
[[[@../../libs/static_assert/test/static_assert_test_fail_8.cpp static_assert_test_fail_8.cpp]] [No] [Illustrates failure of function scope example. ]]
[[[@../../libs/static_assert/test/static_assert_test_fail_9.cpp static_assert_test_fail_9.cpp]] [No] [Illustrates failure of function scope example (part 2). ]]
]

11
example/CMakeLists.txt Normal file
View File

@ -0,0 +1,11 @@
# Copyright 2018, 2019 Peter Dimov
# 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(BoostTestJamfile OPTIONAL RESULT_VARIABLE HAVE_BOOST_TEST)
if(HAVE_BOOST_TEST)
boost_test_jamfile(FILE Jamfile.v2 LINK_LIBRARIES Boost::static_assert Boost::type_traits)
endif()

15
example/Jamfile.v2 Normal file
View File

@ -0,0 +1,15 @@
# copyright John Maddock 2003
# 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)
# bring in the rules for testing
import testing ;
project : requirements
<library>/boost/type_traits//boost_type_traits
;
#run static_assert_example_1.cpp ;
run static_assert_example_2.cpp ;
run static_assert_example_3.cpp ;

View File

@ -5,11 +5,11 @@
// See http://www.boost.org for most recent version including documentation.
#include <boost/static_assert.hpp>
#include <boost/type_traits.hpp>
#include <iterator>
#include <list>
#include <deque>
#include <boost/static_assert.hpp>
#include <boost/type_traits.hpp>
template <class RandomAccessIterator >
RandomAccessIterator foo(RandomAccessIterator from, RandomAccessIterator /*to*/)

View File

@ -16,6 +16,7 @@
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
#include <cstddef> //for std::size_t
#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__)
//
@ -30,13 +31,13 @@
# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
# define BOOST_STATIC_ASSERT_MSG( ... ) static_assert(__VA_ARGS__)
# else
# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
# define BOOST_STATIC_ASSERT_MSG( B, Msg ) static_assert( B, Msg )
# endif
#else
# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
#endif
#ifdef __BORLANDC__
#ifdef BOOST_BORLANDC
//
// workaround for buggy integral-constant expression support:
#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS
@ -53,9 +54,9 @@
//
#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)))
# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) ((__VA_ARGS__) == 0 ? false : true)
# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) ((__VA_ARGS__) != 0)
# else
# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) == 0 ? false : true)
# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) != 0)
# endif
#else
# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
@ -64,14 +65,6 @@
# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
# endif
#endif
//
// If the compiler warns about unused typedefs then enable this:
//
#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
# define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
#else
# define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
#endif
#ifndef BOOST_NO_CXX11_STATIC_ASSERT
# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
@ -89,7 +82,7 @@ template <bool x> struct STATIC_ASSERTION_FAILURE;
template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
// HP aCC cannot deal with missing names for template value parameters
template<int x> struct static_assert_test{};
template<std::size_t x> struct static_assert_test{};
}
@ -117,14 +110,7 @@ template<int x> struct static_assert_test{};
//
#if !defined(BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS)
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
// __LINE__ macro broken when -ZI is used see Q199057
// fortunately MSVC ignores duplicate typedef's.
#define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)\
> boost_static_assert_typedef_
#elif defined(BOOST_MSVC) && defined(BOOST_NO_CXX11_VARIADIC_MACROS)
#if defined(BOOST_MSVC) && defined(BOOST_NO_CXX11_VARIADIC_MACROS)
#define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST ( B ) >)>\
@ -167,12 +153,12 @@ template<int x> struct static_assert_test{};
# define BOOST_STATIC_ASSERT( ... ) \
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\
BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED
# else
# define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED
# endif
#endif

17
meta/libraries.json Normal file
View File

@ -0,0 +1,17 @@
{
"key": "static_assert",
"name": "Static Assert",
"authors": [
"John Maddock"
],
"description": "Static assertions (compile time assertions).",
"category": [
"Correctness",
"Generic",
"Metaprogramming"
],
"maintainers": [
"John Maddock <john -at- johnmaddock.co.uk>"
],
"cxxstd": "03"
}

11
test/CMakeLists.txt Normal file
View File

@ -0,0 +1,11 @@
# Copyright 2018, 2019 Peter Dimov
# 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(BoostTestJamfile OPTIONAL RESULT_VARIABLE HAVE_BOOST_TEST)
if(HAVE_BOOST_TEST)
boost_test_jamfile(FILE Jamfile.v2 LINK_LIBRARIES Boost::static_assert)
endif()

25
test/Jamfile.v2 Normal file
View File

@ -0,0 +1,25 @@
# copyright John Maddock 2003
# 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)
# bring in the rules for testing
import testing ;
project : requirements
<library>/boost/type_traits//boost_type_traits
;
run static_assert_test.cpp ;
compile-fail static_assert_test_fail_1.cpp ;
compile-fail static_assert_test_fail_2.cpp ;
compile-fail static_assert_test_fail_3.cpp ;
compile-fail static_assert_test_fail_4.cpp ;
compile-fail static_assert_test_fail_5.cpp ;
compile-fail static_assert_test_fail_6.cpp ;
compile-fail static_assert_test_fail_7.cpp ;
compile-fail static_assert_test_fail_8.cpp ;
compile-fail static_assert_test_fail_9.cpp ;
compile-fail static_assert_test_fail_10.cpp ;
build-project ../example ;

View File

@ -0,0 +1,17 @@
# Copyright 2018, 2019 Peter Dimov
# 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
cmake_minimum_required(VERSION 3.5...3.16)
project(cmake_install_test LANGUAGES CXX)
find_package(boost_static_assert REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main Boost::static_assert)
enable_testing()
add_test(NAME main COMMAND main)
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $<CONFIG>)

View File

@ -0,0 +1,7 @@
#include <boost/static_assert.hpp>
int main()
{
int const x = 5;
BOOST_STATIC_ASSERT( x > 4 );
}

View File

@ -0,0 +1,18 @@
# Copyright 2018, 2019 Peter Dimov
# 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
cmake_minimum_required(VERSION 3.5...3.16)
project(cmake_subdir_test LANGUAGES CXX)
add_subdirectory(../../../static_assert boostorg/static_assert)
add_subdirectory(../../../config boostorg/config)
add_executable(main main.cpp)
target_link_libraries(main Boost::static_assert)
enable_testing()
add_test(NAME main COMMAND main)
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $<CONFIG>)

View File

@ -0,0 +1,7 @@
#include <boost/static_assert.hpp>
int main()
{
int const x = 5;
BOOST_STATIC_ASSERT( x > 4 );
}