Compare commits

...

26 Commits

Author SHA1 Message Date
a2a5010e28 Update from hash_predef. 2025-02-03 08:30:35 -06:00
d64649d703 Add support for Tiny C Compiler (#138)
Adds support for detecting TCC by checking for __TINYC__ macro.
TCC pre-defines environment-specific macros similar to the ones
used by GCC and Clang so the rest of library works out of the box.
2025-02-03 06:29:44 -06:00
6f2bd13716 Update from hash_predef. 2025-02-02 23:07:45 -06:00
0727fa7ce3 Update from hash_predef, version 1.15.1. 2025-01-16 07:02:40 -06:00
e120d2e8f5 Add support for modular build structure. (#136) 2025-01-15 23:26:00 -06:00
fee1d9c646 Update from hash_predef, version 1.15.1. 2025-01-15 23:18:28 -06:00
1a76f0875f Update from hash_predef, version 1.15.1. 2025-01-14 21:02:34 -06:00
e1211a4ca4 Update from hash_predef, version 1.15.1. 2025-01-12 12:53:25 -06:00
9aca7f5b60 Actually guard against use of check/predef.jam. 2024-04-19 09:06:44 -05:00
25a6bb6b2e Guard against using the obsolete predef/check/predef.jam 2024-04-19 09:00:37 -05:00
0fdfb49c3a Merge branch 'develop' 2023-10-31 20:24:41 -05:00
614546d6fa Update from hash_predef, version 1.15. 2023-10-31 20:20:43 -05:00
7f9c798e09 Add support for Microsoft's C++ stdlib (#133)
Add support for Microsoft's C++ stdlib
2023-10-31 07:01:23 -05:00
e508ed842c Add modular install targets. 2023-03-16 08:45:44 -05:00
d85975d379 Fix Wikipedia link for VMS (#123)
The current URL goes to a disambiguation page.
2023-03-13 21:41:16 -05:00
12a014e540 Sync from hash-predef. 2023-03-13 19:41:57 -05:00
e4ef5f54ec Sync from hash-predef. 2023-03-13 19:18:53 -05:00
5541cdef2e Update docs. 2023-03-12 23:22:05 -05:00
44cc60f618 Adjust hash2boost convert. 2023-03-12 23:18:29 -05:00
41b86ca2e2 Modular adjustments to building. 2023-03-12 23:07:07 -05:00
392e4e7674 Release 1.14. 2022-02-27 14:44:35 -06:00
a12c7fde14 Predef 1.13.1 2021-10-24 17:53:33 -05:00
e3a87328f4 Merge branch 'develop' 2021-02-13 20:33:00 -06:00
c5075828dd Release 1.12 2021-01-06 08:01:05 -06:00
133ae86ef5 Merge branch 'develop' 2020-03-24 21:17:05 -05:00
fe62325d9f Fix bad checks on Boost release archive structure.
The headers on a Boost release are only present at the root. This adds that to the include search path so that the checks can also work on that structure.
2019-08-12 16:21:35 -05:00
23 changed files with 688 additions and 234 deletions

View File

@ -7,17 +7,27 @@
freebsd_task:
# All the GCC's and Clang's currently supported by FreeBSD ports.
matrix:
- { name: 'FreeBSD, GCC 11', env: { CXX: 'g++11', PACKAGE: 'gcc11-devel', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-13-0' } }
- { name: 'FreeBSD, GCC 10', env: { CXX: 'g++10', PACKAGE: 'gcc10-devel', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-13-0' } }
- { name: 'FreeBSD, GCC 9', env: { CXX: 'g++9', PACKAGE: 'gcc9-devel', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-13-0' } }
- { name: 'FreeBSD, GCC 8', env: { CXX: 'g++8', PACKAGE: 'gcc8', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-13-0' } }
- { name: 'FreeBSD, GCC 14', env: { CXX: 'g++14', PACKAGE: 'lang/gcc14', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, GCC 13', env: { CXX: 'g++13', PACKAGE: 'gcc13', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, GCC 12', env: { CXX: 'g++12', PACKAGE: 'gcc12', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, GCC 11', env: { CXX: 'g++11', PACKAGE: 'gcc11', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, GCC 10', env: { CXX: 'g++10', PACKAGE: 'gcc10', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-14-1' } }
# - { name: 'FreeBSD, GCC 9', env: { CXX: 'g++9', PACKAGE: 'gcc9', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-14-1' } }
# - { name: 'FreeBSD, GCC 8', env: { CXX: 'g++8', PACKAGE: 'gcc8', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-14-1' } }
# - { name: 'FreeBSD, GCC 7', env: { CXX: 'g++7', PACKAGE: 'gcc7', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-12-2' } }
- { name: 'FreeBSD, Clang 12', env: { CXX: 'clang++12', PACKAGE: 'devel/llvm12', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-13-0' } }
- { name: 'FreeBSD, Clang 11', env: { CXX: 'clang++11', PACKAGE: 'devel/llvm11', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-13-0' } }
- { name: 'FreeBSD, Clang 10', env: { CXX: 'clang++10', PACKAGE: 'devel/llvm10', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-13-0' } }
- { name: 'FreeBSD, Clang 9', env: { CXX: 'clang++90', PACKAGE: 'devel/llvm90', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-13-0' } }
- { name: 'FreeBSD, Clang 8', env: { CXX: 'clang++80', PACKAGE: 'devel/llvm80' , TOOLSET: clang}, freebsd_instance: { image_family: 'freebsd-13-0' } }
- { name: 'FreeBSD, Clang 7', env: { CXX: 'clang++70', PACKAGE: 'devel/llvm70', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-13-0' } }
- { name: 'FreeBSD, Clang 19', env: { CXX: 'clang++19', PACKAGE: 'devel/llvm19', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, Clang 18', env: { CXX: 'clang++18', PACKAGE: 'devel/llvm18', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, Clang 17', env: { CXX: 'clang++17', PACKAGE: 'devel/llvm17', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, Clang 16', env: { CXX: 'clang++16', PACKAGE: 'devel/llvm16', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, Clang 15', env: { CXX: 'clang++15', PACKAGE: 'devel/llvm15', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, Clang 14', env: { CXX: 'clang++14', PACKAGE: 'devel/llvm14', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, Clang 13', env: { CXX: 'clang++13', PACKAGE: 'devel/llvm13', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, Clang 12', env: { CXX: 'clang++12', PACKAGE: 'devel/llvm12', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
- { name: 'FreeBSD, Clang 11', env: { CXX: 'clang++11', PACKAGE: 'devel/llvm11', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
# - { name: 'FreeBSD, Clang 10', env: { CXX: 'clang++10', PACKAGE: 'devel/llvm10', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
# - { name: 'FreeBSD, Clang 9', env: { CXX: 'clang++90', PACKAGE: 'devel/llvm90', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
# - { name: 'FreeBSD, Clang 8', env: { CXX: 'clang++80', PACKAGE: 'devel/llvm80' , TOOLSET: clang}, freebsd_instance: { image_family: 'freebsd-14-1' } }
# - { name: 'FreeBSD, Clang 7', env: { CXX: 'clang++70', PACKAGE: 'devel/llvm70', TOOLSET: clang }, freebsd_instance: { image_family: 'freebsd-14-1' } }
# To install with ports we need to initialize the package manager. To avoid
# confirmation prompts we need to set an env var.
install_script: [

View File

@ -1,13 +1,9 @@
# Copyright Mike Dev 2018
# Copyright René Ferdinand Rivera Morell 2018-2021
# Copyright René Ferdinand Rivera Morell 2018-2025
# Distributed under the Boost Software License, Version 1.0.
# See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt
# NOTE:
# CMake support for Boost.Predef is currently experimental at best and the
# interface is likely to change in the future
#
# This file provides minimal cmake support (no unit-tests,
# no installation) for integration into a "host" cmake project
# via the "add_subdirectory( <path-to-boost-predef> )" command.
@ -20,12 +16,12 @@
# Only need the basic minimum of project, add_library, and
# target_include_directories commands.
cmake_minimum_required( VERSION 3.0 )
cmake_minimum_required( VERSION 3.5...3.999 )
# Don't set VERSION, as that's a pita to keep up to date with the version
# header. And don't set LANGUAGES as we are multi-language and header
# only, so it's irrelevant.
project( BoostPredef LANGUAGES NONE )
# Don't set LANGUAGES as we are multi-language and header only, so it's
# irrelevant.
set( BOOST_PREDEF_VERSION "1.16" )
project( boost_predef VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES NONE )
# Simple INTERFACE, and header only, library target.
add_library( boost_predef INTERFACE )

View File

@ -23,7 +23,8 @@ skip_commits:
environment:
matrix:
# All the Visual Studio installs available on Appveyor
# - { job_name: 'VS 2019', TOOLSET: "msvc", TOOLSET_VERSION: '14.2', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2019' }
- { job_name: 'VS 2022', TOOLSET: "msvc", TOOLSET_VERSION: '14.3', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022' }
- { job_name: 'VS 2019', TOOLSET: "msvc", TOOLSET_VERSION: '14.2', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2019' }
- { job_name: 'VS 2017', TOOLSET: "msvc", TOOLSET_VERSION: '14.1', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' }
- { job_name: 'VS 2015', TOOLSET: "msvc", TOOLSET_VERSION: '14.0', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
- { job_name: 'VS 2013', TOOLSET: "msvc", TOOLSET_VERSION: '12.0', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
@ -34,10 +35,14 @@ environment:
- { job_name: 'MinGW-w64 7.3', TOOLSET: "gcc", CXXPATH: 'C:/mingw-w64/x86_64-7.3.0-posix-seh-rt_v5-rev0/mingw64/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
- { job_name: 'MinGW-w64 6.3', TOOLSET: "gcc", CXXPATH: 'C:/mingw-w64/x86_64-6.3.0-posix-seh-rt_v5-rev1/mingw64/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
# Cygwin versions available.
- { job_name: 'Cygwin 3.4.6 x64', TOOLSET: 'gcc', CXXPATH: 'C:/cygwin64/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022' }
# - { job_name: 'Cygwin32 3.1.7', TOOLSET: 'gcc', CXXPATH: 'C:/cygwin/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2019' }
# - { job_name: 'Cygwin64 3.1.7', TOOLSET: 'gcc', CXXPATH: 'C:/cygwin64/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2019' }
- { job_name: 'Cygwin32 3.0.7', TOOLSET: 'gcc', CXXPATH: 'C:/cygwin/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' }
- { job_name: 'Cygwin64 3.0.7', TOOLSET: 'gcc', CXXPATH: 'C:/cygwin64/bin/g++.exe', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' }
# Clang-win versions available.
- { job_name: 'Clang 18 (VS2022)', TOOLSET: 'clang-win', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022' }
- { job_name: 'Clang 9 (VS2015)', TOOLSET: 'clang-win', APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' }
platform:
- x86
@ -63,39 +68,40 @@ for:
choco install vswhere
echo ">>>>> INSTALL B2 .."
cd %APPVEYOR_BUILD_FOLDER%/..
curl "https://github.com/boostorg/build/archive/develop.zip" -L -o b2.zip
curl "https://github.com/bfgroup/b2/archive/refs/heads/release.zip" -L -o b2.zip
7z x b2.zip -r
echo using %TOOLSET% ^: %TOOLSET_VERSION% ^: %CXXPATH% ^; > %HOMEDRIVE%%HOMEPATH%/user-config.jam
cd %APPVEYOR_BUILD_FOLDER%/../build-develop
cd %APPVEYOR_BUILD_FOLDER%/../b2-release
cmd.exe /c bootstrap.bat
build_script:
- cmd: |
echo ">>>>>"
echo ">>>>> TEST .."
echo ">>>>>"
set BOOST_BUILD_PATH=%APPVEYOR_BUILD_FOLDER%/../build-develop
set BOOST_BUILD_PATH=%APPVEYOR_BUILD_FOLDER%/../b2-release
cd %APPVEYOR_BUILD_FOLDER%/test
%APPVEYOR_BUILD_FOLDER%/../build-develop/b2.exe --verbose-test -a toolset=%TOOLSET% %B2_ARGS% predef-info
%APPVEYOR_BUILD_FOLDER%/../build-develop/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% predef predef-headers
# Windows MinGW & Cygwin job steps.
%APPVEYOR_BUILD_FOLDER%/../b2-release/b2.exe --verbose-test -a toolset=%TOOLSET% %B2_ARGS% predef-info
%APPVEYOR_BUILD_FOLDER%/../b2-release/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% predef predef-headers
# Windows MinGW, Cygwin, and Clang-win job steps.
- matrix:
only:
- TOOLSET: 'gcc'
- TOOLSET: 'clang-win'
install:
- cmd: |
echo ">>>>> INSTALL B2 .."
cd %APPVEYOR_BUILD_FOLDER%/..
curl "https://github.com/boostorg/build/archive/develop.zip" -L -o b2.zip
curl "https://github.com/bfgroup/b2/archive/refs/heads/release.zip" -L -o b2.zip
7z x b2.zip -r
echo using %TOOLSET% ^: %TOOLSET_VERSION% ^: %CXXPATH% ^; > %HOMEDRIVE%%HOMEPATH%/user-config.jam
cd %APPVEYOR_BUILD_FOLDER%/../build-develop
cd %APPVEYOR_BUILD_FOLDER%/../b2-release
cmd.exe /c bootstrap.bat
build_script:
# The build itself just calls the compiler directly.
- cmd: |
echo ">>>>> TEST .."
set PATH=%CXXPATH%\..\;%PATH%
set BOOST_BUILD_PATH=%APPVEYOR_BUILD_FOLDER%/../build-develop
set BOOST_BUILD_PATH=%APPVEYOR_BUILD_FOLDER%/../b2-release
cd %APPVEYOR_BUILD_FOLDER%/test
%APPVEYOR_BUILD_FOLDER%/../build-develop/b2.exe --verbose-test -a toolset=%TOOLSET% %B2_ARGS% predef-info
%APPVEYOR_BUILD_FOLDER%/../build-develop/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% predef predef-headers
%APPVEYOR_BUILD_FOLDER%/../b2-release/b2.exe --verbose-test -a toolset=%TOOLSET% %B2_ARGS% predef-info
%APPVEYOR_BUILD_FOLDER%/../b2-release/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% predef predef-headers

View File

@ -24,14 +24,13 @@ pr:
include:
- develop
variables:
AZP: 1
AZP_REPO_DIR: $(Build.Repository.LocalPath)
AZP_BRANCH: $(Build.SourceBranch)
AZP_BRANCH_NAME: $(Build.SourceBranchName)
AZP_COMMIT: $(Build.SourceVersion)
AZP_REPO: $(Build.Repository.Name)
AZP_PULL_REQUEST: $(System.PullRequest.PullRequestNumber)
resources:
containers:
- { container: ubuntu_2404, image: 'ubuntu:24.04', options: '--name container -v /usr/bin/docker:/tmp/docker:ro' }
- { container: ubuntu_2204, image: 'ubuntu:22.04', options: '--name container -v /usr/bin/docker:/tmp/docker:ro' }
# - { container: ubuntu_2004, image: 'ubuntu:20.04', options: '--name container -v /usr/bin/docker:/tmp/docker:ro' }
- { container: ubuntu_1804, image: 'ubuntu:18.04', options: '--name container -v /usr/bin/docker:/tmp/docker:ro' }
- { container: ubuntu_1604, image: 'ubuntu:16.04', options: '--name container -v /usr/bin/docker:/tmp/docker:ro' }
stages:
@ -41,25 +40,15 @@ stages:
- job: 'Linux'
strategy:
matrix:
GCC 11 (GNU): { CXX: g++-11, PACKAGES: g++-11, VM_IMAGE: 'ubuntu-20.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,20 cxxstd-dialect=gnu' }
GCC 11 (ISO): { CXX: g++-11, PACKAGES: g++-11, VM_IMAGE: 'ubuntu-20.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,20 cxxstd-dialect=iso' }
GCC 11: { CXX: g++-11, PACKAGES: g++-11, VM_IMAGE: 'ubuntu-20.04', TOOLSET: gcc }
GCC 10: { CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-20.04', TOOLSET: gcc }
GCC 9: { CXX: g++-9, PACKAGES: g++-9, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
GCC 8: { CXX: g++-8, PACKAGES: g++-8, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
GCC 7: { CXX: g++-7, PACKAGES: g++-7, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
GCC 6: { CXX: g++-6, PACKAGES: g++-6, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
GCC 5: { CXX: g++-5, PACKAGES: g++-5, VM_IMAGE: 'ubuntu-18.04', TOOLSET: gcc }
Clang 13: { CXX: clang++-13, PACKAGES: clang-13, LLVM_OS: focal, LLVM_VER: 13, VM_IMAGE: 'ubuntu-20.04', TOOLSET: clang }
Clang 12: { CXX: clang++-12, PACKAGES: clang-12, LLVM_OS: focal, LLVM_VER: 12, VM_IMAGE: 'ubuntu-20.04', TOOLSET: clang }
Clang 11: { CXX: clang++-11, PACKAGES: clang-11, LLVM_OS: focal, LLVM_VER: 11, VM_IMAGE: 'ubuntu-20.04', TOOLSET: clang }
Clang 10: { CXX: clang++-10, PACKAGES: clang-10, LLVM_OS: bionic, LLVM_VER: 10, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
Clang 9: { CXX: clang++-9, PACKAGES: clang-9, LLVM_OS: bionic, LLVM_VER: 9, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
Clang 8: { CXX: clang++-8, PACKAGES: clang-8, LLVM_OS: bionic, LLVM_VER: 8, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
Clang 7: { CXX: clang++-7, PACKAGES: clang-7, LLVM_OS: bionic, LLVM_VER: 7, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
Clang 6.0: { CXX: clang++-6.0, PACKAGES: clang-6.0, LLVM_OS: bionic, LLVM_VER: 6.0, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
Clang 5.0: { CXX: clang++-5.0, PACKAGES: clang-5.0, LLVM_OS: bionic, LLVM_VER: 5.0, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
Clang 4.0: { CXX: clang++-4.0, PACKAGES: clang-4.0, LLVM_OS: xenial, LLVM_VER: 4.0, VM_IMAGE: 'ubuntu-18.04', TOOLSET: clang }
GCC 14 (GNU): { CXX: g++-14, PACKAGES: g++-14, VM_IMAGE: 'ubuntu-24.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,20 cxxstd-dialect=gnu' }
GCC 14 (ISO): { CXX: g++-14, PACKAGES: g++-14, VM_IMAGE: 'ubuntu-24.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,20 cxxstd-dialect=iso' }
GCC 13: { CXX: g++-13, PACKAGES: g++-13, VM_IMAGE: 'ubuntu-24.04', TOOLSET: gcc }
GCC 12: { CXX: g++-12, PACKAGES: g++-12, VM_IMAGE: 'ubuntu-24.04', TOOLSET: gcc }
GCC 11: { CXX: g++-11, PACKAGES: g++-11, VM_IMAGE: 'ubuntu-24.04', TOOLSET: gcc }
GCC 10: { CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-24.04', TOOLSET: gcc }
GCC 9: { CXX: g++-9, PACKAGES: g++-9, VM_IMAGE: 'ubuntu-24.04', TOOLSET: gcc }
Clang 18: { CXX: clang++-18, PACKAGES: clang-18, LLVM_OS: noble, LLVM_VER: 18, VM_IMAGE: 'ubuntu-24.04', TOOLSET: clang }
Clang 17: { CXX: clang++-17, PACKAGES: clang-17, LLVM_OS: noble, LLVM_VER: 17, VM_IMAGE: 'ubuntu-24.04', TOOLSET: clang }
pool:
vmImage: $(VM_IMAGE)
steps:
@ -91,20 +80,11 @@ stages:
- job: 'macOS'
strategy:
matrix:
Xcode 13.2.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_13.2.1.app, VM_IMAGE: 'macOS-11'}
Xcode 13.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_13.1.app, VM_IMAGE: 'macOS-11'}
Xcode 13.0: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_13.0.app, VM_IMAGE: 'macOS-11'}
Xcode 12.4: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.4.app, VM_IMAGE: 'macOS-11'}
Xcode 12.3: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.3.app, VM_IMAGE: 'macOS-10.15'}
Xcode 12.2: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.2.app, VM_IMAGE: 'macOS-10.15'}
Xcode 12.1.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.1.1.app, VM_IMAGE: 'macOS-10.15'}
Xcode 12.0.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.0.1.app, VM_IMAGE: 'macOS-10.15'}
Xcode 11.7: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.7.app, VM_IMAGE: 'macOS-10.15'}
Xcode 11.6: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.6.app, VM_IMAGE: 'macOS-10.15'}
Xcode 11.5: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.5.app, VM_IMAGE: 'macOS-10.15'}
Xcode 11.4.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.4.1.app, VM_IMAGE: 'macOS-10.15'}
Xcode 11.3.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.3.1.app, VM_IMAGE: 'macOS-10.15'}
Xcode 11.2.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_11.2.1.app, VM_IMAGE: 'macOS-10.15'}
Xcode 16.0: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_16.0.app, VM_IMAGE: 'macOS-15'}
Xcode 15.4: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_15.4.app, VM_IMAGE: 'macOS-14'}
Xcode 14.3.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_14.3.1.app, VM_IMAGE: 'macOS-13'}
Xcode 14.2: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_14.2.app, VM_IMAGE: 'macOS-13'}
Xcode 14.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_14.1.app, VM_IMAGE: 'macOS-13'}
pool:
vmImage: $(VM_IMAGE)
steps:
@ -208,8 +188,112 @@ stages:
%BUILD_SOURCESDIRECTORY%/../b2-release/b2.exe --debug-configuration -a toolset=%TOOLSET% %B2_ARGS% predef predef-headers
displayName: Test
- job: 'Co_Linux'
strategy:
matrix:
GCC 8: {CXX: g++-8, TOOLSET: gcc, PACKAGES: g++-8, CONTAINER: "ubuntu_1804"}
GCC 7: {CXX: g++-7, TOOLSET: gcc, PACKAGES: g++-7, CONTAINER: "ubuntu_1804"}
GCC 6: {CXX: g++-6, TOOLSET: gcc, PACKAGES: g++-6, CONTAINER: "ubuntu_1804"}
GCC 5: {CXX: g++-5, TOOLSET: gcc, PACKAGES: g++-5, CONTAINER: "ubuntu_1804"}
GCC 4.9: {CXX: g++-4.9, TOOLSET: gcc, PACKAGES: g++-4.9, CONTAINER: "ubuntu_1604"}
GCC 4.8: {CXX: g++-4.8, TOOLSET: gcc, PACKAGES: g++-4.8, CONTAINER: "ubuntu_1804"}
Clang 16: {CXX: clang++-16, TOOLSET: clang, PACKAGES: clang-16, LLVM_VER: 16, LLVM_OS: 'focal', CONTAINER: "ubuntu_2204"}
Clang 15: {CXX: clang++-15, TOOLSET: clang, PACKAGES: clang-15, LLVM_VER: 15, LLVM_OS: 'focal', CONTAINER: "ubuntu_2204"}
Clang 14: {CXX: clang++-14, TOOLSET: clang, PACKAGES: clang-14, LLVM_VER: 14, LLVM_OS: 'focal', CONTAINER: "ubuntu_2204"}
Clang 13: {CXX: clang++-13, TOOLSET: clang, PACKAGES: clang-13, LLVM_VER: 13, LLVM_OS: 'focal', CONTAINER: "ubuntu_2204"}
Clang 12: {CXX: clang++-12, TOOLSET: clang, PACKAGES: clang-12, LLVM_VER: 12, LLVM_OS: 'focal', CONTAINER: "ubuntu_2204"}
Clang 11: {CXX: clang++-11, TOOLSET: clang, PACKAGES: clang-11, LLVM_VER: 11, LLVM_OS: 'focal', CONTAINER: "ubuntu_2204"}
Clang 10: {CXX: clang++-10, TOOLSET: clang, PACKAGES: clang-10, CONTAINER: "ubuntu_1804"}
Clang 9: {CXX: clang++-9, TOOLSET: clang, PACKAGES: clang-9, CONTAINER: "ubuntu_1804"}
Clang 8: {CXX: clang++-8, TOOLSET: clang, PACKAGES: clang-8, CONTAINER: "ubuntu_1804"}
Clang 7: {CXX: clang++-7, TOOLSET: clang, PACKAGES: clang-7, CONTAINER: "ubuntu_1804"}
Clang 6: {CXX: clang++-6.0, TOOLSET: clang, PACKAGES: clang-6.0, CONTAINER: "ubuntu_1804"}
Clang 5: {CXX: clang++-5.0, TOOLSET: clang, PACKAGES: clang-5.0, LLVM_VER: 5.0, LLVM_OS: 'bionic', CONTAINER: "ubuntu_1804"}
Clang 4: {CXX: clang++-4.0, TOOLSET: clang, PACKAGES: clang-4.0, LLVM_VER: 4.0, LLVM_OS: 'xenial', CONTAINER: "ubuntu_1604"}
Clang 3.9: {CXX: clang++-3.9, TOOLSET: clang, PACKAGES: clang-3.9, LLVM_VER: 3.9, LLVM_OS: 'xenial', CONTAINER: "ubuntu_1604"}
Clang 3.8: {CXX: clang++-3.8, TOOLSET: clang, PACKAGES: clang-3.8, LLVM_VER: 3.8, LLVM_OS: 'xenial', CONTAINER: "ubuntu_1604"}
Clang 3.7: {CXX: clang++-3.7, TOOLSET: clang, PACKAGES: clang-3.7, CONTAINER: "ubuntu_1604"}
Clang 3.6: {CXX: clang++-3.6, TOOLSET: clang, PACKAGES: clang-3.6, CONTAINER: "ubuntu_1604"}
pool:
vmImage: 'ubuntu-20.04'
container: $[ variables['CONTAINER'] ]
steps:
- script: |
which docker
/tmp/docker exec -t -u root container mv /etc/sudoers /etc/sudoers.bak
/tmp/docker exec -t -u root container apt-get -qq update
/tmp/docker exec -t -u root container apt-get -qq install sudo
/tmp/docker exec -t -u root container mv /etc/sudoers.bak /etc/sudoers
displayName: Sudorize
- bash: |
set -e
uname -a
./tools/ci/linux-cxx-install.sh
displayName: 'Install CXX'
- bash: |
set -e
pushd ${HOME}
wget -nv https://github.com/bfgroup/b2/archive/release.tar.gz
tar -zxf release.tar.gz
cd b2-release
./bootstrap.sh --cxx=${CXX} ${TOOLSET}
CXX_PATH=`which ${CXX}`
echo "using ${TOOLSET} : : ${CXX_PATH} ;" > "${HOME}/user-config.jam"
sudo ./b2 --debug-configuration "--user-config=${HOME}/user-config.jam" install toolset=${TOOLSET}
popd
displayName: 'Install B2'
- bash: |
set -e
pushd test
b2 --verbose-test "--user-config=${HOME}/user-config.jam" -a toolset=${TOOLSET} ${B2_ARGS} predef-info
b2 --debug-configuration "--user-config=${HOME}/user-config.jam" -a toolset=${TOOLSET} ${B2_ARGS} predef predef-headers
popd
displayName: Test
- stage: Extra
dependsOn: [Test]
jobs:
- job: 'Linux'
strategy:
matrix:
TinyCC: {
EXE: tcc, PACKAGES: tcc, VM_IMAGE: 'ubuntu-latest',
TOOLSET: cc, VERSION: "tcc~0.9.27",
B2_CONFIG: '<cflags>"-std=c11" <-soname>-soname',
B2_ARGS: 'c' }
pool:
vmImage: $(VM_IMAGE)
continueOnError: 'true'
steps:
- bash: |
set -e
uname -a
./tools/ci/linux-cxx-install.sh
displayName: 'Install CXX'
- bash: |
set -e
pushd ${HOME}
wget -nv https://github.com/bfgroup/b2/archive/main.tar.gz
tar -zxf main.tar.gz
cd b2-main
./bootstrap.sh
sudo ./b2 install
popd
displayName: 'Install B2'
- bash: |
set -e
EXE_PATH=`which ${EXE}`
echo "using ${TOOLSET} : ${VERSION} : ${EXE_PATH} : ${B2_CONFIG} ;" > ${HOME}/user-config.jam
pushd test
b2 --verbose-test -a toolset=${TOOLSET} ${B2_ARGS}
b2 --debug-configuration -a toolset=${TOOLSET} ${B2_ARGS}
popd
displayName: Test
- stage: WebsiteUpdate
displayName: 'Website Update'
dependsOn: [Test]
condition: and(in(variables['Build.SourceBranch'], 'refs/heads/master', 'refs/heads/develop'), eq(variables['Build.Repository.Name'], 'grafikrobot/hash-predef'))
jobs:
@ -217,9 +301,6 @@ stages:
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '2.x'
- task: UseRubyVersion@0
- bash: |
gem install asciidoctor

View File

@ -1,38 +1,30 @@
# Copyright René Ferdinand Rivera Morell 2014-2019
# Copyright René Ferdinand Rivera Morell 2014-2023
# 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 ;
#|
This B2 project provides support for using the Predef library externally as
a standalone project or by embedding in your B2 project tree. To use
externally you would need a `use-project` declaration and to use the
project as a dependency where needed:
a standalone project. To use externally you would need a `use-project`
declaration and to use the project as a dependency where needed:
----
use-project /hash-predef : /path/to/hash-predef/root ;
use-project /boost/predef : /path/to/boost/predef/root ;
exe my_thing : main.cpp : <dependency>/hash-predef ;
----
To use in your project tree you would only need to place the Predef tree
in a subdirectory and reference the project location as a dependency where
needed.
----
exe my_thin : main.cpp : <dependency>libs/hash-predef ;
exe my_thing : main.cpp : <dependency>/boost/predef ;
----
|#
import-search tools/check ;
import project ;
path-constant BOOST_PREDEF_ROOT : . ;
path-constant BOOST_PREDEF_INCLUDE : include ;
constant PREDEF_DIST : boost ;
import modules ;
project /boost/predef
: usage-requirements
<include>$(BOOST_PREDEF_INCLUDE) ;
: common-requirements
<include>include
;
if [ project.is-jamroot-module $(__name__) ]
{
@ -40,4 +32,19 @@ if [ project.is-jamroot-module $(__name__) ]
$(attributes).set "build-dir" : .bin ;
}
alias libs ;
explicit
[ alias boost_predef ]
[ alias all : boost_predef test//all tools/check ]
[ install install-global-headers
: [ glob-tree-ex include : *.h ]
: <install-source-root>include <location>(includedir) ]
[ install install-data
: build.jam [ glob-tree-ex tools/check : * ] [ glob-tree-ex include : *.h ]
: <install-source-root>. <location>(datadir)/boost_predef ]
[ alias install :
install-global-headers install-data ]
;
call-if
: boost-library predef
;

View File

@ -3,8 +3,16 @@
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
ECHO "error: This module (predef/check/predef.jam) is OBSOLETE. Use predef/tools/check/predef.jam instead." ;
# Hack, to reload check/predef.jam at its new location.
import modules ;
local _loading_ = [ modules.peek modules : .loading ] ;
if $(_loading_[-1]) = $(_loading_[-2])
{
ECHO "error: Recursive loading of this module (predef/check/predef.jam) attempted. The predef/tools/check/predef.jam file is missing." ;
EXIT ;
}
local _loaded_ ;
for local _module_ in [ modules.peek modules : .loaded ]
{

View File

@ -14,7 +14,7 @@ project predefdoc ;
doc-dir = [ MATCH "--doc-dir=(.*)" : [ modules.peek : ARGV ] ] ;
doc-dir ?= . ;
local headers = [ glob-tree-ex $(BOOST_PREDEF_INCLUDE) : *.h ] ;
local headers = [ glob-tree-ex ../include/boost : *.h ] ;
html index : predef.adoc :
:

View File

@ -1,5 +1,5 @@
////
Copyright 2014-2021 René Ferdinand Rivera Morell
Copyright 2014-2024 René Ferdinand Rivera Morell
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
@ -7,6 +7,20 @@ http://www.boost.org/LICENSE_1_0.txt)
= History
== 1.16.0
* Add detection for Tiny C Compiler (TCC). (from Kornel Ponikwicki)
== 1.15.1
* Guard against using the obsolete `predef/check/predef.jam` B2 module.
Instead of using the current `predef/tools/check/predef.jam` module.
* Fix `architecture` tool check rule returning `ppc` instead of `power`.
== 1.15.0
* Add detection of Microsoft STL (from Henrik Gaßmann).
== 1.14.0
* Add detection of LoongArch (from Zhang Na).

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.16">
<meta name="generator" content="Asciidoctor 2.0.23">
<meta name="author" content="René Ferdinand Rivera Morell">
<title>Boost.Predef</title>
<style>
@ -875,6 +875,16 @@ pre.rouge .gh {
background-color: #002b36;
font-weight: bold;
}
pre.rouge .ge {
font-style: italic;
}
pre.rouge .ges {
font-weight: bold;
font-style: italic;
}
pre.rouge .gs {
font-weight: bold;
}
pre.rouge .k, pre.rouge .kn, pre.rouge .kp, pre.rouge .kr, pre.rouge .kv {
color: #6c71c4;
}
@ -1012,9 +1022,10 @@ pre.rouge .ss {
<li><a href="#_boost_comp_pgi">4.2.25. <code>BOOST_COMP_PGI</code></a></li>
<li><a href="#_boost_comp_sgi">4.2.26. <code>BOOST_COMP_SGI</code></a></li>
<li><a href="#_boost_comp_sunpro">4.2.27. <code>BOOST_COMP_SUNPRO</code></a></li>
<li><a href="#_boost_comp_tendra">4.2.28. <code>BOOST_COMP_TENDRA</code></a></li>
<li><a href="#_boost_comp_msvc">4.2.29. <code>BOOST_COMP_MSVC</code></a></li>
<li><a href="#_boost_comp_watcom">4.2.30. <code>BOOST_COMP_WATCOM</code></a></li>
<li><a href="#_boost_comp_tcc">4.2.28. <code>BOOST_COMP_TCC</code></a></li>
<li><a href="#_boost_comp_tendra">4.2.29. <code>BOOST_COMP_TENDRA</code></a></li>
<li><a href="#_boost_comp_msvc">4.2.30. <code>BOOST_COMP_MSVC</code></a></li>
<li><a href="#_boost_comp_watcom">4.2.31. <code>BOOST_COMP_WATCOM</code></a></li>
</ul>
</li>
<li><a href="#_boost_lang_language_standards_macros">4.3. <code>BOOST_LANG</code> language standards macros</a>
@ -1044,6 +1055,7 @@ pre.rouge .ss {
<li><a href="#_boost_lib_std_gnu">4.4.13. <code>BOOST_LIB_STD_GNU</code></a></li>
<li><a href="#_boost_lib_std_stlport">4.4.14. <code>BOOST_LIB_STD_STLPORT</code></a></li>
<li><a href="#_boost_lib_std_ibm">4.4.15. <code>BOOST_LIB_STD_IBM</code></a></li>
<li><a href="#_boost_lib_std_msvc">4.4.16. <code>BOOST_LIB_STD_MSVC</code></a></li>
</ul>
</li>
<li><a href="#_boost_os_operating_system_macros">4.5. <code>BOOST_OS</code> operating system macros</a>
@ -1129,21 +1141,25 @@ pre.rouge .ss {
</li>
<li><a href="#_history">6. History</a>
<ul class="sectlevel2">
<li><a href="#_1_13_1">6.1. 1.13.1</a></li>
<li><a href="#_1_13">6.2. 1.13</a></li>
<li><a href="#_1_12">6.3. 1.12</a></li>
<li><a href="#_1_11">6.4. 1.11</a></li>
<li><a href="#_1_10">6.5. 1.10</a></li>
<li><a href="#_1_9">6.6. 1.9</a></li>
<li><a href="#_1_8">6.7. 1.8</a></li>
<li><a href="#_1_7">6.8. 1.7</a></li>
<li><a href="#_1_6">6.9. 1.6</a></li>
<li><a href="#_1_5">6.10. 1.5</a></li>
<li><a href="#_1_4_1">6.11. 1.4.1</a></li>
<li><a href="#_1_4">6.12. 1.4</a></li>
<li><a href="#_1_3">6.13. 1.3</a></li>
<li><a href="#_1_2">6.14. 1.2</a></li>
<li><a href="#_1_1">6.15. 1.1</a></li>
<li><a href="#_1_16_0">6.1. 1.16.0</a></li>
<li><a href="#_1_15_1">6.2. 1.15.1</a></li>
<li><a href="#_1_15_0">6.3. 1.15.0</a></li>
<li><a href="#_1_14_0">6.4. 1.14.0</a></li>
<li><a href="#_1_13_1">6.5. 1.13.1</a></li>
<li><a href="#_1_13">6.6. 1.13</a></li>
<li><a href="#_1_12">6.7. 1.12</a></li>
<li><a href="#_1_11">6.8. 1.11</a></li>
<li><a href="#_1_10">6.9. 1.10</a></li>
<li><a href="#_1_9">6.10. 1.9</a></li>
<li><a href="#_1_8">6.11. 1.8</a></li>
<li><a href="#_1_7">6.12. 1.7</a></li>
<li><a href="#_1_6">6.13. 1.6</a></li>
<li><a href="#_1_5">6.14. 1.5</a></li>
<li><a href="#_1_4_1">6.15. 1.4.1</a></li>
<li><a href="#_1_4">6.16. 1.4</a></li>
<li><a href="#_1_3">6.17. 1.3</a></li>
<li><a href="#_1_2">6.18. 1.2</a></li>
<li><a href="#_1_1">6.19. 1.1</a></li>
</ul>
</li>
<li><a href="#_to_do">7. To Do</a></li>
@ -1335,7 +1351,7 @@ single top-level header:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef.h&gt;</span></code></pre>
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef.h&gt;</span></code></pre>
</div>
</div>
<div class="paragraph">
@ -1398,8 +1414,8 @@ a choice based on the version of the GCC C++ compiler one would:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef.h&gt;
#include &lt;iostream&gt;
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef.h&gt;</span><span class="cp">
#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -1420,8 +1436,8 @@ detection with a natural single condition. For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef.h&gt;
#include &lt;iostream&gt;
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef.h&gt;</span><span class="cp">
#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -1439,8 +1455,8 @@ from the preprocessor:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef.h&gt;
#include &lt;iostream&gt;
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef.h&gt;</span><span class="cp">
#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp">
</span>
<span class="cp">#if BOOST_COMP_GNUC
</span> <span class="cp">#if BOOST_COMP_GNUC &gt;= BOOST_VERSION_NUMBER(4,0,0)
@ -1649,7 +1665,7 @@ include those headers here.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/CATEGORY_TAG/DEPENDENCY.h&gt;</span></code></pre>
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef/CATEGORY_TAG/DEPENDENCY.h&gt;</span></code></pre>
</div>
</div>
<div class="paragraph">
@ -1660,8 +1676,8 @@ macros:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/version_number.h&gt;
#include &lt;boost/predef/make.h&gt;</span></code></pre>
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef/version_number.h&gt;</span><span class="cp">
#include</span> <span class="cpf">&lt;boost/predef/make.h&gt;</span></code></pre>
</div>
</div>
<div class="paragraph">
@ -1745,7 +1761,7 @@ to create informational output:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/detail/test.h&gt;
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef/detail/test.h&gt;</span><span class="cp">
</span><span class="n">BOOST_PREDEF_DECLARE_TEST</span><span class="p">(</span><span class="n">BOOST_category_tag</span><span class="p">,</span><span class="n">BOOST_category_tag_NAME</span><span class="p">)</span></code></pre>
</div>
</div>
@ -1842,7 +1858,7 @@ define either the base compiler predef <code>BOOST_COMP_compiler</code> or the a
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/make.h&gt;</span></code></pre>
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef/make.h&gt;</span></code></pre>
</div>
</div>
<div class="paragraph">
@ -3947,7 +3963,36 @@ Version number available as major, minor, and patch.</p>
</table>
</div>
<div class="sect3">
<h4 id="_boost_comp_tendra"><a class="anchor" href="#_boost_comp_tendra"></a>4.2.28. <code>BOOST_COMP_TENDRA</code></h4>
<h4 id="_boost_comp_tcc"><a class="anchor" href="#_boost_comp_tcc"></a>4.2.28. <code>BOOST_COMP_TCC</code></h4>
<div class="paragraph">
<p><a href="https://en.wikipedia.org/wiki/Tiny_C_Compiler">Tiny C Compiler</a> (TinyCC or TCC for short).
Version number available as major, minor, and patch.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Symbol</th>
<th class="tableblock halign-left valign-top">Version</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__TINYC__</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__TINYC__</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0.9.P</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect3">
<h4 id="_boost_comp_tendra"><a class="anchor" href="#_boost_comp_tendra"></a>4.2.29. <code>BOOST_COMP_TENDRA</code></h4>
<div class="paragraph">
<p><a href="http://en.wikipedia.org/wiki/TenDRA_Compiler">TenDRA C/C++</a> compiler.</p>
</div>
@ -3971,7 +4016,7 @@ Version number available as major, minor, and patch.</p>
</table>
</div>
<div class="sect3">
<h4 id="_boost_comp_msvc"><a class="anchor" href="#_boost_comp_msvc"></a>4.2.29. <code>BOOST_COMP_MSVC</code></h4>
<h4 id="_boost_comp_msvc"><a class="anchor" href="#_boost_comp_msvc"></a>4.2.30. <code>BOOST_COMP_MSVC</code></h4>
<div class="paragraph">
<p><a href="http://en.wikipedia.org/wiki/Visual_studio">Microsoft Visual C/C++</a> compiler.
Version number available as major, minor, and patch.</p>
@ -4018,7 +4063,7 @@ compiler version number directly, i.e. the _MSC_VER number.
</div>
</div>
<div class="sect3">
<h4 id="_boost_comp_watcom"><a class="anchor" href="#_boost_comp_watcom"></a>4.2.30. <code>BOOST_COMP_WATCOM</code></h4>
<h4 id="_boost_comp_watcom"><a class="anchor" href="#_boost_comp_watcom"></a>4.2.31. <code>BOOST_COMP_WATCOM</code></h4>
<div class="paragraph">
<p><a href="http://en.wikipedia.org/wiki/Watcom">Watcom C++</a> compiler.
Version number available as major, and minor.</p>
@ -4735,6 +4780,43 @@ Version number available as major, minor, and patch.</p>
</tbody>
</table>
</div>
<div class="sect3">
<h4 id="_boost_lib_std_msvc"><a class="anchor" href="#_boost_lib_std_msvc"></a>4.4.16. <code>BOOST_LIB_STD_MSVC</code></h4>
<div class="paragraph">
<p><a href="https://github.com/microsoft/STL">Microsoft&#8217;s C++ Standard Library</a>.
If available version number as major, minor, and patch.
The patch number is derived from <code>_MSVC_STL_UPDATE</code> by taking its five last
digits (see below). This implies that pasting a <code>_MSVC_STL_UPDATE</code> value into
<code>BOOST_VERSION_NUMBER</code> will produce a version number that is directly comparable
to <code>BOOST_LIB_STD_MSVC</code>.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Symbol</th>
<th class="tableblock halign-left valign-top">Version</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MSVC_STL_VERSION</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MSVC_STL_VERSION</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">VV.R.0</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MSVC_STL_UPDATE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">00.0.0YYYMM</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_boost_os_operating_system_macros"><a class="anchor" href="#_boost_os_operating_system_macros"></a>4.5. <code>BOOST_OS</code> operating system macros</h3>
@ -5309,7 +5391,7 @@ version 4 is specifically detected.</p>
<div class="sect3">
<h4 id="_boost_os_vms"><a class="anchor" href="#_boost_os_vms"></a>4.5.17. <code>BOOST_OS_VMS</code></h4>
<div class="paragraph">
<p><a href="http://en.wikipedia.org/wiki/Vms">VMS</a> operating system.</p>
<p><a href="http://en.wikipedia.org/wiki/OpenVMS">VMS</a> operating system.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
@ -6129,8 +6211,8 @@ architecture.
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/hardware/simd.h&gt;
#include &lt;iostream&gt;
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef/hardware/simd.h&gt;</span><span class="cp">
#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -6154,8 +6236,8 @@ version number of the most recent SIMD extension detected for the architecture.<
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/hardware/simd.h&gt;
#include &lt;iostream&gt;
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef/hardware/simd.h&gt;</span><span class="cp">
#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -6185,8 +6267,8 @@ version numbers.
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/hardware/simd.h&gt;
#include &lt;iostream&gt;
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef/hardware/simd.h&gt;</span><span class="cp">
#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -6204,8 +6286,8 @@ extensions macros, you can easily check for ranges of supported extensions:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/hardware/simd.h&gt;
#include &lt;iostream&gt;
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;boost/predef/hardware/simd.h&gt;</span><span class="cp">
#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -7096,6 +7178,9 @@ indicates an ignored digit.</p>
<p><code>BOOST_PREDEF_MAKE_10_VV00(V)</code></p>
</li>
<li>
<p><code>BOOST_PREDEF_MAKE_10_VVR_0PPPPP(V, P)</code>, the second parameter specifies a year-month patch level with the first digit discarded</p>
</li>
<li>
<p><code>BOOST_PREDEF_MAKE_10_VVRR(V)</code></p>
</li>
<li>
@ -7300,7 +7385,51 @@ expressions. It defaults to "c++", but can be any of: "c", "cpp",
<h2 id="_history"><a class="anchor" href="#_history"></a>6. History</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_1_13_1"><a class="anchor" href="#_1_13_1"></a>6.1. 1.13.1</h3>
<h3 id="_1_16_0"><a class="anchor" href="#_1_16_0"></a>6.1. 1.16.0</h3>
<div class="ulist">
<ul>
<li>
<p>Add detection for Tiny C Compiler (TCC). (from Kornel Ponikwicki)</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_1_15_1"><a class="anchor" href="#_1_15_1"></a>6.2. 1.15.1</h3>
<div class="ulist">
<ul>
<li>
<p>Guard against using the obsolete <code>predef/check/predef.jam</code> B2 module.
Instead of using the current <code>predef/tools/check/predef.jam</code> module.</p>
</li>
<li>
<p>Fix <code>architecture</code> tool check rule returning <code>ppc</code> instead of <code>power</code>.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_1_15_0"><a class="anchor" href="#_1_15_0"></a>6.3. 1.15.0</h3>
<div class="ulist">
<ul>
<li>
<p>Add detection of Microsoft STL (from Henrik Gaßmann).</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_1_14_0"><a class="anchor" href="#_1_14_0"></a>6.4. 1.14.0</h3>
<div class="ulist">
<ul>
<li>
<p>Add detection of LoongArch (from Zhang Na).</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_1_13_1"><a class="anchor" href="#_1_13_1"></a>6.5. 1.13.1</h3>
<div class="ulist">
<ul>
<li>
@ -7316,7 +7445,7 @@ expressions. It defaults to "c++", but can be any of: "c", "cpp",
</div>
</div>
<div class="sect2">
<h3 id="_1_13"><a class="anchor" href="#_1_13"></a>6.2. 1.13</h3>
<h3 id="_1_13"><a class="anchor" href="#_1_13"></a>6.6. 1.13</h3>
<div class="ulist">
<ul>
<li>
@ -7335,7 +7464,7 @@ expressions. It defaults to "c++", but can be any of: "c", "cpp",
</div>
</div>
<div class="sect2">
<h3 id="_1_12"><a class="anchor" href="#_1_12"></a>6.3. 1.12</h3>
<h3 id="_1_12"><a class="anchor" href="#_1_12"></a>6.7. 1.12</h3>
<div class="ulist">
<ul>
<li>
@ -7364,7 +7493,7 @@ Initial implementation inspired by submission from Mikhail Komarov.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_11"><a class="anchor" href="#_1_11"></a>6.4. 1.11</h3>
<h3 id="_1_11"><a class="anchor" href="#_1_11"></a>6.8. 1.11</h3>
<div class="ulist">
<ul>
<li>
@ -7392,7 +7521,7 @@ Initial implementation inspired by submission from Mikhail Komarov.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_10"><a class="anchor" href="#_1_10"></a>6.5. 1.10</h3>
<h3 id="_1_10"><a class="anchor" href="#_1_10"></a>6.9. 1.10</h3>
<div class="ulist">
<ul>
<li>
@ -7417,7 +7546,7 @@ removed in a future release.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_9"><a class="anchor" href="#_1_9"></a>6.6. 1.9</h3>
<h3 id="_1_9"><a class="anchor" href="#_1_9"></a>6.10. 1.9</h3>
<div class="ulist">
<ul>
<li>
@ -7430,7 +7559,7 @@ removed in a future release.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_8"><a class="anchor" href="#_1_8"></a>6.7. 1.8</h3>
<h3 id="_1_8"><a class="anchor" href="#_1_8"></a>6.11. 1.8</h3>
<div class="ulist">
<ul>
<li>
@ -7452,7 +7581,7 @@ removed in a future release.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_7"><a class="anchor" href="#_1_7"></a>6.8. 1.7</h3>
<h3 id="_1_7"><a class="anchor" href="#_1_7"></a>6.12. 1.7</h3>
<div class="ulist">
<ul>
<li>
@ -7468,7 +7597,7 @@ removed in a future release.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_6"><a class="anchor" href="#_1_6"></a>6.9. 1.6</h3>
<h3 id="_1_6"><a class="anchor" href="#_1_6"></a>6.13. 1.6</h3>
<div class="ulist">
<ul>
<li>
@ -7492,7 +7621,7 @@ Baratov)</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_5"><a class="anchor" href="#_1_5"></a>6.10. 1.5</h3>
<h3 id="_1_5"><a class="anchor" href="#_1_5"></a>6.14. 1.5</h3>
<div class="ulist">
<ul>
<li>
@ -7511,7 +7640,7 @@ version instead of the varied product versions.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_4_1"><a class="anchor" href="#_1_4_1"></a>6.11. 1.4.1</h3>
<h3 id="_1_4_1"><a class="anchor" href="#_1_4_1"></a>6.15. 1.4.1</h3>
<div class="ulist">
<ul>
<li>
@ -7524,7 +7653,7 @@ version instead of the varied product versions.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_4"><a class="anchor" href="#_1_4"></a>6.12. 1.4</h3>
<h3 id="_1_4"><a class="anchor" href="#_1_4"></a>6.16. 1.4</h3>
<div class="ulist">
<ul>
<li>
@ -7545,7 +7674,7 @@ use cases. And changed the BBv2 check support to use compile only checks.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_3"><a class="anchor" href="#_1_3"></a>6.13. 1.3</h3>
<h3 id="_1_3"><a class="anchor" href="#_1_3"></a>6.17. 1.3</h3>
<div class="ulist">
<ul>
<li>
@ -7570,7 +7699,7 @@ use cases. And changed the BBv2 check support to use compile only checks.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_2"><a class="anchor" href="#_1_2"></a>6.14. 1.2</h3>
<h3 id="_1_2"><a class="anchor" href="#_1_2"></a>6.18. 1.2</h3>
<div class="ulist">
<ul>
<li>
@ -7594,7 +7723,7 @@ checks.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_1"><a class="anchor" href="#_1_1"></a>6.15. 1.1</h3>
<h3 id="_1_1"><a class="anchor" href="#_1_1"></a>6.19. 1.1</h3>
<div class="ulist">
<ul>
<li>

View File

@ -652,6 +652,8 @@ include::../include/boost/predef/compiler/sgi_mipspro.h[tag=reference]
include::../include/boost/predef/compiler/sunpro.h[tag=reference]
include::../include/boost/predef/compiler/tcc.h[tag=reference]
include::../include/boost/predef/compiler/tendra.h[tag=reference]
include::../include/boost/predef/compiler/visualc.h[tag=reference]
@ -708,6 +710,8 @@ include::../include/boost/predef/library/std/stlport.h[tag=reference]
include::../include/boost/predef/library/std/vacpp.h[tag=reference]
include::../include/boost/predef/library/std/msvc.h[tag=reference]
:leveloffset: -3
=== `BOOST_OS` operating system macros

View File

@ -37,6 +37,7 @@ http://www.boost.org/LICENSE_1_0.txt)
#include <boost/predef/compiler/pgi.h>
#include <boost/predef/compiler/sgi_mipspro.h>
#include <boost/predef/compiler/sunpro.h>
#include <boost/predef/compiler/tcc.h>
#include <boost/predef/compiler/tendra.h>
#include <boost/predef/compiler/visualc.h>
#include <boost/predef/compiler/watcom.h>

View File

@ -11,6 +11,7 @@ http://www.boost.org/LICENSE_1_0.txt)
/* Other compilers that emulate this one need to be detected first. */
#include <boost/predef/compiler/clang.h>
#include <boost/predef/compiler/tcc.h>
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>

View File

@ -0,0 +1,85 @@
/*
Copyright Kornel Ponikwicki 2025
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef BOOST_PREDEF_COMPILER_TCC_H
#define BOOST_PREDEF_COMPILER_TCC_H
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/* tag::reference[]
= `BOOST_COMP_TCC`
https://en.wikipedia.org/wiki/Tiny_C_Compiler[Tiny C Compiler] (TinyCC or TCC for short).
Version number available as major, minor, and patch.
[options="header"]
|===
| {predef_symbol} | {predef_version}
| `+__TINYC__+` | {predef_detection}
| `+__TINYC__+` | 0.9.P
|===
*/ // end::reference[]
#define BOOST_COMP_TCC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__TINYC__) && !defined(BOOST_COMP_TCC_DETECTION)
/* Helper macros for checking if __TINYC__ expands to any value */
# define _BOOST_COMP_TCC_HAS_VALUE(VALUE) (_BOOST_COMP_TCC_EXPAND(VALUE) != 1)
# define _BOOST_COMP_TCC_EXPAND(VALUE) _BOOST_COMP_TCC_CONCAT(VALUE)
# define _BOOST_COMP_TCC_CONCAT(VALUE) (VALUE ## 1)
/*
TCC version is defined in __TINYC__ as {MINOR}{PATCH},
meaning that 0.9.27 would be 927 (0 for {MAJOR} is skipped).
Before 0.9.26 macro was defined but not set to any value.
Since TCC was always released under versions 0.9.x
we can assume that said macro either ranges between 926 and 999
or that the version is at least 0.9.0.
This will, of course, break if {MAJOR} or {MINOR} changes,
which has never happened (as of January 2025).
*/
# if _BOOST_COMP_TCC_HAS_VALUE(__TINYC__)
# if (__TINYC__ < 926 || __TINYC__ > 999)
# error "Cannot determine TCC version from __TINYC__"
# endif
# define BOOST_COMP_TCC_DETECTION BOOST_VERSION_NUMBER(\
0,\
__TINYC__/100,\
__TINYC__%100)
# else
# define BOOST_COMP_TCC_DETECTION BOOST_VERSION_NUMBER(0,9,0)
# endif
/* We will not need these macros anymore */
# undef _BOOST_COMP_TCC_HAS_VALUE
# undef _BOOST_COMP_TCC_EXPAND
# undef _BOOST_COMP_TCC_CONCAT
#endif
#ifdef BOOST_COMP_TCC_DETECTION
# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
# define BOOST_COMP_TCC_EMULATED BOOST_COMP_TCC_DETECTION
# else
# undef BOOST_COMP_TCC
# define BOOST_COMP_TCC BOOST_COMP_TCC_DETECTION
# endif
# define BOOST_COMP_TCC_AVAILABLE
# include <boost/predef/detail/comp_detected.h>
#endif
#define BOOST_COMP_TCC_NAME "Tiny C Compiler"
#endif
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_TCC,BOOST_COMP_TCC_NAME)
#ifdef BOOST_COMP_TCC_EMULATED
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_TCC_EMULATED,BOOST_COMP_TCC_NAME)
#endif

View File

@ -16,6 +16,7 @@ http://www.boost.org/LICENSE_1_0.txt)
#include <boost/predef/library/std/libcomo.h>
#include <boost/predef/library/std/modena.h>
#include <boost/predef/library/std/msl.h>
#include <boost/predef/library/std/msvc.h>
#include <boost/predef/library/std/roguewave.h>
#include <boost/predef/library/std/sgi.h>
#include <boost/predef/library/std/stdcpp3.h>

View File

@ -0,0 +1,53 @@
/*
Copyright Henrik S. Gaßmann 2023
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_STD_MSVC_H
#define BOOST_PREDEF_LIBRARY_STD_MSVC_H
#include <boost/predef/library/std/_prefix.h>
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
/* tag::reference[]
= `BOOST_LIB_STD_MSVC`
https://github.com/microsoft/STL[Microsoft's {CPP} Standard Library].
If available version number as major, minor, and patch.
The patch number is derived from `_MSVC_STL_UPDATE` by taking its five last
digits (see below). This implies that pasting a `_MSVC_STL_UPDATE` value into
`BOOST_VERSION_NUMBER` will produce a version number that is directly comparable
to `BOOST_LIB_STD_MSVC`.
[options="header"]
|===
| {predef_symbol} | {predef_version}
| `+_MSVC_STL_VERSION+` | {predef_detection}
| `+_MSVC_STL_VERSION+` | VV.R.0
| `+_MSVC_STL_UPDATE+` | 00.0.0YYYMM
|===
*/ // end::reference[]
#define BOOST_LIB_STD_MSVC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(_MSVC_STL_VERSION)
# undef BOOST_LIB_STD_MSVC
# define BOOST_LIB_STD_MSVC BOOST_PREDEF_MAKE_10_VVR_0PPPPP(_MSVC_STL_VERSION, _MSVC_STL_UPDATE)
#endif
#if BOOST_LIB_STD_MSVC
# define BOOST_LIB_STD_MSVC_AVAILABLE
#endif
#define BOOST_LIB_STD_MSVC_NAME "Microsoft stdlib"
#endif
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_MSVC, BOOST_LIB_STD_MSVC_NAME)

View File

@ -106,6 +106,10 @@ Macros are:
*/ // end::reference[]
#define BOOST_PREDEF_MAKE_10_VV00(V) BOOST_VERSION_NUMBER(((V)/100)%100,0,0)
/* tag::reference[]
* `BOOST_PREDEF_MAKE_10_VVR_0PPPPP(V, P)`, the second parameter specifies a year-month patch level with the first digit discarded
*/ // end::reference[]
#define BOOST_PREDEF_MAKE_10_VVR_0PPPPP(V, P) BOOST_VERSION_NUMBER(((V)/10)%100,(V)%10,(P)%100000)
/* tag::reference[]
* `BOOST_PREDEF_MAKE_10_VVRR(V)`
*/ // end::reference[]
#define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0)

View File

@ -14,7 +14,7 @@ http://www.boost.org/LICENSE_1_0.txt)
/* tag::reference[]
= `BOOST_OS_VMS`
http://en.wikipedia.org/wiki/Vms[VMS] operating system.
http://en.wikipedia.org/wiki/OpenVMS[VMS] operating system.
[options="header"]
|===

View File

@ -1,5 +1,5 @@
/*
Copyright Rene Rivera 2015-2016
Copyright Rene Rivera 2015-2025
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)
@ -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,14,0)
#define BOOST_PREDEF_VERSION BOOST_VERSION_NUMBER(1,16,0)
#endif

View File

@ -1,39 +1,39 @@
# Copyright Rene Rivera 2011-2019
# Copyright Rene Rivera 2011-2023
# 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)
import ../tools/check/predef : require check : predef-require predef-check ;
import-search ../tools/check ;
import predef : require check : predef-require predef-check ;
import common ;
import path ;
import regex ;
# This deals with the unfortunate aspect of a Boost monolithic release
# not having the modular include dirs. This is a kludge that just removes
# the direct dependency to the header if it can't find it.
local PREDEF_H = $(BOOST_PREDEF_INCLUDE)/boost/predef.h ;
if ! [ path.exists $(PREDEF_H) ]
{
PREDEF_H = ;
}
project
: requirements
<include>$(BOOST_PREDEF_INCLUDE)
# Add explicit dependency since we don't have header scanner for
# .m and .mm files.
<dependency>$(PREDEF_H)
<dependency>../include/boost/predef.h
;
using testing ;
test-suite predef-info :
[ run info_as_cpp.cpp : : : <test-info>always_show_run_output ]
alias predef-info-c :
[ run info_as_c.c : : : <test-info>always_show_run_output ]
[ run info_as_objcpp.mm : : : <test-info>always_show_run_output <conditional>@objc ]
[ run info_as_objc.m : : : <test-info>always_show_run_output <conditional>@objc ]
;
alias predef-info-cpp :
[ run info_as_cpp.cpp : : : <test-info>always_show_run_output ]
;
alias predef-info-objc :
[ run info_as_objcpp.mm : : : <test-info>always_show_run_output ]
[ run info_as_objc.m : : : <test-info>always_show_run_output ]
: <conditional>@objc
;
alias predef-info : predef-info-c predef-info-cpp predef-info-objc ;
rule objc ( props * )
{
if ! ( <target-os>darwin in $(props) )
@ -42,7 +42,7 @@ rule objc ( props * )
}
}
test-suite predef :
alias predef :
[ run version.cpp ]
[ run make.cpp ]
[ compile macos_endian.c : [ predef-require "BOOST_OS_MACOS" : cpp ] ]
@ -53,54 +53,53 @@ test-suite predef :
[ 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 ]
[ compile platform_windows.cpp ]
;
local HEADERS = [ path.glob
$(BOOST_PREDEF_INCLUDE)/predef
$(BOOST_PREDEF_INCLUDE)/predef/architecture
$(BOOST_PREDEF_INCLUDE)/predef/architecture/x86
$(BOOST_PREDEF_INCLUDE)/predef/compiler
$(BOOST_PREDEF_INCLUDE)/predef/hardware
$(BOOST_PREDEF_INCLUDE)/predef/hardware/simd
$(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/arm
$(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/ppc
$(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/x86
$(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/x86_amd
$(BOOST_PREDEF_INCLUDE)/predef/language
$(BOOST_PREDEF_INCLUDE)/predef/library
$(BOOST_PREDEF_INCLUDE)/predef/library/c
$(BOOST_PREDEF_INCLUDE)/predef/library/std
$(BOOST_PREDEF_INCLUDE)/predef/os
$(BOOST_PREDEF_INCLUDE)/predef/os/bsd
$(BOOST_PREDEF_INCLUDE)/predef/other
$(BOOST_PREDEF_INCLUDE)/predef/platform
: *.h
] ;
local single_header_cpp ;
for local h in $(HEADERS)
local single_header_c ;
for local h in [ glob-tree-ex ../include/boost/predef : *.h ]
{
local header_include = [ path.relative $(h) [ path.make $(BOOST_PREDEF_INCLUDE) ] ] ;
local header_cpp = [ regex.replace $(header_include:S=.cpp) "/" "_" ] ;
.HEADER($(header_cpp:B:S=)) = $(header_include) ;
make $(header_cpp) : : @gen_single_header_cpp ;
explicit $(header_cpp) ;
compile $(header_cpp) : <warnings-as-errors>on <warnings>all : $(header_cpp:B:S=) ;
explicit $(header_cpp:B:S=) ;
single_header_cpp += $(header_cpp:B:S=) ;
local header_include = [ path.relative $(h) ../include ] ;
local header_src = [ regex.replace $(header_include:S=)_c.c "/" "_" ] ;
local header_target = $(header_src:B:S=) ;
.HEADER($(header_target)) = $(header_include) ;
make $(header_src) : : @gen_single_header_c_or_cpp ;
explicit $(header_src) ;
compile $(header_src) : <warnings-as-errors>on <warnings>all : $(header_target) ;
explicit $(header_target) ;
single_header_c += $(header_target) ;
}
test-suite predef-headers : $(single_header_cpp) ;
local single_header_cpp ;
for local h in [ glob-tree-ex ../include/boost/predef : *.h ]
{
local header_include = [ path.relative $(h) ../include ] ;
local header_src = [ regex.replace $(header_include:S=)_cpp.cpp "/" "_" ] ;
local header_target = $(header_src:B:S=) ;
.HEADER($(header_target)) = $(header_include) ;
make $(header_src) : : @gen_single_header_c_or_cpp ;
explicit $(header_src) ;
compile $(header_src) : <warnings-as-errors>on <warnings>all : $(header_target) ;
explicit $(header_target) ;
single_header_cpp += $(header_target) ;
}
alias predef-headers-c : $(single_header_c) ;
alias predef-headers-cpp : $(single_header_cpp) ;
alias predef-headers : predef-headers-c predef-headers-cpp ;
.file_touch_cmd = [ common.file-touch-command ] ;
rule gen_single_header_cpp ( target * : source * : properties * )
rule gen_single_header_c_or_cpp ( target * : source * : properties * )
{
HEADER on $(target) = $(.HEADER($(target[1]:B))) ;
TEXT on $(target) = "
#include <$(.HEADER($(target[1]:B)))>
typedef char predef_single_header_test;
" ;
}
actions gen_single_header_cpp
actions gen_single_header_c_or_cpp
{
$(.file_touch_cmd) @($(<):<=":>=":O=F:E=#include <$(HEADER)>)
$(.file_touch_cmd) @($(<):<=":>=":O=F:E=$(TEXT))
}
# Minimal testing done for predef for CI. Since
@ -113,5 +112,14 @@ alias full : predef predef-info ;
# Extra's target.
alias extra : predef-headers ;
# Language specific tests only.
alias c : predef-info-c predef-headers-c ;
alias cpp : predef-info-cpp predef-headers-cpp ;
alias all : predef predef-info predef-headers ;
explicit minimal ;
explicit extra ;
explicit all ;
explicit c ;
explicit cpp ;

View File

@ -54,6 +54,7 @@ void test_BOOST_VERSION_NUMBER()
/* PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRR00PP00(9999009900ull) == BOOST_VERSION_NUMBER(99,99,99)); */
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRR0PP00(999909900) == BOOST_VERSION_NUMBER(99,99,99));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VV00(9900) == BOOST_VERSION_NUMBER(99,00,00));
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVR_0PPPPP(999,299999) == BOOST_VERSION_NUMBER(99,9,99999));
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));

View File

@ -1,9 +1,17 @@
# Copyright Rene Rivera 2015
# Copyright Rene Rivera 2015-2023
# 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)
exe predef_check_as_c : predef_check_as_c.c : <include>../include ;
exe predef_check_as_cpp : predef_check_as_cpp.cpp : <include>../include ;
exe predef_check_as_objc : predef_check_as_objc.m : <include>../include ;
exe predef_check_as_objcpp : predef_check_as_objcpp.mm : <include>../include ;
exe predef_check_as_c : predef_check_as_c.c ;
exe predef_check_as_cpp : predef_check_as_cpp.cpp ;
exe predef_check_as_objc : predef_check_as_objc.m : <conditional>@objc ;
exe predef_check_as_objcpp : predef_check_as_objcpp.mm : <conditional>@objc ;
rule objc ( props * )
{
if ! ( <target-os>darwin in $(props) )
{
return <build>no ;
}
}

View File

@ -1,4 +1,4 @@
# Copyright Rene Rivera 2015
# Copyright Rene Rivera 2015-2023
# 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)
@ -31,6 +31,7 @@ rule check ( expressions + : language ? : true-properties * : false-properties *
language ?= cpp ;
local project_target = [ project.target $(__name__) ] ;
$(project_target).reset-alternatives ;
project.push-current $(project_target) ;
local terms ;
local result ;
@ -69,6 +70,31 @@ rule require ( expressions + : language ? )
return [ check $(expressions) : $(language) : : <build>no ] ;
}
# Set the address-model to the default/deduced value for the context.
rule address-model ( )
{
return
[ check "BOOST_ARCH_WORD_BITS == 0.0.16" : : <address-model>16 ]
[ check "BOOST_ARCH_WORD_BITS == 0.0.32" : : <address-model>32 ]
[ check "BOOST_ARCH_WORD_BITS == 0.0.64" : : <address-model>64 ]
;
}
# Set the architecture to the default/deduced value to the context.
rule architecture ( )
{
local result = ;
local deducible-arch =
x86 ia64 sparc loongarch mips parisc arm riscv ;
for arch in $(deducible-arch)
{
result += [ check BOOST_ARCH_$(arch:U) : : <architecture>$(arch) ] ;
}
result += [ check BOOST_ARCH_PPC : : <architecture>power ] ;
result += [ check BOOST_ARCH_SYS390 : : <architecture>s390x ] ;
return $(result) ;
}
#############################################################################
.c.ext = c ;
@ -88,7 +114,7 @@ local rule check_target ( language key : requirements * )
local source_path
= $(predef_jam:D)/predef_check_cc_as_$(language).$(.$(language).ext) ;
local include_path
= $(predef_jam:D)/../../include $(BOOST_ROOT) ;
= $(predef_jam:D)/../../include ;
obj predef_check_cc_$(key)
: $(source_path)
: <include>$(include_path) $(requirements) ;
@ -112,6 +138,7 @@ local rule change_term_to_def ( term )
class check-expression-evaluator
{
import configure ;
import property ;
rule __init__ ( expression + : true-properties * : false-properties * )
{
@ -155,14 +182,22 @@ class check-expression-evaluator
# Eval full the expression.
local eval-result = [ eval $(to-eval) ] ;
# And resolve true/false properties.
local result = ;
if $(eval-result) = "true"
{
return $(self.true-properties) ;
result = $(self.true-properties) ;
}
else
{
return $(self.false-properties) ;
result = $(self.false-properties) ;
}
if $(result)
{
# Don't override anything that is explicitly specified.
local base = [ property.select $(result:G) : $(properties) ] ;
result = [ property.refine $(result) : $(base) ] ;
}
return $(result) ;
}
rule eval ( e * )

View File

@ -12,31 +12,33 @@ OS_ISSUE=`cat /etc/issue | head -n1 | cut -d " " -f1`
echo ">>>>> OS Issue: ${OS_ISSUE}"
PACKAGES=${PACKAGES:-build-essential}
APT_OPT="-o Acquire::Retries=3 -yq"
set -e
echo ">>>>>"
echo ">>>>> APT: UPDATE.."
echo ">>>>> APT: UPDATE 1/2.."
echo ">>>>>"
${SUDO} apt-get -o Acquire::Retries=3 update
${SUDO} apt-get ${APT_OPT} update
echo ">>>>>"
echo ">>>>> APT: INSTALL 1/2: wget.."
echo ">>>>>"
${SUDO} apt-get ${APT_OPT} install wget
echo ">>>>>"
echo ">>>>> APT: REPO.."
echo ">>>>>"
${SUDO} apt-get -o Acquire::Retries=3 -y install software-properties-common
if test "${OS_ISSUE}" = "Ubuntu" ; then
${SUDO} apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
fi
${SUDO} apt-get ${APT_OPT} install software-properties-common
if test -n "${LLVM_OS}" ; then
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
${SUDO} apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS}-${LLVM_VER} main"
fi
echo ">>>>>"
echo ">>>>> APT: UPDATE.."
echo ">>>>> APT: UPDATE 2/2.."
echo ">>>>>"
${SUDO} apt-get -o Acquire::Retries=3 update
${SUDO} apt-get ${APT_OPT} update
echo ">>>>>"
echo ">>>>> APT: INSTALL ${PACKAGES}.."
echo ">>>>> APT: INSTALL 2/2: ${PACKAGES}.."
echo ">>>>>"
${SUDO} apt-get -o Acquire::Retries=3 -yq --no-install-suggests --no-install-recommends install ${PACKAGES}
${SUDO} apt-get ${APT_OPT} install ${PACKAGES}
# Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying