Compare commits

..

19 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
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
20 changed files with 563 additions and 141 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,5 +1,5 @@
# 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
@ -16,11 +16,11 @@
# Only need the basic minimum of project, add_library, and
# target_include_directories commands.
cmake_minimum_required( VERSION 3.5 )
cmake_minimum_required( VERSION 3.5...3.999 )
# VERSION is set to the Boost superproject version if present,
# otherwise none. LANGUAGES are set to NONE as we are multi-language
# and preprocessor-only.
# 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.

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
@ -77,10 +82,11 @@ for:
cd %APPVEYOR_BUILD_FOLDER%/test
%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 job steps.
# Windows MinGW, Cygwin, and Clang-win job steps.
- matrix:
only:
- TOOLSET: 'gcc'
- TOOLSET: 'clang-win'
install:
- cmd: |
echo ">>>>> INSTALL B2 .."

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,26 +40,15 @@ stages:
- job: 'Linux'
strategy:
matrix:
GCC 12 (GNU): { CXX: g++-12, PACKAGES: g++-12, VM_IMAGE: 'ubuntu-22.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,20 cxxstd-dialect=gnu' }
GCC 12 (ISO): { CXX: g++-12, PACKAGES: g++-12, VM_IMAGE: 'ubuntu-22.04', TOOLSET: gcc, B2_ARGS: 'cxxstd=03,11,14,17,20 cxxstd-dialect=iso' }
GCC 12: { CXX: g++-12, PACKAGES: g++-12, VM_IMAGE: 'ubuntu-22.04', TOOLSET: gcc }
GCC 11: { CXX: g++-11, PACKAGES: g++-11, VM_IMAGE: 'ubuntu-22.04', TOOLSET: gcc }
GCC 10: { CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-22.04', TOOLSET: gcc }
GCC 9: { CXX: g++-9, PACKAGES: g++-9, VM_IMAGE: 'ubuntu-22.04', TOOLSET: gcc }
GCC 8: { CXX: g++-8, PACKAGES: g++-8, VM_IMAGE: 'ubuntu-20.04', TOOLSET: gcc }
GCC 7: { CXX: g++-7, PACKAGES: g++-7, VM_IMAGE: 'ubuntu-20.04', TOOLSET: gcc }
Clang 15: { CXX: clang++-15, PACKAGES: clang-15, LLVM_OS: jammy, LLVM_VER: 13, VM_IMAGE: 'ubuntu-22.04', TOOLSET: clang }
Clang 14: { CXX: clang++-14, PACKAGES: clang-14, LLVM_OS: jammy, LLVM_VER: 13, VM_IMAGE: 'ubuntu-22.04', TOOLSET: clang }
Clang 13: { CXX: clang++-13, PACKAGES: clang-13, LLVM_OS: jammy, LLVM_VER: 13, VM_IMAGE: 'ubuntu-22.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: focal, LLVM_VER: 10, VM_IMAGE: 'ubuntu-20.04', TOOLSET: clang }
Clang 9: { CXX: clang++-9, PACKAGES: clang-9, LLVM_OS: focal, LLVM_VER: 9, VM_IMAGE: 'ubuntu-20.04', TOOLSET: clang }
# Ubuntu 18.04 is deprecated.
# 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 }
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:
@ -92,24 +80,11 @@ stages:
- job: 'macOS'
strategy:
matrix:
Xcode 13.4.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_13.4.1.app, VM_IMAGE: 'macOS-12'}
Xcode 13.3.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_13.3.1.app, VM_IMAGE: 'macOS-12'}
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-12'}
Xcode 13.0: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_13.0.app, VM_IMAGE: 'macOS-11'}
Xcode 12.5.1: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.4.app, VM_IMAGE: 'macOS-11'}
Xcode 12.4: {TOOLSET: clang, CXX: clang++, XCODE_APP: /Applications/Xcode_12.4.app, VM_IMAGE: 'macOS-11'}
# macOS-10.15 is deprecated.
# 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:
@ -213,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:

View File

@ -3,6 +3,8 @@
# (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. To use externally you would need a `use-project`
@ -15,14 +17,10 @@ exe my_thing : main.cpp : <dependency>/boost/predef ;
----
|#
import-search tools/check ;
import project ;
import modules ;
path-constant PREDEF_ROOT : . ;
modules.poke : BOOST_BUILD_PATH
: $(PREDEF_ROOT)/tools/check [ modules.peek : BOOST_BUILD_PATH ] ;
project /boost/predef
: common-requirements
<include>include

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

