mirror of
https://github.com/boostorg/mpl.git
synced 2026-08-07 14:14:24 +02:00
Compare commits
16 Commits
boost-1.87.0
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| 2358570f2d | |||
| 02ec362f5c | |||
| 4b8160057a | |||
| 03869de68e | |||
| 74d927f984 | |||
| aa3b1c464d | |||
| 7df84b35eb | |||
| cd74f40d46 | |||
| 502078c91d | |||
| 2b7937ac6f | |||
| 6172029f82 | |||
| d223d3cd60 | |||
| bace27426e | |||
| c8a1f64ff6 | |||
| 4b34fa1378 | |||
| bf4a5afb3c |
+6
-24
@@ -33,6 +33,12 @@ branches:
|
|||||||
- /fix\/.*/
|
- /fix\/.*/
|
||||||
- /pr\/.*/
|
- /pr\/.*/
|
||||||
|
|
||||||
|
skip_commits:
|
||||||
|
files:
|
||||||
|
- LICENSE
|
||||||
|
- meta/*
|
||||||
|
- README.md
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
fast_finish: false
|
fast_finish: false
|
||||||
# Adding MAYFAIL to any matrix job allows it to fail but the build stays green:
|
# Adding MAYFAIL to any matrix job allows it to fail but the build stays green:
|
||||||
@@ -64,16 +70,6 @@ environment:
|
|||||||
B2_CXXSTD: 14,17
|
B2_CXXSTD: 14,17
|
||||||
B2_TOOLSET: msvc-14.1
|
B2_TOOLSET: msvc-14.1
|
||||||
|
|
||||||
- FLAVOR: clang-cl
|
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
|
||||||
B2_ADDRESS_MODEL: 64
|
|
||||||
B2_CXXSTD: 11,14,17
|
|
||||||
B2_TOOLSET: clang-win
|
|
||||||
|
|
||||||
- FLAVOR: Visual Studio 2015, 2013
|
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
|
||||||
B2_TOOLSET: msvc-12.0,msvc-14.0
|
|
||||||
|
|
||||||
- FLAVOR: cygwin (32-bit)
|
- FLAVOR: cygwin (32-bit)
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
ADDPATH: C:\cygwin\bin;
|
ADDPATH: C:\cygwin\bin;
|
||||||
@@ -88,20 +84,6 @@ environment:
|
|||||||
B2_CXXSTD: 03,11,14,1z
|
B2_CXXSTD: 03,11,14,1z
|
||||||
B2_TOOLSET: gcc
|
B2_TOOLSET: gcc
|
||||||
|
|
||||||
- FLAVOR: mingw32
|
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
|
||||||
B2_ADDRESS_MODEL: 32
|
|
||||||
ADDPATH: C:\mingw\bin;
|
|
||||||
B2_CXXSTD: 03,11,14,1z
|
|
||||||
B2_TOOLSET: gcc
|
|
||||||
|
|
||||||
- FLAVOR: mingw64
|
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
||||||
ADDPATH: C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;
|
|
||||||
B2_ADDRESS_MODEL: 64
|
|
||||||
B2_CXXSTD: 03,11,14,17,2a
|
|
||||||
B2_TOOLSET: gcc
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- git clone --depth 1 https://github.com/boostorg/boost-ci.git C:\boost-ci-cloned
|
- git clone --depth 1 https://github.com/boostorg/boost-ci.git C:\boost-ci-cloned
|
||||||
# Copy ci folder if not testing Boost.CI
|
# Copy ci folder if not testing Boost.CI
|
||||||
|
|||||||
+31
-609
@@ -1,4 +1,20 @@
|
|||||||
name: CI
|
#
|
||||||
|
# Copyright 2020-2021 Peter Dimov
|
||||||
|
# Copyright 2021 Andrey Semashev
|
||||||
|
# Copyright 2021-2024 Alexander Grund
|
||||||
|
# Copyright 2022-2025 James E. King III
|
||||||
|
#
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||||
|
#
|
||||||
|
# This workflow uses the Boost.CI reusable workflow which builds a variety of
|
||||||
|
# configurations of your project, runs tests, and generates code coverage reports.
|
||||||
|
#
|
||||||
|
# To use it, copy this file into your repository as `.github/workflows/ci.yml` and
|
||||||
|
# customize it appropriately.
|
||||||
|
#
|
||||||
|
---
|
||||||
|
name: Boost.CI
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
@@ -6,614 +22,20 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
|
- bugfix/**
|
||||||
- feature/**
|
- feature/**
|
||||||
|
- fix/**
|
||||||
env:
|
- pr/**
|
||||||
UBSAN_OPTIONS: print_stacktrace=1
|
paths-ignore:
|
||||||
|
- LICENSE
|
||||||
|
- meta/**
|
||||||
|
- README.md
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
posix:
|
call-boost-ci:
|
||||||
strategy:
|
name: Run Boost.CI
|
||||||
fail-fast: false
|
uses: boostorg/boost-ci/.github/workflows/reusable.yml@master
|
||||||
matrix:
|
secrets:
|
||||||
include:
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
||||||
- toolset: gcc-4.8
|
COVERITY_SCAN_NOTIFICATION_EMAIL: ${{ secrets.COVERITY_SCAN_NOTIFICATION_EMAIL }}
|
||||||
cxxstd: "03,11"
|
COVERITY_SCAN_TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
|
||||||
container: ubuntu:18.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: g++-4.8
|
|
||||||
- toolset: gcc-5
|
|
||||||
cxxstd: "03,11,14,1z"
|
|
||||||
container: ubuntu:18.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: g++-5
|
|
||||||
- toolset: gcc-6
|
|
||||||
cxxstd: "03,11,14,1z"
|
|
||||||
container: ubuntu:18.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: g++-6
|
|
||||||
- toolset: gcc-7
|
|
||||||
cxxstd: "03,11,14,17"
|
|
||||||
container: ubuntu:18.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
- toolset: gcc-8
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
os: ubuntu-20.04
|
|
||||||
install: g++-8
|
|
||||||
- toolset: gcc-9
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
os: ubuntu-20.04
|
|
||||||
- toolset: gcc-10
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
os: ubuntu-20.04
|
|
||||||
install: g++-10
|
|
||||||
- toolset: gcc-11
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
os: ubuntu-22.04
|
|
||||||
- toolset: gcc-12
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
os: ubuntu-22.04
|
|
||||||
install: g++-12
|
|
||||||
- toolset: gcc-13
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
container: ubuntu:23.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: g++-13
|
|
||||||
- toolset: gcc-14
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
container: ubuntu:24.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: g++-14
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-3.9
|
|
||||||
cxxstd: "03,11,14"
|
|
||||||
container: ubuntu:18.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: clang-3.9
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-4.0
|
|
||||||
cxxstd: "03,11,14"
|
|
||||||
container: ubuntu:18.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: clang-4.0
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-5.0
|
|
||||||
cxxstd: "03,11,14,1z"
|
|
||||||
container: ubuntu:18.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: clang-5.0
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-6.0
|
|
||||||
cxxstd: "03,11,14,17"
|
|
||||||
os: ubuntu-20.04
|
|
||||||
install: clang-6.0
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-7
|
|
||||||
cxxstd: "03,11,14,17"
|
|
||||||
os: ubuntu-20.04
|
|
||||||
install: clang-7
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-8
|
|
||||||
cxxstd: "03,11,14,17"
|
|
||||||
os: ubuntu-20.04
|
|
||||||
install: clang-8
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-9
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
os: ubuntu-20.04
|
|
||||||
install: clang-9
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-10
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
os: ubuntu-20.04
|
|
||||||
install: clang-10
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-11
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
os: ubuntu-20.04
|
|
||||||
install: clang-11
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-12
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
os: ubuntu-20.04
|
|
||||||
install: clang-12
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-13
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
container: ubuntu:22.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: clang-13
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-14
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
container: ubuntu:22.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: clang-14
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-15
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
container: ubuntu:22.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: clang-15
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-16
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
container: ubuntu:23.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: clang-16
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-17
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
container: ubuntu:23.10
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: clang-17
|
|
||||||
- toolset: clang
|
|
||||||
compiler: clang++-18
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
container: ubuntu:24.04
|
|
||||||
os: ubuntu-latest
|
|
||||||
install: clang-18
|
|
||||||
- toolset: clang
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
os: macos-12
|
|
||||||
- toolset: clang
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
os: macos-13
|
|
||||||
- toolset: clang
|
|
||||||
cxxstd: "03,11,14,17,20,2b"
|
|
||||||
os: macos-14
|
|
||||||
|
|
||||||
runs-on: ${{matrix.os}}
|
|
||||||
container: ${{matrix.container}}
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup container environment
|
|
||||||
if: matrix.container
|
|
||||||
run: |
|
|
||||||
apt-get update
|
|
||||||
apt-get -y install sudo python3 git g++
|
|
||||||
|
|
||||||
- name: Install packages
|
|
||||||
if: matrix.install
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get -y install ${{matrix.install}}
|
|
||||||
|
|
||||||
- name: Setup Boost
|
|
||||||
run: |
|
|
||||||
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
|
|
||||||
LIBRARY=${GITHUB_REPOSITORY#*/}
|
|
||||||
echo LIBRARY: $LIBRARY
|
|
||||||
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
|
|
||||||
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
|
|
||||||
echo GITHUB_REF: $GITHUB_REF
|
|
||||||
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
|
|
||||||
REF=${REF#refs/heads/}
|
|
||||||
echo REF: $REF
|
|
||||||
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
|
|
||||||
echo BOOST_BRANCH: $BOOST_BRANCH
|
|
||||||
cd ..
|
|
||||||
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
|
|
||||||
cd boost-root
|
|
||||||
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
|
|
||||||
git submodule update --init tools/boostdep
|
|
||||||
python3 tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
|
|
||||||
./bootstrap.sh
|
|
||||||
./b2 -d0 headers
|
|
||||||
|
|
||||||
- name: Create user-config.jam
|
|
||||||
if: matrix.compiler
|
|
||||||
run: |
|
|
||||||
echo "using ${{matrix.toolset}} : : ${{matrix.compiler}} ;" > ~/user-config.jam
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: |
|
|
||||||
cd ../boost-root
|
|
||||||
./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} variant=debug,release
|
|
||||||
|
|
||||||
windows:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- toolset: msvc-14.0
|
|
||||||
cxxstd: "14,latest"
|
|
||||||
addrmd: 32,64
|
|
||||||
os: windows-2019
|
|
||||||
- toolset: msvc-14.2
|
|
||||||
cxxstd: "14,17,20,latest"
|
|
||||||
addrmd: 32,64
|
|
||||||
os: windows-2019
|
|
||||||
- toolset: msvc-14.3
|
|
||||||
cxxstd: "14,17,20,latest"
|
|
||||||
addrmd: 32,64
|
|
||||||
os: windows-2022
|
|
||||||
- toolset: clang-win
|
|
||||||
cxxstd: "14,17,20,latest"
|
|
||||||
addrmd: 32,64
|
|
||||||
os: windows-2022
|
|
||||||
- toolset: gcc
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
addrmd: 64
|
|
||||||
os: windows-2019
|
|
||||||
|
|
||||||
runs-on: ${{matrix.os}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup Boost
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
|
|
||||||
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
|
|
||||||
echo LIBRARY: %LIBRARY%
|
|
||||||
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
|
|
||||||
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
|
|
||||||
echo GITHUB_REF: %GITHUB_REF%
|
|
||||||
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
|
|
||||||
set BOOST_BRANCH=develop
|
|
||||||
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
|
|
||||||
echo BOOST_BRANCH: %BOOST_BRANCH%
|
|
||||||
cd ..
|
|
||||||
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
|
|
||||||
cd boost-root
|
|
||||||
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
|
|
||||||
git submodule update --init tools/boostdep
|
|
||||||
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
|
|
||||||
cmd /c bootstrap
|
|
||||||
b2 -d0 headers
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root
|
|
||||||
b2 -j3 libs/%LIBRARY%/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model=${{matrix.addrmd}} variant=debug,release embed-manifest-via=linker
|
|
||||||
|
|
||||||
posix-cmake-subdir:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: ubuntu-20.04
|
|
||||||
- os: ubuntu-22.04
|
|
||||||
- os: macos-12
|
|
||||||
- os: macos-13
|
|
||||||
- os: macos-14
|
|
||||||
|
|
||||||
runs-on: ${{matrix.os}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install packages
|
|
||||||
if: matrix.install
|
|
||||||
run: sudo apt install ${{matrix.install}}
|
|
||||||
|
|
||||||
- name: Setup Boost
|
|
||||||
run: |
|
|
||||||
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
|
|
||||||
LIBRARY=${GITHUB_REPOSITORY#*/}
|
|
||||||
echo LIBRARY: $LIBRARY
|
|
||||||
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
|
|
||||||
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
|
|
||||||
echo GITHUB_REF: $GITHUB_REF
|
|
||||||
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
|
|
||||||
REF=${REF#refs/heads/}
|
|
||||||
echo REF: $REF
|
|
||||||
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
|
|
||||||
echo BOOST_BRANCH: $BOOST_BRANCH
|
|
||||||
cd ..
|
|
||||||
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
|
|
||||||
cd boost-root
|
|
||||||
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
|
|
||||||
git submodule update --init tools/boostdep
|
|
||||||
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
|
|
||||||
|
|
||||||
- name: Use library with add_subdirectory
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/libs/$LIBRARY/test/cmake_subdir_test
|
|
||||||
mkdir __build__ && cd __build__
|
|
||||||
cmake ..
|
|
||||||
cmake --build .
|
|
||||||
ctest --output-on-failure --no-tests=error
|
|
||||||
|
|
||||||
posix-cmake-install:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: ubuntu-20.04
|
|
||||||
- os: ubuntu-22.04
|
|
||||||
- os: macos-12
|
|
||||||
- os: macos-13
|
|
||||||
- os: macos-14
|
|
||||||
|
|
||||||
runs-on: ${{matrix.os}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install packages
|
|
||||||
if: matrix.install
|
|
||||||
run: sudo apt install ${{matrix.install}}
|
|
||||||
|
|
||||||
- name: Setup Boost
|
|
||||||
run: |
|
|
||||||
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
|
|
||||||
LIBRARY=${GITHUB_REPOSITORY#*/}
|
|
||||||
echo LIBRARY: $LIBRARY
|
|
||||||
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
|
|
||||||
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
|
|
||||||
echo GITHUB_REF: $GITHUB_REF
|
|
||||||
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
|
|
||||||
REF=${REF#refs/heads/}
|
|
||||||
echo REF: $REF
|
|
||||||
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
|
|
||||||
echo BOOST_BRANCH: $BOOST_BRANCH
|
|
||||||
cd ..
|
|
||||||
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
|
|
||||||
cd boost-root
|
|
||||||
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
|
|
||||||
git submodule update --init tools/boostdep
|
|
||||||
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
|
|
||||||
|
|
||||||
- name: Configure
|
|
||||||
run: |
|
|
||||||
cd ../boost-root
|
|
||||||
mkdir __build__ && cd __build__
|
|
||||||
cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DCMAKE_INSTALL_PREFIX=~/.local ..
|
|
||||||
|
|
||||||
- name: Install
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/__build__
|
|
||||||
cmake --build . --target install
|
|
||||||
|
|
||||||
- name: Use the installed library
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/libs/$LIBRARY/test/cmake_install_test && mkdir __build__ && cd __build__
|
|
||||||
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
|
|
||||||
cmake --build .
|
|
||||||
ctest --output-on-failure --no-tests=error
|
|
||||||
|
|
||||||
posix-cmake-test:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: ubuntu-20.04
|
|
||||||
- os: ubuntu-22.04
|
|
||||||
- os: macos-12
|
|
||||||
- os: macos-13
|
|
||||||
- os: macos-14
|
|
||||||
|
|
||||||
runs-on: ${{matrix.os}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install packages
|
|
||||||
if: matrix.install
|
|
||||||
run: sudo apt install ${{matrix.install}}
|
|
||||||
|
|
||||||
- name: Setup Boost
|
|
||||||
run: |
|
|
||||||
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
|
|
||||||
LIBRARY=${GITHUB_REPOSITORY#*/}
|
|
||||||
echo LIBRARY: $LIBRARY
|
|
||||||
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
|
|
||||||
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
|
|
||||||
echo GITHUB_REF: $GITHUB_REF
|
|
||||||
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
|
|
||||||
REF=${REF#refs/heads/}
|
|
||||||
echo REF: $REF
|
|
||||||
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
|
|
||||||
echo BOOST_BRANCH: $BOOST_BRANCH
|
|
||||||
cd ..
|
|
||||||
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
|
|
||||||
cd boost-root
|
|
||||||
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
|
|
||||||
git submodule update --init tools/boostdep
|
|
||||||
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
|
|
||||||
|
|
||||||
- name: Configure
|
|
||||||
run: |
|
|
||||||
cd ../boost-root
|
|
||||||
mkdir __build__ && cd __build__
|
|
||||||
cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DBUILD_TESTING=ON ..
|
|
||||||
|
|
||||||
- name: Build tests
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/__build__
|
|
||||||
cmake --build . --target tests
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/__build__
|
|
||||||
ctest --output-on-failure --no-tests=error
|
|
||||||
|
|
||||||
windows-cmake-subdir:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: windows-2019
|
|
||||||
- os: windows-2022
|
|
||||||
|
|
||||||
runs-on: ${{matrix.os}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup Boost
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
|
|
||||||
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
|
|
||||||
echo LIBRARY: %LIBRARY%
|
|
||||||
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
|
|
||||||
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
|
|
||||||
echo GITHUB_REF: %GITHUB_REF%
|
|
||||||
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
|
|
||||||
set BOOST_BRANCH=develop
|
|
||||||
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
|
|
||||||
echo BOOST_BRANCH: %BOOST_BRANCH%
|
|
||||||
cd ..
|
|
||||||
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
|
|
||||||
cd boost-root
|
|
||||||
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
|
|
||||||
git submodule update --init tools/boostdep
|
|
||||||
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
|
|
||||||
|
|
||||||
- name: Use library with add_subdirectory (Debug)
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/libs/%LIBRARY%/test/cmake_subdir_test
|
|
||||||
mkdir __build__ && cd __build__
|
|
||||||
cmake ..
|
|
||||||
cmake --build . --config Debug
|
|
||||||
ctest --output-on-failure --no-tests=error -C Debug
|
|
||||||
|
|
||||||
- name: Use library with add_subdirectory (Release)
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/libs/%LIBRARY%/test/cmake_subdir_test/__build__
|
|
||||||
cmake --build . --config Release
|
|
||||||
ctest --output-on-failure --no-tests=error -C Release
|
|
||||||
|
|
||||||
windows-cmake-install:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: windows-2019
|
|
||||||
- os: windows-2022
|
|
||||||
|
|
||||||
runs-on: ${{matrix.os}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup Boost
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
|
|
||||||
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
|
|
||||||
echo LIBRARY: %LIBRARY%
|
|
||||||
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
|
|
||||||
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
|
|
||||||
echo GITHUB_REF: %GITHUB_REF%
|
|
||||||
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
|
|
||||||
set BOOST_BRANCH=develop
|
|
||||||
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
|
|
||||||
echo BOOST_BRANCH: %BOOST_BRANCH%
|
|
||||||
cd ..
|
|
||||||
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
|
|
||||||
cd boost-root
|
|
||||||
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
|
|
||||||
git submodule update --init tools/boostdep
|
|
||||||
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
|
|
||||||
|
|
||||||
- name: Configure
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root
|
|
||||||
mkdir __build__ && cd __build__
|
|
||||||
cmake -DBOOST_INCLUDE_LIBRARIES=%LIBRARY% -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix ..
|
|
||||||
|
|
||||||
- name: Install (Debug)
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/__build__
|
|
||||||
cmake --build . --target install --config Debug
|
|
||||||
|
|
||||||
- name: Install (Release)
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/__build__
|
|
||||||
cmake --build . --target install --config Release
|
|
||||||
|
|
||||||
- name: Use the installed library (Debug)
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/libs/%LIBRARY%/test/cmake_install_test && mkdir __build__ && cd __build__
|
|
||||||
cmake -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix ..
|
|
||||||
cmake --build . --config Debug
|
|
||||||
ctest --output-on-failure --no-tests=error -C Debug
|
|
||||||
|
|
||||||
- name: Use the installed library (Release)
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/libs/%LIBRARY%/test/cmake_install_test/__build__
|
|
||||||
cmake --build . --config Release
|
|
||||||
ctest --output-on-failure --no-tests=error -C Release
|
|
||||||
|
|
||||||
windows-cmake-test:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: windows-2019
|
|
||||||
- os: windows-2022
|
|
||||||
|
|
||||||
runs-on: ${{matrix.os}}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup Boost
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
|
|
||||||
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
|
|
||||||
echo LIBRARY: %LIBRARY%
|
|
||||||
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
|
|
||||||
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
|
|
||||||
echo GITHUB_REF: %GITHUB_REF%
|
|
||||||
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
|
|
||||||
set BOOST_BRANCH=develop
|
|
||||||
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
|
|
||||||
echo BOOST_BRANCH: %BOOST_BRANCH%
|
|
||||||
cd ..
|
|
||||||
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
|
|
||||||
cd boost-root
|
|
||||||
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
|
|
||||||
git submodule update --init tools/boostdep
|
|
||||||
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
|
|
||||||
|
|
||||||
- name: Configure
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root
|
|
||||||
mkdir __build__ && cd __build__
|
|
||||||
cmake -DBOOST_INCLUDE_LIBRARIES=%LIBRARY% -DBUILD_TESTING=ON ..
|
|
||||||
|
|
||||||
- name: Build tests (Debug)
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/__build__
|
|
||||||
cmake --build . --target tests --config Debug
|
|
||||||
|
|
||||||
- name: Run tests (Debug)
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/__build__
|
|
||||||
ctest --output-on-failure --no-tests=error -C Debug
|
|
||||||
|
|
||||||
- name: Build tests (Release)
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/__build__
|
|
||||||
cmake --build . --target tests --config Release
|
|
||||||
|
|
||||||
- name: Run tests (Release)
|
|
||||||
shell: cmd
|
|
||||||
run: |
|
|
||||||
cd ../boost-root/__build__
|
|
||||||
ctest --output-on-failure --no-tests=error -C Release
|
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
# Boost.MPL Library Jamfile
|
|
||||||
#
|
|
||||||
# Copyright (c) 2018 James E. King III
|
|
||||||
#
|
|
||||||
# Use, modification, and distribution are subject to the
|
|
||||||
# Boost Software License, Version 1.0. (See accompanying file
|
|
||||||
# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
# please order by name to ease maintenance
|
|
||||||
build-project example ;
|
|
||||||
build-project test ;
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
MPL, part of collection of the [Boost C++ Libraries](http://github.com/boostorg), provides a general-purpose, high-level C++ template metaprogramming framework of compile-time algorithms, sequences and metafunctions.
|
MPL, part of collection of the [Boost C++ Libraries](https://github.com/boostorg), provides a general-purpose, high-level C++ template metaprogramming framework of compile-time algorithms, sequences and metafunctions.
|
||||||
|
|
||||||
### License
|
### License
|
||||||
|
|
||||||
Distributed under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).
|
Distributed under the [Boost Software License, Version 1.0](https://www.boost.org/LICENSE_1_0.txt).
|
||||||
|
|
||||||
### Properties
|
### Properties
|
||||||
|
|
||||||
@@ -11,10 +11,11 @@ Distributed under the [Boost Software License, Version 1.0](http://www.boost.org
|
|||||||
|
|
||||||
### Build Status
|
### Build Status
|
||||||
|
|
||||||
Branch | GHA CI | Appveyor | Coverity Scan | codecov.io | Deps | Docs | Tests |
|
<!-- boost-ci/tools/makebadges.sh --project mpl --appveyor 49kygihpsvv2sps0 --codecov 31bBblRchG --coverity 15866 -->
|
||||||
:-------------: | ------ | -------- | ------------- | ---------- | ---- | ---- | ----- |
|
| Branch | GHA CI | Appveyor | Coverity Scan | codecov.io | Deps | Docs | Tests |
|
||||||
[`master`](https://github.com/boostorg/mpl/tree/master) | [](https://github.com/boostorg/mpl/actions?query=branch:master) | [](https://ci.appveyor.com/project/jeking3/mpl-nrhfm/branch/master) | [](https://scan.coverity.com/projects/boostorg-mpl) | [](https://codecov.io/gh/boostorg/mpl/branch/master)| [](https://pdimov.github.io/boostdep-report/master/mpl.html) | [](https://www.boost.org/doc/libs/master/libs/mpl/doc/index.html) | [](http://www.boost.org/development/tests/master/developer/mpl.html)
|
| :-------------: | ------ | -------- | ------------- | ---------- | ---- | ---- | ----- |
|
||||||
[`develop`](https://github.com/boostorg/mpl/tree/develop) | [](https://github.com/boostorg/mpl/actions?query=branch:develop) | [](https://ci.appveyor.com/project/jeking3/mpl-nrhfm/branch/develop) | [](https://scan.coverity.com/projects/boostorg-mpl) | [](https://codecov.io/gh/boostorg/mpl/branch/develop) | [](https://pdimov.github.io/boostdep-report/develop/mpl.html) | [](https://www.boost.org/doc/libs/develop/libs/mpl/doc/index.html) | [](http://www.boost.org/development/tests/develop/developer/mpl.html)
|
| [`master`](https://github.com/boostorg/mpl/tree/master) | [](https://github.com/boostorg/mpl/actions?query=branch:master) | [](https://ci.appveyor.com/project/cppalliance/mpl/branch/master) | [](https://scan.coverity.com/projects/boostorg-mpl) | [](https://codecov.io/gh/boostorg/mpl/tree/master) | [](https://pdimov.github.io/boostdep-report/master/mpl.html) | [](https://www.boost.org/doc/libs/master/libs/mpl) | [](https://www.boost.org/development/tests/master/developer/mpl.html)
|
||||||
|
| [`develop`](https://github.com/boostorg/mpl/tree/develop) | [](https://github.com/boostorg/mpl/actions?query=branch:develop) | [](https://ci.appveyor.com/project/cppalliance/mpl/branch/develop) | [](https://scan.coverity.com/projects/boostorg-mpl) | [](https://codecov.io/gh/boostorg/mpl/tree/develop) | [](https://pdimov.github.io/boostdep-report/develop/mpl.html) | [](https://www.boost.org/doc/libs/develop/libs/mpl) | [](https://www.boost.org/development/tests/develop/developer/mpl.html)
|
||||||
|
|
||||||
### Directories
|
### Directories
|
||||||
|
|
||||||
@@ -27,8 +28,8 @@ Branch | GHA CI | Appveyor | Coverity Scan | codecov.io | Deps | Docs |
|
|||||||
|
|
||||||
### More information
|
### More information
|
||||||
|
|
||||||
* [Ask questions](http://stackoverflow.com/questions/ask?tags=c%2B%2B,boost,boost-mpl)
|
* [Ask questions](https://stackoverflow.com/questions/ask?tags=c%2B%2B,boost,boost-mpl)
|
||||||
* [Report bugs](https://github.com/boostorg/mpl/issues): Be sure to mention Boost version, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well.
|
* [Report bugs](https://github.com/boostorg/mpl/issues): Be sure to mention Boost version, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well.
|
||||||
* Submit your patches as pull requests against **develop** branch. Note that by submitting patches you agree to license your modifications under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).
|
* Submit your patches as pull requests against **develop** branch. Note that by submitting patches you agree to license your modifications under the [Boost Software License, Version 1.0](https://www.boost.org/LICENSE_1_0.txt).
|
||||||
* Discussions about the library are held on the [Boost developers mailing list](http://www.boost.org/community/groups.html#main). Be sure to read the [discussion policy](http://www.boost.org/community/policy.html) before posting and add the `[mpl]` tag at the beginning of the subject line.
|
* Discussions about the library are held on the [Boost developers mailing list](https://www.boost.org/community/groups.html#main). Be sure to read the [discussion policy](https://www.boost.org/community/policy.html) before posting and add the `[mpl]` tag at the beginning of the subject line.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# Copyright René Ferdinand Rivera Morell 2023-2024
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
require-b2 5.2 ;
|
||||||
|
|
||||||
|
constant boost_dependencies :
|
||||||
|
/boost/config//boost_config
|
||||||
|
/boost/core//boost_core
|
||||||
|
/boost/predef//boost_predef
|
||||||
|
/boost/preprocessor//boost_preprocessor
|
||||||
|
/boost/static_assert//boost_static_assert
|
||||||
|
/boost/type_traits//boost_type_traits
|
||||||
|
/boost/utility//boost_utility ;
|
||||||
|
|
||||||
|
project /boost/mpl
|
||||||
|
: common-requirements
|
||||||
|
<include>include
|
||||||
|
;
|
||||||
|
|
||||||
|
explicit
|
||||||
|
[ alias boost_mpl : : : : <library>$(boost_dependencies) ]
|
||||||
|
[ alias all : boost_mpl example test ]
|
||||||
|
;
|
||||||
|
|
||||||
|
call-if : boost-library mpl
|
||||||
|
;
|
||||||
|
|
||||||
+3
-1
@@ -7,9 +7,11 @@
|
|||||||
|
|
||||||
import testing ;
|
import testing ;
|
||||||
|
|
||||||
|
project : requirements <library>/boost/mpl//boost_mpl ;
|
||||||
|
|
||||||
test-suite "mpl-examples"
|
test-suite "mpl-examples"
|
||||||
: [ run inherit_linearly.cpp ]
|
: [ run inherit_linearly.cpp ]
|
||||||
[ compile integer.cpp ]
|
[ compile integer.cpp ]
|
||||||
[ run tuple_from_list.cpp ]
|
[ run tuple_from_list.cpp : : : <library>/boost/tuple//boost_tuple ]
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -28,26 +28,22 @@
|
|||||||
// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(and)'
|
// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(and)'
|
||||||
// has to be checked in a separate condition, otherwise GCC complains
|
// has to be checked in a separate condition, otherwise GCC complains
|
||||||
// about 'and' being an alternative token
|
// about 'and' being an alternative token
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
#if defined(and)
|
||||||
#if defined(and)
|
|
||||||
# pragma push_macro("and")
|
# pragma push_macro("and")
|
||||||
# undef and
|
# undef and
|
||||||
# define and(x)
|
# define and(x)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
# define BOOST_MPL_PREPROCESSED_HEADER and.hpp
|
# define BOOST_MPL_PREPROCESSED_HEADER and.hpp
|
||||||
# include <boost/mpl/aux_/include_preprocessed.hpp>
|
# include <boost/mpl/aux_/include_preprocessed.hpp>
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
#if defined(and)
|
||||||
#if defined(and)
|
|
||||||
# pragma pop_macro("and")
|
# pragma pop_macro("and")
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
|
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
|
||||||
# include <boost/mpl/assert.hpp>
|
# include <boost/mpl/assert.hpp>
|
||||||
# define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
|
# define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
|
||||||
BOOST_MPL_ASSERT_NOT((boost::mpl::is_na<type>)) \
|
BOOST_MPL_ASSERT_NOT((boost::mpl::is_na<x>)) \
|
||||||
/**/
|
/**/
|
||||||
#else
|
#else
|
||||||
# include <boost/static_assert.hpp>
|
# include <boost/static_assert.hpp>
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
namespace boost { namespace mpl { namespace aux {
|
namespace boost { namespace mpl { namespace aux {
|
||||||
|
|
||||||
template< typename T > static T const& ptr_to_ref(T*);
|
template< typename T > T const& ptr_to_ref(T*);
|
||||||
|
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
|
|||||||
@@ -19,27 +19,23 @@
|
|||||||
// macros, see http://tinyurl.com/ycwdxco; 'defined(bitand)'
|
// macros, see http://tinyurl.com/ycwdxco; 'defined(bitand)'
|
||||||
// has to be checked in a separate condition, otherwise GCC complains
|
// has to be checked in a separate condition, otherwise GCC complains
|
||||||
// about 'bitand' being an alternative token
|
// about 'bitand' being an alternative token
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(bitand)
|
#if defined(bitand)
|
||||||
# pragma push_macro("bitand")
|
# pragma push_macro("bitand")
|
||||||
# undef bitand
|
# undef bitand
|
||||||
# define bitand(x)
|
# define bitand(x)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#define AUX778076_OP_NAME bitand_
|
#define AUX778076_OP_NAME bitand_
|
||||||
#define AUX778076_OP_PREFIX bitand
|
#define AUX778076_OP_PREFIX bitand
|
||||||
#define AUX778076_OP_TOKEN &
|
#define AUX778076_OP_TOKEN &
|
||||||
#include <boost/mpl/aux_/arithmetic_op.hpp>
|
#include <boost/mpl/aux_/arithmetic_op.hpp>
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(bitand)
|
#if defined(bitand)
|
||||||
# pragma pop_macro("bitand")
|
# pragma pop_macro("bitand")
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // BOOST_MPL_BITAND_HPP_INCLUDED
|
#endif // BOOST_MPL_BITAND_HPP_INCLUDED
|
||||||
|
|||||||
@@ -19,27 +19,23 @@
|
|||||||
// macros, see http://tinyurl.com/ycwdxco; 'defined(bitor)'
|
// macros, see http://tinyurl.com/ycwdxco; 'defined(bitor)'
|
||||||
// has to be checked in a separate condition, otherwise GCC complains
|
// has to be checked in a separate condition, otherwise GCC complains
|
||||||
// about 'bitor' being an alternative token
|
// about 'bitor' being an alternative token
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(bitor)
|
#if defined(bitor)
|
||||||
# pragma push_macro("bitor")
|
# pragma push_macro("bitor")
|
||||||
# undef bitor
|
# undef bitor
|
||||||
# define bitor(x)
|
# define bitor(x)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#define AUX778076_OP_NAME bitor_
|
#define AUX778076_OP_NAME bitor_
|
||||||
#define AUX778076_OP_PREFIX bitor
|
#define AUX778076_OP_PREFIX bitor
|
||||||
#define AUX778076_OP_TOKEN |
|
#define AUX778076_OP_TOKEN |
|
||||||
#include <boost/mpl/aux_/arithmetic_op.hpp>
|
#include <boost/mpl/aux_/arithmetic_op.hpp>
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(bitor)
|
#if defined(bitor)
|
||||||
# pragma pop_macro("bitor")
|
# pragma pop_macro("bitor")
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // BOOST_MPL_BITOR_HPP_INCLUDED
|
#endif // BOOST_MPL_BITOR_HPP_INCLUDED
|
||||||
|
|||||||
@@ -29,26 +29,22 @@
|
|||||||
// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(or)'
|
// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(or)'
|
||||||
// has to be checked in a separate condition, otherwise GCC complains
|
// has to be checked in a separate condition, otherwise GCC complains
|
||||||
// about 'or' being an alternative token
|
// about 'or' being an alternative token
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(or)
|
#if defined(or)
|
||||||
# pragma push_macro("or")
|
# pragma push_macro("or")
|
||||||
# undef or
|
# undef or
|
||||||
# define or(x)
|
# define or(x)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
# define BOOST_MPL_PREPROCESSED_HEADER or.hpp
|
# define BOOST_MPL_PREPROCESSED_HEADER or.hpp
|
||||||
# include <boost/mpl/aux_/include_preprocessed.hpp>
|
# include <boost/mpl/aux_/include_preprocessed.hpp>
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(or)
|
#if defined(or)
|
||||||
# pragma pop_macro("or")
|
# pragma pop_macro("or")
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ Pre-processing of MPL-containers can be accomplished using the script
|
|||||||
"boost_mpl_preprocess.py". In the simple case call it with a single
|
"boost_mpl_preprocess.py". In the simple case call it with a single
|
||||||
argument which is the path to the source-directory of Boost.
|
argument which is the path to the source-directory of Boost.
|
||||||
|
|
||||||
python boost_mpl_preprocess.py <path-to-boost-sourcedir>
|
python3 boost_mpl_preprocess.py <path-to-boost-sourcedir>
|
||||||
|
|
||||||
If the Boost source-directory is the one this script resides in, you
|
If the Boost source-directory is the one this script resides in, you
|
||||||
can just call it without any arguments.
|
can just call it without any arguments.
|
||||||
|
|
||||||
python boost_mpl_preprocess.py
|
python3 boost_mpl_preprocess.py
|
||||||
|
|
||||||
Either way, this will pre-process all four MPL-container types (vector,
|
Either way, this will pre-process all four MPL-container types (vector,
|
||||||
list, set, map) and makes them able to hold up to 100 elements. They can
|
list, set, map) and makes them able to hold up to 100 elements. They can
|
||||||
@@ -22,7 +22,7 @@ be different from the one of other MPL-container types and it can also
|
|||||||
differ between its 'numbered' and 'variadic' form.
|
differ between its 'numbered' and 'variadic' form.
|
||||||
To see all options, call the script like this:
|
To see all options, call the script like this:
|
||||||
|
|
||||||
python boost_mpl_preprocess.py --help
|
python3 boost_mpl_preprocess.py --help
|
||||||
|
|
||||||
|
|
||||||
Fixing pre-processing of MPL-containers
|
Fixing pre-processing of MPL-containers
|
||||||
@@ -44,12 +44,12 @@ can also fix them explicitly by calling "fix_boost_mpl_preprocess.py"
|
|||||||
directly.
|
directly.
|
||||||
If you just want to test if any fixing is needed call it like this:
|
If you just want to test if any fixing is needed call it like this:
|
||||||
|
|
||||||
python fix_boost_mpl_preprocess.py --check-only <path-to-boost-sourcedir>
|
python3 fix_boost_mpl_preprocess.py --check-only <path-to-boost-sourcedir>
|
||||||
|
|
||||||
This will tell you if any fixing is needed. In such a case call the script
|
This will tell you if any fixing is needed. In such a case call the script
|
||||||
"fix_boost_mpl_preprocess.py" like this:
|
"fix_boost_mpl_preprocess.py" like this:
|
||||||
|
|
||||||
python fix_boost_mpl_preprocess.py <path-to-boost-sourcedir>
|
python3 fix_boost_mpl_preprocess.py <path-to-boost-sourcedir>
|
||||||
|
|
||||||
This will fix the header-comments of all the source-files needed during
|
This will fix the header-comments of all the source-files needed during
|
||||||
pre-processing. Calling "boost_mpl_preprocess.py" afterwards should then
|
pre-processing. Calling "boost_mpl_preprocess.py" afterwards should then
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ def create_more_container_files(sourceDir, suffix, maxElements, containers, cont
|
|||||||
newFile = os.path.join( sourceDir, container, container + str(i+10) + suffix )
|
newFile = os.path.join( sourceDir, container, container + str(i+10) + suffix )
|
||||||
shutil.copyfile( os.path.join( sourceDir, container, container + "20" + suffix ), newFile )
|
shutil.copyfile( os.path.join( sourceDir, container, container + "20" + suffix ), newFile )
|
||||||
# Adjust copy of "template"-file accordingly.
|
# Adjust copy of "template"-file accordingly.
|
||||||
for line in fileinput.input( newFile, inplace=1, mode="rU" ):
|
for line in fileinput.input( newFile, inplace=1, mode="r" ):
|
||||||
line = re.sub(r'20', '%TWENTY%', line.rstrip())
|
line = re.sub(r'20', '%TWENTY%', line.rstrip())
|
||||||
line = re.sub(r'11', '%ELEVEN%', line.rstrip())
|
line = re.sub(r'11', '%ELEVEN%', line.rstrip())
|
||||||
line = re.sub(r'10(?![0-9])', '%TEN%', line.rstrip())
|
line = re.sub(r'10(?![0-9])', '%TEN%', line.rstrip())
|
||||||
@@ -43,7 +43,7 @@ def create_more_container_files(sourceDir, suffix, maxElements, containers, cont
|
|||||||
newFile = os.path.join( sourceDir, container, container + str(i+10) + "_c" + suffix )
|
newFile = os.path.join( sourceDir, container, container + str(i+10) + "_c" + suffix )
|
||||||
shutil.copyfile( os.path.join( sourceDir, container, container + "20_c" + suffix ), newFile )
|
shutil.copyfile( os.path.join( sourceDir, container, container + "20_c" + suffix ), newFile )
|
||||||
# Adjust copy of "template"-file accordingly.
|
# Adjust copy of "template"-file accordingly.
|
||||||
for line in fileinput.input( newFile, inplace=1, mode="rU" ):
|
for line in fileinput.input( newFile, inplace=1, mode="r" ):
|
||||||
line = re.sub(r'20', '%TWENTY%', line.rstrip())
|
line = re.sub(r'20', '%TWENTY%', line.rstrip())
|
||||||
line = re.sub(r'11', '%ELEVEN%', line.rstrip())
|
line = re.sub(r'11', '%ELEVEN%', line.rstrip())
|
||||||
line = re.sub(r'10(?![0-9])', '%TEN%', line.rstrip())
|
line = re.sub(r'10(?![0-9])', '%TEN%', line.rstrip())
|
||||||
@@ -73,7 +73,7 @@ def adjust_container_limits_for_variadic_sequences(headerDir, containers, maxEle
|
|||||||
headerFile = os.path.join( headerDir, "limits", container + ".hpp" )
|
headerFile = os.path.join( headerDir, "limits", container + ".hpp" )
|
||||||
regexMatch = r'(define\s+BOOST_MPL_LIMIT_' + container.upper() + r'_SIZE\s+)[0-9]+'
|
regexMatch = r'(define\s+BOOST_MPL_LIMIT_' + container.upper() + r'_SIZE\s+)[0-9]+'
|
||||||
regexReplace = r'\g<1>' + re.escape( str(maxElements) )
|
regexReplace = r'\g<1>' + re.escape( str(maxElements) )
|
||||||
for line in fileinput.input( headerFile, inplace=1, mode="rU" ):
|
for line in fileinput.input( headerFile, inplace=1, mode="r" ):
|
||||||
line = re.sub(regexMatch, regexReplace, line.rstrip())
|
line = re.sub(regexMatch, regexReplace, line.rstrip())
|
||||||
print(line)
|
print(line)
|
||||||
|
|
||||||
@@ -118,6 +118,11 @@ def to_existing_absolute_path(string):
|
|||||||
def main():
|
def main():
|
||||||
"""The main function."""
|
"""The main function."""
|
||||||
|
|
||||||
|
# Determine the currently running python executable.
|
||||||
|
python_executable = sys.executable
|
||||||
|
if python_executable == None or python_executable == "":
|
||||||
|
python_executable = python
|
||||||
|
|
||||||
# Find the current Boost source-directory in which this script is located.
|
# Find the current Boost source-directory in which this script is located.
|
||||||
sourceDir = current_boost_dir()
|
sourceDir = current_boost_dir()
|
||||||
if sourceDir == None:
|
if sourceDir == None:
|
||||||
@@ -150,19 +155,19 @@ def main():
|
|||||||
|
|
||||||
# Some verbose debug output.
|
# Some verbose debug output.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Arguments extracted from command-line:"
|
print("Arguments extracted from command-line:")
|
||||||
print " verbose = ", args.verbose
|
print(" verbose = ", args.verbose)
|
||||||
print " source directory = ", args.sourceDir
|
print(" source directory = ", args.sourceDir)
|
||||||
print " num elements = ", args.numElements
|
print(" num elements = ", args.numElements)
|
||||||
print " sequence type = ", args.seqType
|
print(" sequence type = ", args.seqType)
|
||||||
print " want: vector = ", args.want_vector
|
print(" want: vector = ", args.want_vector)
|
||||||
print " want: list = ", args.want_list
|
print(" want: list = ", args.want_list)
|
||||||
print " want: set = ", args.want_set
|
print(" want: set = ", args.want_set)
|
||||||
print " want: map = ", args.want_map
|
print(" want: map = ", args.want_map)
|
||||||
|
|
||||||
# Verify that we received any source-directory.
|
# Verify that we received any source-directory.
|
||||||
if args.sourceDir == None:
|
if args.sourceDir == None:
|
||||||
print "You should specify a valid path to the Boost source-directory."
|
print("You should specify a valid path to the Boost source-directory.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# The directories for header- and source files of Boost.MPL.
|
# The directories for header- and source files of Boost.MPL.
|
||||||
@@ -177,13 +182,13 @@ def main():
|
|||||||
sourceDir = os.path.join( args.sourceDir, "preprocessed" )
|
sourceDir = os.path.join( args.sourceDir, "preprocessed" )
|
||||||
if not os.path.exists( headerDir ) or not os.path.exists( sourceDir ):
|
if not os.path.exists( headerDir ) or not os.path.exists( sourceDir ):
|
||||||
cmdlineParser.print_usage()
|
cmdlineParser.print_usage()
|
||||||
print "error: Cannot find Boost.MPL header/source files in given Boost source-directory!"
|
print("error: Cannot find Boost.MPL header/source files in given Boost source-directory!")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# Some verbose debug output.
|
# Some verbose debug output.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Chosen header-directory: ", headerDir
|
print("Chosen header-directory: ", headerDir)
|
||||||
print "Chosen source-directory: ", sourceDir
|
print("Chosen source-directory: ", sourceDir)
|
||||||
|
|
||||||
# Create list of containers for which files shall be pre-processed.
|
# Create list of containers for which files shall be pre-processed.
|
||||||
containers = []
|
containers = []
|
||||||
@@ -196,23 +201,23 @@ def main():
|
|||||||
if args.want_map:
|
if args.want_map:
|
||||||
containers.append('map')
|
containers.append('map')
|
||||||
if containers == []:
|
if containers == []:
|
||||||
print "Nothing to do."
|
print("Nothing to do.")
|
||||||
print "(Why did you prevent generating pre-processed headers for all Boost.MPL container types?)"
|
print("(Why did you prevent generating pre-processed headers for all Boost.MPL container types?)")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# Possibly fix the header-comments of input-files needed for pre-processing.
|
# Possibly fix the header-comments of input-files needed for pre-processing.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Checking if prior to pre-processing some input-files need fixing."
|
print("Checking if prior to pre-processing some input-files need fixing.")
|
||||||
needFixing = fixmpl.check_input_files(headerDir, sourceDir, containers, args.seqType, args.verbose)
|
needFixing = fixmpl.check_input_files(headerDir, sourceDir, containers, args.seqType, args.verbose)
|
||||||
if needFixing:
|
if needFixing:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Fixing of some input-files prior to pre-processing is needed."
|
print("Fixing of some input-files prior to pre-processing is needed.")
|
||||||
print "Will fix them now!"
|
print("Will fix them now!")
|
||||||
fixmpl.fix_input_files(headerDir, sourceDir, containers, args.seqType, args.verbose)
|
fixmpl.fix_input_files(headerDir, sourceDir, containers, args.seqType, args.verbose)
|
||||||
|
|
||||||
# Some verbose debug output.
|
# Some verbose debug output.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Containers for which to pre-process headers: ", containers
|
print("Containers for which to pre-process headers: ", containers)
|
||||||
|
|
||||||
# Create (additional) input files for generating pre-processed headers of numbered sequence MPL containers.
|
# Create (additional) input files for generating pre-processed headers of numbered sequence MPL containers.
|
||||||
if args.seqType == "both" or args.seqType == "numbered":
|
if args.seqType == "both" or args.seqType == "numbered":
|
||||||
@@ -226,24 +231,24 @@ def main():
|
|||||||
if args.seqType == "both" or args.seqType == "numbered":
|
if args.seqType == "both" or args.seqType == "numbered":
|
||||||
if args.want_vector:
|
if args.want_vector:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Pre-process headers for Boost.MPL numbered vectors."
|
print("Pre-process headers for Boost.MPL numbered vectors.")
|
||||||
os.system( "python " + os.path.join( sourceDir, "preprocess_vector.py" ) + " all " + args.sourceDir )
|
os.system( python_executable + " " + os.path.join( sourceDir, "preprocess_vector.py" ) + " all " + args.sourceDir )
|
||||||
if args.want_list:
|
if args.want_list:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Pre-process headers for Boost.MPL numbered lists."
|
print("Pre-process headers for Boost.MPL numbered lists.")
|
||||||
os.system( "python " + os.path.join( sourceDir, "preprocess_list.py" ) + " all " + args.sourceDir )
|
os.system( python_executable + " " + os.path.join( sourceDir, "preprocess_list.py" ) + " all " + args.sourceDir )
|
||||||
if args.want_set:
|
if args.want_set:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Pre-process headers for Boost.MPL numbered sets."
|
print("Pre-process headers for Boost.MPL numbered sets.")
|
||||||
os.system( "python " + os.path.join( sourceDir, "preprocess_set.py" ) + " all " + args.sourceDir )
|
os.system( python_executable + " " + os.path.join( sourceDir, "preprocess_set.py" ) + " all " + args.sourceDir )
|
||||||
if args.want_map:
|
if args.want_map:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Pre-process headers for Boost.MPL numbered maps."
|
print("Pre-process headers for Boost.MPL numbered maps.")
|
||||||
os.system( "python " + os.path.join( sourceDir, "preprocess_map.py" ) + " all " + args.sourceDir )
|
os.system( python_executable + " " + os.path.join( sourceDir, "preprocess_map.py" ) + " all " + args.sourceDir )
|
||||||
if args.seqType == "both" or args.seqType == "variadic":
|
if args.seqType == "both" or args.seqType == "variadic":
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Pre-process headers for Boost.MPL variadic containers."
|
print("Pre-process headers for Boost.MPL variadic containers.")
|
||||||
os.system( "python " + os.path.join( sourceDir, "preprocess.py" ) + " all " + args.sourceDir )
|
os.system( python_executable + " " + os.path.join( sourceDir, "preprocess.py" ) + " all " + args.sourceDir )
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ def check_header_comment(filename):
|
|||||||
# Check input file.
|
# Check input file.
|
||||||
name = os.path.basename( filename )
|
name = os.path.basename( filename )
|
||||||
# Read content of input file.
|
# Read content of input file.
|
||||||
sourcefile = open( filename, "rU" )
|
sourcefile = open( filename, "r" )
|
||||||
content = sourcefile.read()
|
content = sourcefile.read()
|
||||||
sourcefile.close()
|
sourcefile.close()
|
||||||
# Search content for '$Id$'.
|
# Search content for '$Id$'.
|
||||||
@@ -66,26 +66,26 @@ def check_input_files(headerDir, sourceDir, containers=['vector', 'list', 'set',
|
|||||||
result1 = False
|
result1 = False
|
||||||
if seqType == "both" or seqType == "variadic":
|
if seqType == "both" or seqType == "variadic":
|
||||||
if verbose:
|
if verbose:
|
||||||
print "Check if input files for pre-processing Boost.MPL variadic containers need fixing."
|
print("Check if input files for pre-processing Boost.MPL variadic containers need fixing.")
|
||||||
result1 = check_input_files_for_variadic_seq(headerDir, sourceDir)
|
result1 = check_input_files_for_variadic_seq(headerDir, sourceDir)
|
||||||
if verbose:
|
if verbose:
|
||||||
if result1:
|
if result1:
|
||||||
print " At least one input file needs fixing!"
|
print(" At least one input file needs fixing!")
|
||||||
else:
|
else:
|
||||||
print " No input file needs fixing!"
|
print(" No input file needs fixing!")
|
||||||
# Check the input files for containers in their numbered form.
|
# Check the input files for containers in their numbered form.
|
||||||
result2 = False
|
result2 = False
|
||||||
result3 = False
|
result3 = False
|
||||||
if seqType == "both" or seqType == "numbered":
|
if seqType == "both" or seqType == "numbered":
|
||||||
if verbose:
|
if verbose:
|
||||||
print "Check input files for pre-processing Boost.MPL numbered containers."
|
print("Check input files for pre-processing Boost.MPL numbered containers.")
|
||||||
result2 = check_input_files_for_numbered_seq(headerDir, ".hpp", containers)
|
result2 = check_input_files_for_numbered_seq(headerDir, ".hpp", containers)
|
||||||
result3 = check_input_files_for_numbered_seq(sourceDir, ".cpp", containers)
|
result3 = check_input_files_for_numbered_seq(sourceDir, ".cpp", containers)
|
||||||
if verbose:
|
if verbose:
|
||||||
if result2 or result3:
|
if result2 or result3:
|
||||||
print " At least one input file needs fixing!"
|
print(" At least one input file needs fixing!")
|
||||||
else:
|
else:
|
||||||
print " No input file needs fixing!"
|
print(" No input file needs fixing!")
|
||||||
# Return result.
|
# Return result.
|
||||||
return result1 or result2 or result3
|
return result1 or result2 or result3
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ def fix_header_comment(filename, timestamp):
|
|||||||
"""Fixes the header-comment of the given file."""
|
"""Fixes the header-comment of the given file."""
|
||||||
# Fix input file.
|
# Fix input file.
|
||||||
name = os.path.basename( filename )
|
name = os.path.basename( filename )
|
||||||
for line in fileinput.input( filename, inplace=1, mode="rU" ):
|
for line in fileinput.input( filename, inplace=1, mode="r" ):
|
||||||
# If header-comment already contains anything for '$Id$', remove it.
|
# If header-comment already contains anything for '$Id$', remove it.
|
||||||
line = re.sub(r'\$Id:[^$]+\$', r'$Id$', line.rstrip())
|
line = re.sub(r'\$Id:[^$]+\$', r'$Id$', line.rstrip())
|
||||||
# Replace '$Id$' by a string containing the file's name (and a timestamp)!
|
# Replace '$Id$' by a string containing the file's name (and a timestamp)!
|
||||||
@@ -128,12 +128,12 @@ def fix_input_files(headerDir, sourceDir, containers=['vector', 'list', 'set', '
|
|||||||
# Fix the input files for containers in their variadic form.
|
# Fix the input files for containers in their variadic form.
|
||||||
if seqType == "both" or seqType == "variadic":
|
if seqType == "both" or seqType == "variadic":
|
||||||
if verbose:
|
if verbose:
|
||||||
print "Fix input files for pre-processing Boost.MPL variadic containers."
|
print("Fix input files for pre-processing Boost.MPL variadic containers.")
|
||||||
fix_input_files_for_variadic_seq(headerDir, sourceDir, timestamp)
|
fix_input_files_for_variadic_seq(headerDir, sourceDir, timestamp)
|
||||||
# Fix the input files for containers in their numbered form.
|
# Fix the input files for containers in their numbered form.
|
||||||
if seqType == "both" or seqType == "numbered":
|
if seqType == "both" or seqType == "numbered":
|
||||||
if verbose:
|
if verbose:
|
||||||
print "Fix input files for pre-processing Boost.MPL numbered containers."
|
print("Fix input files for pre-processing Boost.MPL numbered containers.")
|
||||||
fix_input_files_for_numbered_seq(headerDir, ".hpp", timestamp, containers)
|
fix_input_files_for_numbered_seq(headerDir, ".hpp", timestamp, containers)
|
||||||
fix_input_files_for_numbered_seq(sourceDir, ".cpp", timestamp, containers)
|
fix_input_files_for_numbered_seq(sourceDir, ".cpp", timestamp, containers)
|
||||||
|
|
||||||
@@ -164,10 +164,10 @@ def main():
|
|||||||
|
|
||||||
# Some verbose debug output.
|
# Some verbose debug output.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Arguments extracted from command-line:"
|
print("Arguments extracted from command-line:")
|
||||||
print " verbose = ", args.verbose
|
print(" verbose = ", args.verbose)
|
||||||
print " check-only = ", args.checkonly
|
print(" check-only = ", args.checkonly)
|
||||||
print " source directory = ", args.sourceDir
|
print(" source directory = ", args.sourceDir)
|
||||||
|
|
||||||
# The directories for header- and source files of Boost.MPL.
|
# The directories for header- and source files of Boost.MPL.
|
||||||
# NOTE: Assuming 'args.sourceDir' is the source-directory of the entire boost project.
|
# NOTE: Assuming 'args.sourceDir' is the source-directory of the entire boost project.
|
||||||
@@ -181,21 +181,21 @@ def main():
|
|||||||
sourceDir = os.path.join( args.sourceDir, "preprocessed" )
|
sourceDir = os.path.join( args.sourceDir, "preprocessed" )
|
||||||
if not os.path.exists( headerDir ) or not os.path.exists( sourceDir ):
|
if not os.path.exists( headerDir ) or not os.path.exists( sourceDir ):
|
||||||
cmdlineParser.print_usage()
|
cmdlineParser.print_usage()
|
||||||
print "error: Cannot find Boost.MPL header/source files in given Boost source-directory!"
|
print("error: Cannot find Boost.MPL header/source files in given Boost source-directory!")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# Some verbose debug output.
|
# Some verbose debug output.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Chosen header-directory: ", headerDir
|
print("Chosen header-directory: ", headerDir)
|
||||||
print "Chosen source-directory: ", sourceDir
|
print("Chosen source-directory: ", sourceDir)
|
||||||
|
|
||||||
if args.checkonly:
|
if args.checkonly:
|
||||||
# Check input files for generating pre-processed headers.
|
# Check input files for generating pre-processed headers.
|
||||||
result = check_input_files(headerDir, sourceDir, verbose = args.verbose)
|
result = check_input_files(headerDir, sourceDir, verbose = args.verbose)
|
||||||
if result:
|
if result:
|
||||||
print "Fixing the input-files used for pre-processing of Boost.MPL headers IS required."
|
print("Fixing the input-files used for pre-processing of Boost.MPL headers IS required.")
|
||||||
else:
|
else:
|
||||||
print "Fixing the input-files used for pre-processing of Boost.MPL headers is NOT required."
|
print("Fixing the input-files used for pre-processing of Boost.MPL headers is NOT required.")
|
||||||
else:
|
else:
|
||||||
# Fix input files for generating pre-processed headers.
|
# Fix input files for generating pre-processed headers.
|
||||||
fix_input_files(headerDir, sourceDir, verbose = args.verbose)
|
fix_input_files(headerDir, sourceDir, verbose = args.verbose)
|
||||||
|
|||||||
+12
-13
@@ -12,6 +12,7 @@
|
|||||||
# $Revision$
|
# $Revision$
|
||||||
|
|
||||||
import fileinput
|
import fileinput
|
||||||
|
import functools
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import string
|
import string
|
||||||
@@ -22,22 +23,21 @@ max_len = 79
|
|||||||
ident = 4
|
ident = 4
|
||||||
|
|
||||||
def nearest_ident_pos(text):
|
def nearest_ident_pos(text):
|
||||||
return (len(text)/ident) * ident
|
return int((len(text)/ident) * ident)
|
||||||
|
|
||||||
def block_format(limits, text, first_sep=' ', sep=',', need_last_ident=1 ):
|
def block_format(limits, text, first_sep=' ', sep=',', need_last_ident=1 ):
|
||||||
if sep == ',' and string.find( text, '<' ) != -1:
|
if sep == ',' and str.find( text, '<' ) != -1:
|
||||||
sep = '%s ' % sep
|
sep = '%s ' % sep
|
||||||
|
|
||||||
words = string.split(
|
words = str.split(
|
||||||
string.join( string.split( text ), ' ' )
|
' '.join( str.split( text ) )
|
||||||
, sep
|
, sep
|
||||||
)
|
)
|
||||||
|
|
||||||
s = ' ' * limits[0]
|
s = ' ' * limits[0]
|
||||||
max_len = limits[1]
|
max_len = limits[1]
|
||||||
return '%s\n%s' \
|
return '%s\n%s' \
|
||||||
% (
|
% (
|
||||||
reduce(
|
functools.reduce(
|
||||||
lambda t,w,max_len=max_len,s=s,sep=sep:
|
lambda t,w,max_len=max_len,s=s,sep=sep:
|
||||||
if_else(t[1] + len(w) < max_len
|
if_else(t[1] + len(w) < max_len
|
||||||
, ('%s%s%s'% (t[0],t[2],w), t[1]+len(w)+len(t[2]), sep)
|
, ('%s%s%s'% (t[0],t[2],w), t[1]+len(w)+len(t[2]), sep)
|
||||||
@@ -52,7 +52,6 @@ def block_format(limits, text, first_sep=' ', sep=',', need_last_ident=1 ):
|
|||||||
def handle_args( match ):
|
def handle_args( match ):
|
||||||
if re.compile('^\s*(typedef|struct|static)\s+.*?$').match(match.group(0)):
|
if re.compile('^\s*(typedef|struct|static)\s+.*?$').match(match.group(0)):
|
||||||
return match.group(0)
|
return match.group(0)
|
||||||
|
|
||||||
return '%s'\
|
return '%s'\
|
||||||
% block_format(
|
% block_format(
|
||||||
(nearest_ident_pos(match.group(1)),max_len)
|
(nearest_ident_pos(match.group(1)),max_len)
|
||||||
@@ -86,7 +85,7 @@ def handle_inline_args(match):
|
|||||||
(nearest_ident_pos(match.group(1))+ident,max_len-len(match.group(9)))
|
(nearest_ident_pos(match.group(1))+ident,max_len-len(match.group(9)))
|
||||||
, match.group(4)
|
, match.group(4)
|
||||||
)
|
)
|
||||||
, string.replace(match.group(1),',',' ')
|
, str.replace(match.group(1),',',' ')
|
||||||
, match.group(9)
|
, match.group(9)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -98,18 +97,18 @@ def handle_simple_list(match):
|
|||||||
return if_else(single_arg,'%s<%s>','%s< %s >') %\
|
return if_else(single_arg,'%s<%s>','%s< %s >') %\
|
||||||
(
|
(
|
||||||
match.group(1)
|
match.group(1)
|
||||||
, string.join(string.split(match.group(2)), '')
|
, ''.join(str.split(match.group(2)))
|
||||||
)
|
)
|
||||||
|
|
||||||
def handle_static(match):
|
def handle_static(match):
|
||||||
if len(match.group(0)) < max_len:
|
if len(match.group(0)) < max_len:
|
||||||
return match.group(0)
|
return match.group(0)
|
||||||
|
|
||||||
(first_sep,sep) = if_else(string.find(match.group(0),'+') == -1, (' ',' '),(' ','+'))
|
(first_sep,sep) = if_else(str.find(match.group(0),'+') == -1, (' ',' '),(' ','+'))
|
||||||
return '%s%s\n%s%s' %\
|
return '%s%s\n%s%s' %\
|
||||||
(
|
(
|
||||||
match.group(1)
|
match.group(1)
|
||||||
, string.join(string.split(match.group(2)), ' ')
|
, ' '.join(str.split(match.group(2)))
|
||||||
, block_format(
|
, block_format(
|
||||||
(nearest_ident_pos(match.group(1))+ident,max_len)
|
(nearest_ident_pos(match.group(1))+ident,max_len)
|
||||||
, match.group(4)
|
, match.group(4)
|
||||||
@@ -120,7 +119,7 @@ def handle_static(match):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def handle_typedefs(match):
|
def handle_typedefs(match):
|
||||||
if string.count(match.group(2), ';') == 1:
|
if str.count(match.group(2), ';') == 1:
|
||||||
return match.group(0)
|
return match.group(0)
|
||||||
|
|
||||||
join_sep = ';\n%s' % match.group(1)
|
join_sep = ';\n%s' % match.group(1)
|
||||||
@@ -128,7 +127,7 @@ def handle_typedefs(match):
|
|||||||
return '%s%s\n' \
|
return '%s%s\n' \
|
||||||
% (
|
% (
|
||||||
match.group(1)
|
match.group(1)
|
||||||
, string.join(map(string.strip, string.split(match.group(2), ';')), join_sep)
|
, join_sep.join(list(map(str.strip, str.split(match.group(2), ';'))))
|
||||||
)
|
)
|
||||||
|
|
||||||
def fix_angle_brackets( match ):
|
def fix_angle_brackets( match ):
|
||||||
|
|||||||
@@ -57,10 +57,10 @@ def process_all( root, boost_root, dst_dir, mode ):
|
|||||||
|
|
||||||
def main( all_modes, src_dir, dst_dir ):
|
def main( all_modes, src_dir, dst_dir ):
|
||||||
if len( sys.argv ) < 2:
|
if len( sys.argv ) < 2:
|
||||||
print "\nUsage:\n\t %s <mode> <boost_root> [<source_file>]" % os.path.basename( sys.argv[0] )
|
print("\nUsage:\n\t %s <mode> <boost_root> [<source_file>]" % os.path.basename( sys.argv[0] ))
|
||||||
print "\nPurpose:\n\t updates preprocessed version(s) of the header(s) in \"%s\" directory" % dst_dir
|
print("\nPurpose:\n\t updates preprocessed version(s) of the header(s) in \"%s\" directory" % dst_dir)
|
||||||
print "\nExample:\n\t the following command will re-generate and update all 'apply.hpp' headers:"
|
print("\nExample:\n\t the following command will re-generate and update all 'apply.hpp' headers:")
|
||||||
print "\n\t\t %s all f:\\cvs\\boost apply.cpp" % os.path.basename( sys.argv[0] )
|
print("\n\t\t %s all f:\\cvs\\boost apply.cpp" % os.path.basename( sys.argv[0] ))
|
||||||
sys.exit( -1 )
|
sys.exit( -1 )
|
||||||
|
|
||||||
if sys.argv[1] == "all":
|
if sys.argv[1] == "all":
|
||||||
|
|||||||
+8
-4
@@ -1,5 +1,6 @@
|
|||||||
project
|
project
|
||||||
: requirements
|
: requirements
|
||||||
|
<library>/boost/mpl//boost_mpl
|
||||||
<warnings>extra
|
<warnings>extra
|
||||||
<toolset>clang:<cxxflags>-Wno-variadic-macros
|
<toolset>clang:<cxxflags>-Wno-variadic-macros
|
||||||
<toolset>gcc:<cxxflags>-Wshadow
|
<toolset>gcc:<cxxflags>-Wshadow
|
||||||
@@ -49,7 +50,8 @@ compile find.cpp ;
|
|||||||
compile find_if.cpp ;
|
compile find_if.cpp ;
|
||||||
compile fold.cpp ;
|
compile fold.cpp ;
|
||||||
run for_each.cpp
|
run for_each.cpp
|
||||||
: : : <cxxstd>98:<build>no <cxxstd>03:<build>no ;
|
: : : <cxxstd>98:<build>no <cxxstd>03:<build>no
|
||||||
|
<library>/boost/bind//boost_bind ;
|
||||||
compile front.cpp ;
|
compile front.cpp ;
|
||||||
compile get_tag_def.cpp ;
|
compile get_tag_def.cpp ;
|
||||||
compile has_xxx.cpp ;
|
compile has_xxx.cpp ;
|
||||||
@@ -60,9 +62,10 @@ compile inherit.cpp ;
|
|||||||
compile insert.cpp ;
|
compile insert.cpp ;
|
||||||
compile insert_range.cpp ;
|
compile insert_range.cpp ;
|
||||||
run int.cpp ;
|
run int.cpp ;
|
||||||
run char.cpp ;
|
run char.cpp : : : : char ;
|
||||||
run integral_c.cpp
|
run char.cpp : : : <toolset>gcc:<cxxflags>"-funsigned-char -Wnarrowing -Werror" : char_unsigned ;
|
||||||
: : : <toolset>vacpp:<cxxflags>-qchars=signed ;
|
run integral_c.cpp : : : <toolset>vacpp:<cxxflags>-qchars=signed : integral_c ;
|
||||||
|
run integral_c.cpp : : : <toolset>gcc:<cxxflags>"-funsigned-char -Wnarrowing -Werror" : integral_c_unsigned ;
|
||||||
compile is_placeholder.cpp ;
|
compile is_placeholder.cpp ;
|
||||||
compile is_sequence.cpp ;
|
compile is_sequence.cpp ;
|
||||||
compile iterator_tags.cpp ;
|
compile iterator_tags.cpp ;
|
||||||
@@ -112,3 +115,4 @@ compile zip_view.cpp ;
|
|||||||
run string.cpp ;
|
run string.cpp ;
|
||||||
|
|
||||||
run issue_69.cpp ;
|
run issue_69.cpp ;
|
||||||
|
run issue_84.cpp ;
|
||||||
|
|||||||
@@ -13,12 +13,17 @@
|
|||||||
|
|
||||||
#include <boost/mpl/char.hpp>
|
#include <boost/mpl/char.hpp>
|
||||||
#include <boost/preprocessor/repeat.hpp>
|
#include <boost/preprocessor/repeat.hpp>
|
||||||
|
#include <climits>
|
||||||
|
|
||||||
#include "integral_wrapper_test.hpp"
|
#include "integral_wrapper_test.hpp"
|
||||||
|
|
||||||
|
|
||||||
MPL_TEST_CASE()
|
MPL_TEST_CASE()
|
||||||
{
|
{
|
||||||
|
#if CHAR_MAX > 0
|
||||||
|
# define WRAPPER(T, i) char_<static_cast<char>(i)>
|
||||||
|
#else
|
||||||
# define WRAPPER(T, i) char_<i>
|
# define WRAPPER(T, i) char_<i>
|
||||||
|
#endif
|
||||||
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
|
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-3
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include <boost/mpl/integral_c.hpp>
|
#include <boost/mpl/integral_c.hpp>
|
||||||
#include <boost/preprocessor/repeat.hpp>
|
#include <boost/preprocessor/repeat.hpp>
|
||||||
|
#include <climits>
|
||||||
|
|
||||||
#include "integral_wrapper_test.hpp"
|
#include "integral_wrapper_test.hpp"
|
||||||
|
|
||||||
@@ -21,10 +22,14 @@ MPL_TEST_CASE()
|
|||||||
{
|
{
|
||||||
# define WRAPPER(T, i) integral_c<T,i>
|
# define WRAPPER(T, i) integral_c<T,i>
|
||||||
|
|
||||||
#if !(defined(__APPLE_CC__) && defined(__GNUC__) && (__GNUC__ == 3) && (__GNUC_MINOR__ <= 3))
|
|
||||||
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
|
|
||||||
#endif
|
|
||||||
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, short)
|
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, short)
|
||||||
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, int)
|
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, int)
|
||||||
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, long)
|
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, long)
|
||||||
|
|
||||||
|
#if CHAR_MAX > 0
|
||||||
|
# undef WRAPPER
|
||||||
|
# define WRAPPER(T, i) integral_c<T,static_cast<T>(i)>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
// Copyright 2025 Peter Dimov
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// https://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
|
// Check for conflicts with MS iso646.h, which defines macros for `and` et al
|
||||||
|
|
||||||
|
#include <ciso646>
|
||||||
|
#include <boost/mpl/and.hpp>
|
||||||
|
#include <boost/mpl/or.hpp>
|
||||||
|
#include <boost/mpl/bitand.hpp>
|
||||||
|
#include <boost/mpl/bitor.hpp>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user