From 423a9de3baa2570df9efc0864a1045edb72ab5e5 Mon Sep 17 00:00:00 2001 From: christophe Date: Tue, 26 Dec 2023 11:15:21 +0100 Subject: [PATCH] Run on multiple platforms to test multiple compiler versions --- .github/workflows/ci.yml | 186 ++++++++++----------------------------- 1 file changed, 46 insertions(+), 140 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e88ac1af..fa5665b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,160 +3,66 @@ run-name: ${{ github.actor }} is testing out GitHub Actions 🚀 on: push: - pull_request: - types: [opened] + pull_request_target: + types: [opened, edited, reopened] jobs: - windows-latest: - runs-on: windows-latest + platforms: strategy: fail-fast: false matrix: std: [98, 11, 14, 17, 20] config: [Debug, Release] + platform: [ubuntu-latest, ubuntu-20.04, macos-latest, macos-11, windows-latest, windows-2019] + + runs-on: ${{matrix.platform}} steps: - - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." - - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" - - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." - - name: Check out repository code - uses: actions/checkout@v4 - - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." - - run: echo "🖥️ The workflow is now ready to test your code on the runner." + - name: Github Actions init + run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." + run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" + run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." + run: echo "🖥️ The workflow is now ready to test your code on the runner." + run: echo "🍏 This job's status is ${{ job.status }}." - name: List files in the repository run: | ls ${{ github.workspace }} - - run: echo "🍏 This job's status is ${{ job.status }}." - - name: CMake Version - run: cmake --version - - run: cmake -S. -B ./build_auto - - run: cmake -S. -B ./build_pure_std -DGLM_TEST_FORCE_PURE=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_pure_ext -DGLM_TEST_FORCE_PURE=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake -S. -B ./build_sse2_std -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_sse2_ext -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake -S. -B ./build_avx1_std -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_avx1_ext -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake -S. -B ./build_avx2_std -DGLM_TEST_ENABLE_SIMD_AVX2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_avx2_ext -DGLM_TEST_ENABLE_SIMD_AVX2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake --build ./build_auto --config ${{matrix.config}} - - run: cmake --build ./build_pure_std --config ${{matrix.config}} - - run: cmake --build ./build_pure_ext --config ${{matrix.config}} - - run: cmake --build ./build_sse2_std --config ${{matrix.config}} - - run: cmake --build ./build_sse2_ext --config ${{matrix.config}} - - run: cmake --build ./build_avx1_std --config ${{matrix.config}} - - run: cmake --build ./build_avx1_ext --config ${{matrix.config}} - - run: cmake --build ./build_avx2_std --config ${{matrix.config}} - - run: cmake --build ./build_avx2_ext --config ${{matrix.config}} - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_auto - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_pure_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_pure_ext - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_sse2_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_sse2_ext - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx1_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx1_ext - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx2_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx2_ext - ubuntu-latest: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - # compiler: [gcc, clang] - std: [98, 11, 14, 17, 20] - config: [Debug, Release] - - steps: - - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." - - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" - - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." - name: Check out repository code uses: actions/checkout@v4 - - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." - - run: echo "🖥️ The workflow is now ready to test your code on the runner." - - name: List files in the repository - run: | - ls ${{ github.workspace }} - - run: echo "🍏 This job's status is ${{ job.status }}." -# - name: make (with ${{matrix.compiler}}, for ${{matrix.os}}) -# env: -# CC: ${{ matrix.compiler }} -# - name: Compiler Version -# run: ${{matrix.compiler}} --version - name: CMake Version run: cmake --version - - run: cmake -S. -B ./build_unknown -DGLM_DISABLE_AUTO_DETECTION=ON - - run: cmake -S. -B ./build_auto - - run: cmake -S. -B ./build_pure_std -DGLM_TEST_FORCE_PURE=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_pure_ext -DGLM_TEST_FORCE_PURE=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake -S. -B ./build_sse2_std -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_sse2_ext -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake -S. -B ./build_avx1_std -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_avx1_ext -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake -S. -B ./build_avx2_std -DGLM_TEST_ENABLE_SIMD_AVX2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_avx2_ext -DGLM_TEST_ENABLE_SIMD_AVX2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake --build ./build_auto --config ${{matrix.config}} - - run: cmake --build ./build_pure_std --config ${{matrix.config}} - - run: cmake --build ./build_pure_ext --config ${{matrix.config}} - - run: cmake --build ./build_sse2_std --config ${{matrix.config}} - - run: cmake --build ./build_sse2_ext --config ${{matrix.config}} - - run: cmake --build ./build_avx1_std --config ${{matrix.config}} - - run: cmake --build ./build_avx1_ext --config ${{matrix.config}} - - run: cmake --build ./build_avx2_std --config ${{matrix.config}} - - run: cmake --build ./build_avx2_ext --config ${{matrix.config}} - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_auto - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_pure_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_pure_ext - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_sse2_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_sse2_ext - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx1_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx1_ext - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx2_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx2_ext - macos-latest: - runs-on: macos-latest - strategy: - fail-fast: false - matrix: - std: [98, 11, 14, 17, 20] - config: [Debug, Release] + - name: Build and Test with automatic detection + run: cmake -S. -B ./build_auto + run: cmake --build ./build_auto --config ${{matrix.config}} + run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_auto + - name: Build and Test GLM_TEST_FORCE_PURE + run: cmake -S. -B ./build_pure_std -DGLM_TEST_FORCE_PURE=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON + run: cmake -S. -B ./build_pure_ext -DGLM_TEST_FORCE_PURE=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON + run: cmake --build ./build_pure_std --config ${{matrix.config}} + run: cmake --build ./build_pure_ext --config ${{matrix.config}} + run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_pure_std + run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_pure_ext + - name: Build and Test GLM_TEST_ENABLE_SIMD_SSE2 + run: cmake -S. -B ./build_sse2_std -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON + run: cmake -S. -B ./build_sse2_ext -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON + run: cmake --build ./build_sse2_std --config ${{matrix.config}} + run: cmake --build ./build_sse2_ext --config ${{matrix.config}} + run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_sse2_std + run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_sse2_ext + - name: Build and Test GLM_TEST_ENABLE_SIMD_AVX + run: cmake -S. -B ./build_avx1_std -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON + run: cmake -S. -B ./build_avx1_ext -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON + run: cmake --build ./build_avx1_std --config ${{matrix.config}} + run: cmake --build ./build_avx1_ext --config ${{matrix.config}} + run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx1_std + run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx1_ext + - if: "contains(${{matrix.platform}}, 'ubuntu') || contains(${{matrix.platform}}, 'windows')" + name: Build and Test GLM_TEST_ENABLE_SIMD_AVX + run: cmake -S. -B ./build_avx2_std -DGLM_TEST_ENABLE_SIMD_AVX2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON + run: cmake -S. -B ./build_avx2_ext -DGLM_TEST_ENABLE_SIMD_AVX2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON + run: cmake --build ./build_avx2_std --config ${{matrix.config}} + run: cmake --build ./build_avx2_ext --config ${{matrix.config}} + run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx2_std + run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx2_ext - steps: - - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." - - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" - - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." - - name: Check out repository code - uses: actions/checkout@v4 - - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." - - run: echo "🖥️ The workflow is now ready to test your code on the runner." - - name: List files in the repository - run: | - ls ${{ github.workspace }} - - run: echo "🍏 This job's status is ${{ job.status }}." - - name: CMake Version - run: cmake --version - - name: Clang Version - run: clang --version - - run: cmake -S. -B ./build_auto - - run: cmake -S. -B ./build_unknown -DGLM_DISABLE_AUTO_DETECTION=ON - - run: cmake -S. -B ./build_pure_std -DGLM_TEST_FORCE_PURE=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_pure_ext -DGLM_TEST_FORCE_PURE=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake -S. -B ./build_sse2_std -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_sse2_ext -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake -S. -B ./build_avx1_std -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON - - run: cmake -S. -B ./build_avx1_ext -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_CXX_${{matrix.std}}=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - run: cmake --build ./build_auto --config ${{matrix.config}} - - run: cmake --build ./build_unknown --config ${{matrix.config}} - - run: cmake --build ./build_pure_std --config ${{matrix.config}} - - run: cmake --build ./build_pure_ext --config ${{matrix.config}} - - run: cmake --build ./build_sse2_std --config ${{matrix.config}} - - run: cmake --build ./build_sse2_ext --config ${{matrix.config}} - - run: cmake --build ./build_avx1_std --config ${{matrix.config}} - - run: cmake --build ./build_avx1_ext --config ${{matrix.config}} - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_auto - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_unknown - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_pure_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_pure_ext - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_sse2_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_sse2_ext - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx1_std - - run: ctest --verbose -C ${{matrix.config}} --test-dir ./build_avx1_ext