Skip to content

Feat: Add support to install FILE_SET too #64

Feat: Add support to install FILE_SET too

Feat: Add support to install FILE_SET too #64

Workflow file for this run

name: CMake Versions CI
on:
pull_request:
push:
branches:
- master
- develop
- feature/**
tags: ['**']
workflow_dispatch:
inputs:
branch:
description: 'Boost branch to run for'
required: false
default: 'auto'
options:
- auto
- master
- develop
jobs:
posix:
strategy:
fail-fast: false
matrix:
enable_test: [ON, OFF]
cmake_version:
- 3.8.2
- 3.9.6
- 3.10.3
- 3.11.4
- 3.12.4
- 3.13.5
- 3.14.7
- 3.15.7
- 3.16.9
- 3.17.5
- 3.18.6
- 3.19.8
- 3.20.6
- 3.21.7
- 3.22.6
- 3.23.5
- 3.24.4
- 3.25.3
- 3.26.6
- 3.27.9
- 3.28.6
- 3.29.9
- 3.30.9
- 3.31.9
- 4.0.4
- 4.1.2
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Boost
run: |
BOOST_BRANCH="${{inputs.branch}}"
if [[ -z $BOOST_BRANCH || $BOOST_BRANCH == "auto" ]]; then
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
[[ "$REF" == "master" ]] && BOOST_BRANCH=master || BOOST_BRANCH=develop
fi
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
git submodule update --init --jobs 3
rm -rf tools/cmake/*
cp -r $GITHUB_WORKSPACE/* tools/cmake
- name: Cache CMake
id: cache-cmake
uses: actions/cache@v4
with:
path: /tmp/cmake
key: ${{ runner.os }}-cmake-${{matrix.cmake_version}}
- name: Install CMake dependencies
run: sudo apt-get -o Acquire::Retries=3 -y -q --no-install-suggests --no-install-recommends install curl libcurl4-openssl-dev libarchive-dev
- name: Build CMake
if: steps.cache-cmake.outputs.cache-hit != 'true'
run: |
version=${{matrix.cmake_version}}
filename="cmake-$version.tar.gz"
cd "$(mktemp -d)"
wget https://cmake.org/files/v${version%.*}/$filename
tar -xf $filename --strip-components=1
flags=(
"-DCMAKE_BUILD_TYPE=Release"
"-DCMAKE_INSTALL_PREFIX=/tmp/cmake"
"-B" "__build"
"-Wno-dev" # Make configuring more silent
"-DCMAKE_USE_SYSTEM_CURL=1" # Avoid failures caused by newer (system) OpenSSL in CMake < 3.10
"-DCMAKE_CXX_FLAGS='-include cstdint -include limits'" # Fix missing includes in CMake < 3.10
)
cmake "${flags[@]}" .
cmake --build __build -- -j 3
cmake --build __build --target install
- name: Configure Boost with CMake ${{matrix.cmake_version}}
working-directory: ../boost-root
run: |
version_greater_equal() { printf '%s\n' "$2" "$1" | sort --check=quiet --version-sort; }
excluded=()
for cml in "$PWD"/libs/*/CMakeLists.txt "$PWD"/libs/numeric/*/CMakeLists.txt; do
lib=$(dirname "${cml#*libs/}")
if minimal_cmake_version=$(grep "cmake_minimum_required" "$cml" | grep -Eo '[0-9]\.[0-9]+' | head -1); then
version_greater_equal ${{matrix.cmake_version}} "$minimal_cmake_version" || excluded+=("$lib")
else
echo "Minimum required CMake version not found in $cml for library $lib"
fi
done
# Libraries that don't declare their correct minimal required CMake version or where dependencies require higher version
# Example: version_greater_equal ${{matrix.cmake_version}} 3.12.0 || excluded+=("name")
/tmp/cmake/bin/cmake --version
/tmp/cmake/bin/cmake -DBUILD_TESTING=${{matrix.enable_test}} -DBOOST_EXCLUDE_LIBRARIES="$(IFS=';'; echo "${excluded[*]}")" -B "__build_cmake-$version" .