Compare commits

..

2 Commits

Author SHA1 Message Date
2d2f10715d glob headers 2022-07-05 10:48:28 +02:00
af3e70ada5 Rework as esp-idf component 2022-07-04 20:17:39 +02:00
23 changed files with 249 additions and 687 deletions

View File

@ -7,27 +7,17 @@
freebsd_task:
# All the GCC's and Clang's currently supported by FreeBSD ports.
matrix:
- { 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 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 7', env: { CXX: 'g++7', PACKAGE: 'gcc7', TOOLSET: gcc }, freebsd_instance: { image_family: 'freebsd-12-2' } }
- { 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' } }
- { 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' } }
# 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,9 +1,15 @@
# Copyright Mike Dev 2018
# Copyright René Ferdinand Rivera Morell 2018-2025
# Copyright René Ferdinand Rivera Morell 2018-2021
# 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
if(NOT DEFINED IDF_TARGET)
# 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.
@ -16,12 +22,12 @@
# Only need the basic minimum of project, add_library, and
# target_include_directories commands.
cmake_minimum_required( VERSION 3.5...3.999 )
cmake_minimum_required( VERSION 3.0 )
# 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 )
# 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 )
# Simple INTERFACE, and header only, library target.
add_library( boost_predef INTERFACE )
@ -32,3 +38,17 @@ target_include_directories( boost_predef INTERFACE include )
# Add an alias to be compatible with consumers that may have used the
# FindBoost script.
add_library( Boost::predef ALIAS boost_predef )
else()
FILE(GLOB_RECURSE headers include/*.h include/*.hpp)
idf_component_register(
SRCS
${headers}
INCLUDE_DIRS
include
)
endif()

View File

@ -23,8 +23,7 @@ skip_commits:
environment:
matrix:
# All the Visual Studio installs available on Appveyor
- { 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 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' }
@ -35,14 +34,10 @@ 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
@ -68,40 +63,39 @@ for:
choco install vswhere
echo ">>>>> INSTALL B2 .."
cd %APPVEYOR_BUILD_FOLDER%/..
curl "https://github.com/bfgroup/b2/archive/refs/heads/release.zip" -L -o b2.zip
curl "https://github.com/boostorg/build/archive/develop.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%/../b2-release
cd %APPVEYOR_BUILD_FOLDER%/../build-develop
cmd.exe /c bootstrap.bat
build_script:
- cmd: |
echo ">>>>>"
echo ">>>>> TEST .."
echo ">>>>>"
set BOOST_BUILD_PATH=%APPVEYOR_BUILD_FOLDER%/../b2-release
set BOOST_BUILD_PATH=%APPVEYOR_BUILD_FOLDER%/../build-develop
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, and Clang-win job steps.
%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.
- matrix:
only:
- TOOLSET: 'gcc'
- TOOLSET: 'clang-win'
install:
- cmd: |
echo ">>>>> INSTALL B2 .."
cd %APPVEYOR_BUILD_FOLDER%/..
curl "https://github.com/bfgroup/b2/archive/refs/heads/release.zip" -L -o b2.zip
curl "https://github.com/boostorg/build/archive/develop.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%/../b2-release
cd %APPVEYOR_BUILD_FOLDER%/../build-develop
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%/../b2-release
set BOOST_BUILD_PATH=%APPVEYOR_BUILD_FOLDER%/../build-develop
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
%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

View File

@ -24,13 +24,14 @@ pr:
include:
- develop
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' }
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)
stages:
@ -40,15 +41,25 @@ stages:
- job: 'Linux'
strategy:
matrix:
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 }
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 }
pool:
vmImage: $(VM_IMAGE)
steps:
@ -80,11 +91,20 @@ stages:
- job: 'macOS'
strategy:
matrix:
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'}
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'}
pool:
vmImage: $(VM_IMAGE)
steps:
@ -188,112 +208,8 @@ 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:
@ -301,6 +217,9 @@ stages:
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '2.x'
- task: UseRubyVersion@0
- bash: |
gem install asciidoctor

View File

@ -1,30 +1,38 @@
# Copyright René Ferdinand Rivera Morell 2014-2023
# Copyright René Ferdinand Rivera Morell 2014-2019
# 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. To use externally you would need a `use-project`
declaration and to use the project as a dependency where needed:
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:
----
use-project /boost/predef : /path/to/boost/predef/root ;
use-project /hash-predef : /path/to/hash-predef/root ;
exe my_thing : main.cpp : <dependency>/boost/predef ;
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 ;
----
|#
import-search tools/check ;
import project ;
import modules ;
path-constant BOOST_PREDEF_ROOT : . ;
path-constant BOOST_PREDEF_INCLUDE : include ;
constant PREDEF_DIST : boost ;
project /boost/predef
: common-requirements
<include>include
;
: usage-requirements
<include>$(BOOST_PREDEF_INCLUDE) ;
if [ project.is-jamroot-module $(__name__) ]
{
@ -32,19 +40,4 @@ if [ project.is-jamroot-module $(__name__) ]
$(attributes).set "build-dir" : .bin ;
}
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
;
alias libs ;

View File

@ -3,16 +3,8 @@
# (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 ../include/boost : *.h ] ;
local headers = [ glob-tree-ex $(BOOST_PREDEF_INCLUDE) : *.h ] ;
html index : predef.adoc :
:

View File

@ -1,5 +1,5 @@
////
Copyright 2014-2024 René Ferdinand Rivera Morell
Copyright 2014-2021 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,20 +7,6 @@ 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.23">
<meta name="generator" content="Asciidoctor 2.0.16">
<meta name="author" content="René Ferdinand Rivera Morell">
<title>Boost.Predef</title>
<style>
@ -875,16 +875,6 @@ 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;
}
@ -1022,10 +1012,9 @@ 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_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>
<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>
</ul>
</li>
<li><a href="#_boost_lang_language_standards_macros">4.3. <code>BOOST_LANG</code> language standards macros</a>
@ -1055,7 +1044,6 @@ 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>
@ -1141,25 +1129,21 @@ pre.rouge .ss {
</li>
<li><a href="#_history">6. History</a>
<ul class="sectlevel2">
<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>
<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>
</ul>
</li>
<li><a href="#_to_do">7. To Do</a></li>
@ -1351,7 +1335,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</span> <span class="cpf">&lt;boost/predef.h&gt;</span></code></pre>
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef.h&gt;</span></code></pre>
</div>
</div>
<div class="paragraph">
@ -1414,8 +1398,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</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">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef.h&gt;
#include &lt;iostream&gt;
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -1436,8 +1420,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</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">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef.h&gt;
#include &lt;iostream&gt;
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -1455,8 +1439,8 @@ from the preprocessor:</p>
</div>
<div class="listingblock">
<div class="content">
<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">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef.h&gt;
#include &lt;iostream&gt;
</span>
<span class="cp">#if BOOST_COMP_GNUC
</span> <span class="cp">#if BOOST_COMP_GNUC &gt;= BOOST_VERSION_NUMBER(4,0,0)
@ -1665,7 +1649,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</span> <span class="cpf">&lt;boost/predef/CATEGORY_TAG/DEPENDENCY.h&gt;</span></code></pre>
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/CATEGORY_TAG/DEPENDENCY.h&gt;</span></code></pre>
</div>
</div>
<div class="paragraph">
@ -1676,8 +1660,8 @@ macros:</p>
</div>
<div class="listingblock">
<div class="content">
<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>
<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>
</div>
</div>
<div class="paragraph">
@ -1761,7 +1745,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</span> <span class="cpf">&lt;boost/predef/detail/test.h&gt;</span><span class="cp">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/detail/test.h&gt;
</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>
@ -1858,7 +1842,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</span> <span class="cpf">&lt;boost/predef/make.h&gt;</span></code></pre>
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/make.h&gt;</span></code></pre>
</div>
</div>
<div class="paragraph">
@ -3963,36 +3947,7 @@ Version number available as major, minor, and patch.</p>
</table>
</div>
<div class="sect3">
<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>
<h4 id="_boost_comp_tendra"><a class="anchor" href="#_boost_comp_tendra"></a>4.2.28. <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>
@ -4016,7 +3971,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.30. <code>BOOST_COMP_MSVC</code></h4>
<h4 id="_boost_comp_msvc"><a class="anchor" href="#_boost_comp_msvc"></a>4.2.29. <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>
@ -4063,7 +4018,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.31. <code>BOOST_COMP_WATCOM</code></h4>
<h4 id="_boost_comp_watcom"><a class="anchor" href="#_boost_comp_watcom"></a>4.2.30. <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>
@ -4780,43 +4735,6 @@ 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>
@ -5391,7 +5309,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/OpenVMS">VMS</a> operating system.</p>
<p><a href="http://en.wikipedia.org/wiki/Vms">VMS</a> operating system.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
@ -6211,8 +6129,8 @@ architecture.
</div>
<div class="listingblock">
<div class="content">
<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">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/hardware/simd.h&gt;
#include &lt;iostream&gt;
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -6236,8 +6154,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</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">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/hardware/simd.h&gt;
#include &lt;iostream&gt;
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -6267,8 +6185,8 @@ version numbers.
</div>
<div class="listingblock">
<div class="content">
<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">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/hardware/simd.h&gt;
#include &lt;iostream&gt;
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -6286,8 +6204,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</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">
<pre class="rouge highlight"><code data-lang="cpp"><span class="cp">#include &lt;boost/predef/hardware/simd.h&gt;
#include &lt;iostream&gt;
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
@ -7178,9 +7096,6 @@ 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>
@ -7385,51 +7300,7 @@ 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_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>
<h3 id="_1_13_1"><a class="anchor" href="#_1_13_1"></a>6.1. 1.13.1</h3>
<div class="ulist">
<ul>
<li>
@ -7445,7 +7316,7 @@ Instead of using the current <code>predef/tools/check/predef.jam</code> module.<
</div>
</div>
<div class="sect2">
<h3 id="_1_13"><a class="anchor" href="#_1_13"></a>6.6. 1.13</h3>
<h3 id="_1_13"><a class="anchor" href="#_1_13"></a>6.2. 1.13</h3>
<div class="ulist">
<ul>
<li>
@ -7464,7 +7335,7 @@ Instead of using the current <code>predef/tools/check/predef.jam</code> module.<
</div>
</div>
<div class="sect2">
<h3 id="_1_12"><a class="anchor" href="#_1_12"></a>6.7. 1.12</h3>
<h3 id="_1_12"><a class="anchor" href="#_1_12"></a>6.3. 1.12</h3>
<div class="ulist">
<ul>
<li>
@ -7493,7 +7364,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.8. 1.11</h3>
<h3 id="_1_11"><a class="anchor" href="#_1_11"></a>6.4. 1.11</h3>
<div class="ulist">
<ul>
<li>
@ -7521,7 +7392,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.9. 1.10</h3>
<h3 id="_1_10"><a class="anchor" href="#_1_10"></a>6.5. 1.10</h3>
<div class="ulist">
<ul>
<li>
@ -7546,7 +7417,7 @@ removed in a future release.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_9"><a class="anchor" href="#_1_9"></a>6.10. 1.9</h3>
<h3 id="_1_9"><a class="anchor" href="#_1_9"></a>6.6. 1.9</h3>
<div class="ulist">
<ul>
<li>
@ -7559,7 +7430,7 @@ removed in a future release.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_8"><a class="anchor" href="#_1_8"></a>6.11. 1.8</h3>
<h3 id="_1_8"><a class="anchor" href="#_1_8"></a>6.7. 1.8</h3>
<div class="ulist">
<ul>
<li>
@ -7581,7 +7452,7 @@ removed in a future release.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_7"><a class="anchor" href="#_1_7"></a>6.12. 1.7</h3>
<h3 id="_1_7"><a class="anchor" href="#_1_7"></a>6.8. 1.7</h3>
<div class="ulist">
<ul>
<li>
@ -7597,7 +7468,7 @@ removed in a future release.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_6"><a class="anchor" href="#_1_6"></a>6.13. 1.6</h3>
<h3 id="_1_6"><a class="anchor" href="#_1_6"></a>6.9. 1.6</h3>
<div class="ulist">
<ul>
<li>
@ -7621,7 +7492,7 @@ Baratov)</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_5"><a class="anchor" href="#_1_5"></a>6.14. 1.5</h3>
<h3 id="_1_5"><a class="anchor" href="#_1_5"></a>6.10. 1.5</h3>
<div class="ulist">
<ul>
<li>
@ -7640,7 +7511,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.15. 1.4.1</h3>
<h3 id="_1_4_1"><a class="anchor" href="#_1_4_1"></a>6.11. 1.4.1</h3>
<div class="ulist">
<ul>
<li>
@ -7653,7 +7524,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.16. 1.4</h3>
<h3 id="_1_4"><a class="anchor" href="#_1_4"></a>6.12. 1.4</h3>
<div class="ulist">
<ul>
<li>
@ -7674,7 +7545,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.17. 1.3</h3>
<h3 id="_1_3"><a class="anchor" href="#_1_3"></a>6.13. 1.3</h3>
<div class="ulist">
<ul>
<li>
@ -7699,7 +7570,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.18. 1.2</h3>
<h3 id="_1_2"><a class="anchor" href="#_1_2"></a>6.14. 1.2</h3>
<div class="ulist">
<ul>
<li>
@ -7723,7 +7594,7 @@ checks.</p>
</div>
</div>
<div class="sect2">
<h3 id="_1_1"><a class="anchor" href="#_1_1"></a>6.19. 1.1</h3>
<h3 id="_1_1"><a class="anchor" href="#_1_1"></a>6.15. 1.1</h3>
<div class="ulist">
<ul>
<li>

View File

@ -652,8 +652,6 @@ 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]
@ -710,8 +708,6 @@ 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,7 +37,6 @@ 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,7 +11,6 @@ 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

@ -1,85 +0,0 @@
/*
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,7 +16,6 @@ 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

@ -1,53 +0,0 @@
/*
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,10 +106,6 @@ 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/OpenVMS[VMS] operating system.
http://en.wikipedia.org/wiki/Vms[VMS] operating system.
[options="header"]
|===

View File

@ -1,5 +1,5 @@
/*
Copyright Rene Rivera 2015-2025
Copyright Rene Rivera 2015-2016
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
@ -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,16,0)
#define BOOST_PREDEF_VERSION BOOST_VERSION_NUMBER(1,14,0)
#endif

View File

@ -1,39 +1,39 @@
# Copyright Rene Rivera 2011-2023
# Copyright Rene Rivera 2011-2019
# 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-search ../tools/check ;
import predef : require check : predef-require predef-check ;
import ../tools/check/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>../include/boost/predef.h
<dependency>$(PREDEF_H)
;
using testing ;
alias predef-info-c :
[ run info_as_c.c : : : <test-info>always_show_run_output ]
;
alias predef-info-cpp :
test-suite predef-info :
[ run info_as_cpp.cpp : : : <test-info>always_show_run_output ]
[ 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-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 * )
}
}
alias predef :
test-suite predef :
[ run version.cpp ]
[ run make.cpp ]
[ compile macos_endian.c : [ predef-require "BOOST_OS_MACOS" : cpp ] ]
@ -53,53 +53,54 @@ alias 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 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 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 [ glob-tree-ex ../include/boost/predef : *.h ]
for local h in $(HEADERS)
{
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) ;
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=) ;
}
alias predef-headers-c : $(single_header_c) ;
alias predef-headers-cpp : $(single_header_cpp) ;
alias predef-headers : predef-headers-c predef-headers-cpp ;
test-suite predef-headers : $(single_header_cpp) ;
.file_touch_cmd = [ common.file-touch-command ] ;
rule gen_single_header_c_or_cpp ( target * : source * : properties * )
rule gen_single_header_cpp ( target * : source * : properties * )
{
TEXT on $(target) = "
#include <$(.HEADER($(target[1]:B)))>
typedef char predef_single_header_test;
" ;
HEADER on $(target) = $(.HEADER($(target[1]:B))) ;
}
actions gen_single_header_c_or_cpp
actions gen_single_header_cpp
{
$(.file_touch_cmd) @($(<):<=":>=":O=F:E=$(TEXT))
$(.file_touch_cmd) @($(<):<=":>=":O=F:E=#include <$(HEADER)>)
}
# Minimal testing done for predef for CI. Since
@ -112,14 +113,5 @@ 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,7 +54,6 @@ 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,17 +1,9 @@
# Copyright Rene Rivera 2015-2023
# Copyright Rene Rivera 2015
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
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 ;
}
}
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 ;

View File

@ -1,4 +1,4 @@
# Copyright Rene Rivera 2015-2023
# Copyright Rene Rivera 2015
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
@ -31,7 +31,6 @@ 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 ;
@ -70,31 +69,6 @@ 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 ;
@ -114,7 +88,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 ;
= $(predef_jam:D)/../../include $(BOOST_ROOT) ;
obj predef_check_cc_$(key)
: $(source_path)
: <include>$(include_path) $(requirements) ;
@ -138,7 +112,6 @@ local rule change_term_to_def ( term )
class check-expression-evaluator
{
import configure ;
import property ;
rule __init__ ( expression + : true-properties * : false-properties * )
{
@ -182,22 +155,14 @@ 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"
{
result = $(self.true-properties) ;
return $(self.true-properties) ;
}
else
{
result = $(self.false-properties) ;
return $(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,33 +12,31 @@ 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 1/2.."
echo ">>>>> APT: UPDATE.."
echo ">>>>>"
${SUDO} apt-get ${APT_OPT} update
echo ">>>>>"
echo ">>>>> APT: INSTALL 1/2: wget.."
echo ">>>>>"
${SUDO} apt-get ${APT_OPT} install wget
${SUDO} apt-get -o Acquire::Retries=3 update
echo ">>>>>"
echo ">>>>> APT: REPO.."
echo ">>>>>"
${SUDO} apt-get ${APT_OPT} install software-properties-common
${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
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 2/2.."
echo ">>>>> APT: UPDATE.."
echo ">>>>>"
${SUDO} apt-get ${APT_OPT} update
${SUDO} apt-get -o Acquire::Retries=3 update
echo ">>>>>"
echo ">>>>> APT: INSTALL 2/2: ${PACKAGES}.."
echo ">>>>> APT: INSTALL ${PACKAGES}.."
echo ">>>>>"
${SUDO} apt-get ${APT_OPT} install ${PACKAGES}
${SUDO} apt-get -o Acquire::Retries=3 -yq --no-install-suggests --no-install-recommends install ${PACKAGES}
# Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying