Skip to content

Add support for modular build structure. #248

Add support for modular build structure.

Add support for modular build structure. #248

Workflow file for this run

# Copyright (c) 2020 Mohammad Ashar Khan
# Copyright (c) 2021 Cem Bassoy
# Distributed under Boost Software License, Version 1.0
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
name: "Linux"
on:
push:
paths-ignore:
- '**.md'
- 'doc/**'
pull_request:
paths-ignore:
- '**.md'
- 'doc/**'
jobs:
build:
name: Ubuntu 20.04 "cxx=${{matrix.config.cxx}}, std=c++${{matrix.config.cxxstd}}, variant=c++${{matrix.config.variant}}"
runs-on: ubuntu-20.04
strategy:
fail-fast: true
# If any compiler fails to compile, continue CI for next compiler in matrix instead of failing early
matrix:
config:
- { name: clang, cc: clang-10, cxx: clang++-10, cxxstd: 20, variant: debug, opt: off}
- { name: clang, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off}
- { name: clang, cc: clang-10, cxx: clang++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp=libomp5}
- { name: clang, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp=libomp5}
- { name: gcc, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: debug, opt: off}
- { name: gcc, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp}
steps:
- uses: actions/checkout@v2
- name: Install g++-10
if: matrix.config.cxx == 'g++-10'
run: sudo apt update && sudo apt-get install -y g++-10 libomp-dev
- name: Install Clang 10
if: matrix.config.cxx == 'clang++-10'
run: sudo apt-get update && sudo apt-get install -y clang-10
- name: Install Clang 11
if: matrix.config.cxx == 'clang++-11'
run: sudo apt-get update && sudo apt-get install -y clang-11
- name: Git Clone Boost.uBlas
run: |
cd ${GITHUB_WORKSPACE}
cd ..
git clone -b master --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
echo "BOOST_ROOT=${PWD}" >> ${GITHUB_ENV}
echo $BOOST_ROOT
git submodule update --init --depth=1 --jobs 8 tools/build
git submodule update --init --depth=1 --jobs 8 libs/config
git submodule update --init --depth=1 --jobs 8 tools/boostdep
mkdir -p libs/numeric/
cp -rp ${GITHUB_WORKSPACE}/. libs/numeric/ublas
python tools/boostdep/depinst/depinst.py -g " --depth=1" -I benchmarks numeric/ublas
- name: Bootstrap Boost and Compile Boost
run: |
cd $BOOST_ROOT
./bootstrap.sh
./b2 -j8 headers
echo "using ${{ matrix.config.name }} : : ${{ matrix.config.cxx }} ;" >> ~/user-config.jam;
# - name: Test Benchmarks
# run: |
# cd $BOOST_ROOT
# cd libs/numeric/ublas
# $BOOST_ROOT/b2 -j 4 benchmarks toolset=clang cxxstd=${{matrix.config.cxxstd}} cxxflags="-O3"
- name: Test Tensor Examples
run: |
cd $BOOST_ROOT/libs/numeric/ublas
if [ -z "$cxxflags" ]
then
$BOOST_ROOT/b2 -j8 examples/tensor toolset=${{matrix.config.name}} cxxstd=${{matrix.config.cxxstd}} variant=${{matrix.config.variant}} optimization=${{matrix.config.opt}}
else
$BOOST_ROOT/b2 -j8 examples/tensor toolset=${{matrix.config.name}} cxxstd=${{matrix.config.cxxstd}} variant=${{matrix.config.variant}} optimization=${{matrix.config.opt}} cxxflags="${{matrix.config.cxxflags}}" linkflags="${{matrix.config.ldflags}}"
fi
- name: Test Tensor Unit-Tests
run: |
cd $BOOST_ROOT/libs/numeric/ublas
if [ -z "$cxxflags" ]
then
$BOOST_ROOT/b2 -j8 test/tensor toolset=${{matrix.config.name}} cxxstd=${{matrix.config.cxxstd}} variant=${{matrix.config.variant}} optimization=${{matrix.config.opt}}
else
$BOOST_ROOT/b2 -j8 test/tensor toolset=${{matrix.config.name}} cxxstd=${{matrix.config.cxxstd}} variant=${{matrix.config.variant}} optimization=${{matrix.config.opt}} cxxflags="${{matrix.config.cxxflags}}" linkflags="${{matrix.config.ldflags}}"
fi