diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml new file mode 100644 index 0000000000..2d1ce7d9f9 --- /dev/null +++ b/.github/workflows/cmake.yml @@ -0,0 +1,93 @@ +############################################################################## +# GitHub Actions Workflow for Boost.Geometry to build tests with cmake +# +# Copyright (c) 2024 Oracle and/or its affiliates. +# Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle +# +# Use, modification and distribution is 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) +############################################################################## +name: cmake + +on: [push] + +jobs: + ############################################################################## + clang: + name: ${{ matrix.b2_toolset }} + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + b2_toolset: [ + clang-14 + ] + + include: + - b2_toolset: clang-14 + b2_cxxstd: 14,17,2a + version: "14" + os: ubuntu-22.04 + steps: + - name: Set up environment + id: setenv + run: | + if [[ "$GITHUB_REF" == *master ]]; then + echo "BOOST_BRANCH=master" >> $GITHUB_ENV + else + echo "BOOST_BRANCH=develop" >> $GITHUB_ENV + fi + echo "BOOST_SELF=$(basename $GITHUB_WORKSPACE)" >> $GITHUB_ENV + echo "BOOST_ROOT=$GITHUB_WORKSPACE/boost-root" >> $GITHUB_ENV + echo "boost_self=$(basename $GITHUB_WORKSPACE)" >> "$GITHUB_OUTPUT" + echo "boost_root=$GITHUB_WORKSPACE/boost-root" >> "$GITHUB_OUTPUT" + + - name: Clone boostorg/boost + run: | + git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git $BOOST_ROOT + cd $BOOST_ROOT + git submodule update -q --init libs/headers + git submodule update -q --init tools/boost_install + git submodule update -q --init tools/boostdep + git submodule update -q --init tools/build + mkdir -p libs/$BOOST_SELF + + - uses: actions/checkout@v2 + with: + path: ${{ steps.setenv.outputs.boost_root }}/libs/${{ steps.setenv.outputs.boost_self }} + + - name: Run tools/boostdep/depinst/depinst.py + run: | + cd $BOOST_ROOT + python tools/boostdep/depinst/depinst.py --include benchmark --include example --include examples --include tools $BOOST_SELF + + - name: Bootstrap boostorg/boost + run: | + gcc --version + cd $BOOST_ROOT + ./bootstrap.sh --with-toolset=gcc + ./b2 headers + test -f /usr/local/bin/b2 && rm -rf /usr/local/bin/b2 + test -f /usr/local/bin/bjam && rm -rf /usr/local/bin/bjam + sudo cp $BOOST_ROOT/b2 /usr/local/bin/ + ls -l /usr/local/bin/b2 + b2 -v + + - name: Set up clang toolset in ~/user-config.jam + run: | + export CXX_NAME=clang++-${{ matrix.version }} + echo ${CXX_NAME} + echo "# $HOME/user-config.jam" > $HOME/user-config.jam + echo "using clang : : $(which clang++-${{ matrix.version }}) ;" > ${HOME}/user-config.jam + test -f $HOME/user-config.jam && cat $HOME/user-config.jam + + - name: Tests with cmake + run: | + cd $BOOST_ROOT/libs/geometry + mkdir __build + cd __build + cmake -DBUILD_TESTING=ON .. + cmake --build . --target tests + ctest --output-on-failure --no-tests=error