diff options
Diffstat (limited to 'gulrak-filesystem/.github/workflows')
| -rw-r--r-- | gulrak-filesystem/.github/workflows/build_cmake.yml | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/gulrak-filesystem/.github/workflows/build_cmake.yml b/gulrak-filesystem/.github/workflows/build_cmake.yml new file mode 100644 index 0000000..783508b --- /dev/null +++ b/gulrak-filesystem/.github/workflows/build_cmake.yml @@ -0,0 +1,197 @@ +name: CMake Build Matrix + +on: [ push, pull_request ] + +jobs: + build: + name: ${{ matrix.config.name }} + runs-on: ${{ matrix.config.os }} + strategy: + fail-fast: false + matrix: + config: + - name: "Ubuntu 20.04 GCC 9.3" + os: ubuntu-20.04 + build_type: Release + packages: ninja-build + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17;cxx_std_20" + cc: gcc + cxx: g++ + + - name: "Ubuntu 20.04 Clang 10.0" + os: ubuntu-20.04 + build_type: Release + packages: ninja-build + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17;cxx_std_20" + cc: clang-10 + cxx: clang++-10 + + - name: "Ubuntu 20.04 Clang 11.0" + os: ubuntu-20.04 + build_type: Release + packages: ninja-build clang-11 libc++-11-dev libc++abi-11-dev + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17;cxx_std_20" + cc: clang-11 + cxx: clang++-11 + + - name: "Ubuntu 20.04 GCC 9.3 coverage" + os: ubuntu-20.04 + build_type: Debug + packages: ninja-build lcov + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17;cxx_std_20" + cc: gcc + cxx: g++ + + - name: "Ubuntu 18.04 GCC 8.4" + os: ubuntu-18.04 + build_type: Release + packages: ninja-build gcc-8 g++-8 + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17" + cc: gcc-8 + cxx: g++-8 + + - name: "Ubuntu 18.04 GCC 7.5" + os: ubuntu-18.04 + build_type: Release + packages: ninja-build + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17" + cc: gcc-7 + cxx: g++-7 + + - name: "Ubuntu 18.04 GCC 6.5" + os: ubuntu-18.04 + build_type: Release + packages: ninja-build gcc-6 g++-6 + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17" + cc: gcc-6 + cxx: g++-6 + + - name: "Ubuntu 18.04 GCC 5.5" + os: ubuntu-18.04 + build_type: Release + packages: ninja-build gcc-5 g++-5 + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17" + cc: gcc-5 + cxx: g++-5 + + - name: "Ubuntu 18.04 Clang 9.0" + os: ubuntu-18.04 + build_type: Release + packages: ninja-build libc++-9-dev libc++abi-9-dev + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17;cxx_std_20" + cc: clang + cxx: clang++ + + - name: "Ubuntu 18.04 Clang 6.0" + os: ubuntu-18.04 + build_type: Release + packages: ninja-build clang-6.0 + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17" + cc: clang-6.0 + cxx: clang++-6.0 + + - name: "Ubuntu 18.04 Clang 5.0" + os: ubuntu-18.04 + build_type: Release + packages: ninja-build clang-5.0 + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17" + cc: clang-5.0 + cxx: clang++-5.0 + + - name: "Windows MSVC 2019" + os: windows-latest + build_type: Release + packages: ninja + generator: "Visual Studio 16 2019" + compatibility: "cxx_std_11;cxx_std_17;cxx_std_20" + cc: cl + cxx: cl + + - name: "macOS 10.15 AppleClang" + os: macos-10.15 + build_type: Release + packages: ninja + generator: Ninja + compatibility: "cxx_std_11;cxx_std_17" + cc: clang + cxx: clang++ + + steps: + - uses: actions/checkout@v2 + + - name: print environment + run: | + echo github.event.action: ${{ github.event.action }} + echo github.event_name: ${{ github.event_name }} + + - name: Install dependencies on Ubuntu + if: startsWith(matrix.config.os, 'ubuntu') + shell: bash + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y + sudo apt update + sudo apt install ${{ matrix.config.packages }} + + - name: Install dependencies on windows + if: startsWith(matrix.config.os, 'windows') + run: | + choco install ${{ matrix.config.packages }} + + - name: Install dependencies on macOS + if: startsWith(matrix.config.os, 'macos') + run: | + brew install ${{ matrix.config.packages }} + + - name: Configure project + shell: bash + run: | + export CC=${{ matrix.config.cc }} + export CXX=${{ matrix.config.cxx }} + ninja --version + cmake --version + mkdir build + mkdir install + if [[ "${{ matrix.config.build_type }}" == "Debug" ]]; then + cmake -G "${{ matrix.config.generator }}" -S . -B build -DCMAKE_BUILD_TYPE=Debug -DGHC_COVERAGE=ON -DGHC_FILESYSTEM_TEST_COMPILE_FEATURES="${{ matrix.config.compatibility }}" -DCMAKE_INSTALL_PREFIX:PATH=install + else + cmake -G "${{ matrix.config.generator }}" -S . -B build -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} -DGHC_FILESYSTEM_TEST_COMPILE_FEATURES="${{ matrix.config.compatibility }}" -DCMAKE_INSTALL_PREFIX:PATH=install + fi + + - name: Build project + shell: bash + run: | + cmake --build build --config ${{ matrix.config.build_type }} + + - name: Run tests + run: | + cd build && ctest -C ${{ matrix.config.build_type }} + + - name: Collect coverage info + if: startsWith(matrix.config.build_type, 'Debug') + run: | + cd build + lcov --compat-libtool --directory . --capture --output-file coverage_output.info + lcov --remove coverage_output.info '/usr/*' '*/c++/*' '*.h' '*/catch.hpp' -o coverage.info + # sed -i 's|SF:/.*/filesystem/|SF:../|g' coverage.info + + - name: Upload coverage info + if: startsWith(matrix.config.build_type, 'Debug') + env: + COVERALLS_DEBUG: true + NODE_COVERALLS_DEBUG: 1 + uses: coverallsapp/github-action@master + with: + path-to-lcov: ${{ github.workspace }}/build/coverage.info + github-token: ${{ secrets.GITHUB_TOKEN }} + |
