# 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