@ -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.18">
<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,22 +1141,25 @@ pre.rouge .ss {
</li>
<li><a href="#_history">6. History</a>
<ul class="sectlevel2">
<li><a href="#_1_14_0">6.1. 1.14.0</a></li>
<li><a href="#_1_13_1">6.2. 1.13.1</a></li>
<li><a href="#_1_13">6.3. 1.13</a></li>
<li><a href="#_1_12">6.4. 1.12</a></li>
<li><a href="#_1_11">6.5. 1.11</a></li>
<li><a href="#_1_10">6.6. 1.10</a></li>
<li><a href="#_1_9">6.7. 1.9</a></li>
<li><a href="#_1_8">6.8. 1.8</a></li>
<li><a href="#_1_7">6.9. 1.7</a></li>
<li><a href="#_1_6">6.10. 1.6</a></li>
<li><a href="#_1_5">6.11. 1.5</a></li>
<li><a href="#_1_4_1">6.12. 1.4.1</a></li>
<li><a href="#_1_4">6.13. 1.4</a></li>
<li><a href="#_1_3">6.14. 1.3</a></li>
<li><a href="#_1_2">6.15. 1.2</a></li>
<li><a href="#_1_1">6.16. 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>
@ -3948,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>
@ -3972,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>
@ -4019,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>
@ -4736,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>
@ -5310,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>
@ -7097,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>
@ -7301,7 +7385,41 @@ 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_14_0"><a class="anchor" href="#_1_14_0"></a>6.1. 1.14.0</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>
@ -7311,7 +7429,7 @@ expressions. It defaults to "c++", but can be any of: "c", "cpp",
</div>
</div>
<div class="sect2">
<h3 id="_1_13_1"><a class="anchor" href="#_1_13_1"></a>6.2. 1.13.1</h3>
<h3 id="_1_13_1"><a class="anchor" href="#_1_13_1"></a>6.5. 1.13.1</h3>
<div class="ulist">
<ul>
<li>
@ -7327,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.3. 1.13</h3>
<h3 id="_1_13"><a class="anchor" href="#_1_13"></a>6.6. 1.13</h3>
<div class="ulist">
<ul>
<li>
@ -7346,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.4. 1.12</h3>
<h3 id="_1_12"><a class="anchor" href="#_1_12"></a>6.7. 1.12</h3>
<div class="ulist">
<ul>
<li>
@ -7375,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.5. 1.11</h3>
<h3 id="_1_11"><a class="anchor" href="#_1_11"></a>6.8. 1.11</h3>
<div class="ulist">
<ul>
<li>
@ -7403,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.6. 1.10</h3>
<h3 id="_1_10"><a class="anchor" href="#_1_10"></a>6.9. 1.10</h3>
<div class="ulist">
<ul>
<li>
@ -7428,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.7. 1.9</h3>
<h3 id="_1_9"><a class="anchor" href="#_1_9"></a>6.10. 1.9</h3>
<div class="ulist">
<ul>
<li>
@ -7441,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.8. 1.8</h3>
<h3 id="_1_8"><a class="anchor" href="#_1_8"></a>6.11. 1.8</h3>
<div class="ulist">
<ul>
<li>
@ -7463,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.9. 1.7</h3>
<h3 id="_1_7"><a class="anchor" href="#_1_7"></a>6.12. 1.7</h3>
<div class="ulist">
<ul>
<li>
@ -7479,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.10. 1.6</h3>
<h3 id="_1_6"><a class="anchor" href="#_1_6"></a>6.13. 1.6</h3>
<div class="ulist">
<ul>
<li>
@ -7503,7 +7621,7 @@ Baratov)</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_5"><a class="anchor" href="#_1_5"></a>6.11. 1.5</h3>
<h3 id="_1_5"><a class="anchor" href="#_1_5"></a>6.14. 1.5</h3>
<div class="ulist">
<ul>
<li>
@ -7522,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.12. 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>
@ -7535,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.13. 1.4</h3>
<h3 id="_1_4"><a class="anchor" href="#_1_4"></a>6.16. 1.4</h3>
<div class="ulist">
<ul>
<li>
@ -7556,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.14. 1.3</h3>
<h3 id="_1_3"><a class="anchor" href="#_1_3"></a>6.17. 1.3</h3>
<div class="ulist">
<ul>
<li>
@ -7581,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.15. 1.2</h3>
<h3 id="_1_2"><a class="anchor" href="#_1_2"></a>6.18. 1.2</h3>
<div class="ulist">
<ul>
<li>
@ -7605,7 +7723,7 @@ checks.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_1"><a class="anchor" href="#_1_1"></a>6.16. 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

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

@ -3,6 +3,7 @@
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
import-search ../tools/check ;
import predef : require check : predef-require predef-check ;
import common ;
import path ;
@ -17,13 +18,22 @@ project
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) )
@ -32,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 ] ]
@ -46,30 +56,50 @@ test-suite predef :
[ compile platform_windows.cpp ]
;
local single_header_c ;
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=)_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) ;
}
local single_header_cpp ;
for local h in [ glob-tree-ex ../include/boost/predef : *.h ]
{
local header_include = [ path.relative $(h) ../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_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) ;
}
test-suite predef-headers : $(single_header_cpp) ;
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
@ -82,8 +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

@ -84,12 +84,13 @@ rule address-model ( )
rule architecture ( )
{
local result = ;
local deducable-arch =
x86 ia64 sparc ppc loongarch mips parisc arm riscv ;
for arch in $(deducable-arch)
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) ;
}

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