diff --git a/.github/workflows/linux-other-builds.yml b/.github/workflows/linux-other-builds.yml new file mode 100644 index 00000000..61ebf3d7 --- /dev/null +++ b/.github/workflows/linux-other-builds.yml @@ -0,0 +1,86 @@ +# The builds in this file are more complex (e.g. they need custom CMake +# configuration) and thus are unsuitable to the simple build matrix +# approach used in simple-builds +name: Linux builds (complex) + +on: [push, pull_request] + +jobs: + build: + name: ${{matrix.build_description}}, ${{matrix.cxx}}, C++${{matrix.std}} ${{matrix.build_type}} + runs-on: ubuntu-20.04 + strategy: + matrix: + # We add builds one by one in this case, because there are no + # dimensions that are shared across the builds + include: + + # Single surrogate header build + - cxx: clang++-10 + build_description: Surrogates build + build_type: Debug + std: 14 + other_pkgs: clang-10 + cmake_configurations: -DCATCH_BUILD_SURROGATES=ON + + # Extras and examples with gcc-7 + - cxx: g++-7 + build_description: Extras + Examples + build_type: Debug + std: 14 + other_pkgs: g++-7 + cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON + - cxx: g++-7 + build_description: Extras + Examples + build_type: Release + std: 14 + other_pkgs: g++-7 + cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON + + # Extras and examples with Clang-10 + - cxx: clang++-10 + build_description: Extras + Examples + build_type: Debug + std: 17 + other_pkgs: clang-10 + cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON + - cxx: clang++-10 + build_description: Extras + Examples + build_type: Release + std: 17 + other_pkgs: clang-10 + cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON + + + steps: + - uses: actions/checkout@v2 + + - name: Prepare environment + run: sudo apt-get install -y ninja-build ${{matrix.other_pkgs}} + + - name: Configure build + working-directory: ${{runner.workspace}} + env: + CXX: ${{matrix.cxx}} + CXXFLAGS: ${{matrix.cxxflags}} + # Note: $GITHUB_WORKSPACE is distinct from ${{runner.workspace}}. + # This is important + run: | + cmake -Bbuild -H$GITHUB_WORKSPACE \ + -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \ + -DCMAKE_CXX_STANDARD=${{matrix.std}} \ + -DCMAKE_CXX_EXTENSIONS=OFF \ + -DCATCH_DEVELOPMENT_BUILD=ON \ + ${{matrix.cmake_configurations}} \ + -G Ninja + + - name: Build tests + lib + working-directory: ${{runner.workspace}}/build + run: ninja + + - name: Run tests + env: + CTEST_OUTPUT_ON_FAILURE: 1 + working-directory: ${{runner.workspace}}/build + # Hardcode 2 cores we know are there + run: ctest -C ${{matrix.build_type}} -j 2 diff --git a/.github/workflows/linux-builds.yml b/.github/workflows/linux-simple-builds.yml similarity index 73% rename from .github/workflows/linux-builds.yml rename to .github/workflows/linux-simple-builds.yml index 3d2b41ef..a9abcdfc 100644 --- a/.github/workflows/linux-builds.yml +++ b/.github/workflows/linux-simple-builds.yml @@ -1,9 +1,10 @@ -name: Linux builds +name: Linux builds (basic) on: [push, pull_request] jobs: build: + name: ${{matrix.cxx}}, C++${{matrix.std}}, ${{matrix.build_type}} runs-on: ubuntu-20.04 strategy: matrix: @@ -20,35 +21,42 @@ jobs: - clang++-10 build_type: [Debug, Release] std: [14] - surrogates: [OFF] include: # cannot be installed on ubuntu-20.04 be default? # - cxx: g++-6 # other_pkgs: g++-6 + - cxx: g++-7 + other_pkgs: g++-7 + - cxx: g++-8 + other_pkgs: g++-8 - cxx: clang++-6.0 other_pkgs: clang-6.0 - cxx: clang++-7 other_pkgs: clang-7 + - cxx: clang++-8 + other_pkgs: clang-8 - cxx: clang++-10 other_pkgs: clang-10 - # We want one build to build surrogates -- but not more, to - # avoid trouble with long compilation/CI times. - - cxx: clang++-10 - build_type: Debug - std: 14 - other_pkgs: clang-10 - surrogates: ON - # Clang 10 + C++17 + # Clang 6 + C++17 + # does not work with the default libstdc++ version thanks + # to a disagreement on variant implementation. + # - cxx: clang++-6.0 + # build_type: Debug + # std: 17 + # other_pkgs: clang-6.0 + # - cxx: clang++-6.0 + # build_type: Release + # std: 17 + # other_pkgs: clang-6.0 + # Clang 10 + C++17 - cxx: clang++-10 build_type: Debug std: 17 other_pkgs: clang-10 - surrogates: OFF - cxx: clang++-10 build_type: Release std: 17 other_pkgs: clang-10 - surrogates: OFF steps: - uses: actions/checkout@v2 @@ -69,7 +77,6 @@ jobs: -DCMAKE_CXX_STANDARD=${{matrix.std}} \ -DCMAKE_CXX_EXTENSIONS=OFF \ -DCATCH_DEVELOPMENT_BUILD=ON \ - -DCATCH_BUILD_SURROGATES=${{matrix.surrogates}} \ -G Ninja - name: Build tests + lib diff --git a/.travis.yml b/.travis.yml index 811b12bf..d79508af 100644 --- a/.travis.yml +++ b/.travis.yml @@ -71,15 +71,6 @@ matrix: env: COMPILER='clang++-6.0' CPP17=1 - - os: linux - compiler: clang - addons: - apt: - sources: *all_sources - packages: ['clang-8', 'libstdc++-8-dev'] - env: COMPILER='clang++-8' CPP17=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1 - - # GCC builds - os: linux compiler: gcc @@ -97,14 +88,6 @@ matrix: packages: ['g++-6'] env: COMPILER='g++-6' CPP14=1 - - os: linux - compiler: gcc - addons: - apt: - sources: *all_sources - packages: ['g++-7', 'lcov'] - env: COMPILER='g++-7' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1 - # Special builds, e.g. conan - language: python