diff --git a/.github/actions/setup-cpp/action.yml b/.github/actions/setup-cpp/action.yml index 8947b695..c6f0ed0b 100644 --- a/.github/actions/setup-cpp/action.yml +++ b/.github/actions/setup-cpp/action.yml @@ -1,4 +1,9 @@ name: Setup C++ envirionment +inputs: + toolchain: + description: Compiler toolchain to use (Clang, GCC, or MSVC) + required: false + default: 'Clang' runs: using: "composite" @@ -7,6 +12,20 @@ runs: if: ${{ runner.os != 'Windows' }} uses: ./.github/actions/install-ninja + - name: Set Clang as compiler + if: ${{ inputs.toolchain == 'Clang' }} + shell: bash + run: | + echo "CC=/usr/bin/clang" >> $GITHUB_ENV + echo "CXX=/usr/bin/clang++" >> $GITHUB_ENV + + - name: Set GCC as compiler + if: ${{ inputs.toolchain == 'GCC' }} + shell: bash + run: | + echo "CC=/usr/bin/gcc" >> $GITHUB_ENV + echo "CXX=/usr/bin/g++" >> $GITHUB_ENV + - name: Setup VS Developer Command Prompt if: ${{ runner.os == 'Windows' }} uses: ilammy/msvc-dev-cmd@v1 diff --git a/.github/workflows/validate-cpp.yml b/.github/workflows/validate-cpp.yml index 6d83c390..e1815379 100644 --- a/.github/workflows/validate-cpp.yml +++ b/.github/workflows/validate-cpp.yml @@ -12,34 +12,38 @@ env: jobs: test: - name: Build and Test [${{ matrix.os }}][${{ matrix.mode }}] - runs-on: ${{ matrix.os }} + name: Build and Test [${{ matrix.toolchain }}][${{ matrix.mode }}] + runs-on: ${{ (matrix.toolchain == 'MSVC') && 'windows-latest' || 'ubuntu-latest' }} strategy: matrix: mode: [Debug, Release] - os: [ubuntu-latest] # TODO: fix issues building GTest Binary with MSVC in GitHub Actions + toolchain: [Clang, GCC] # TODO: fix issues building GTest Binary with MSVC in GitHub Actions steps: - uses: actions/checkout@v3 - name: Setup uses: ./.github/actions/setup-cpp + with: + toolchain: ${{ matrix.toolchain }} - name: Unit tests run: ./unit_tests ${{ matrix.mode }} benchmark: - name: Benchmark [${{ matrix.os }}] - runs-on: ${{ matrix.os }} + name: Benchmark [${{ matrix.toolchain }}] + runs-on: ${{ (matrix.toolchain == 'MSVC') && 'windows-latest' || 'ubuntu-latest' }} strategy: matrix: - os: [ubuntu-latest, windows-latest] + toolchain: [Clang, GCC, MSVC] steps: - uses: actions/checkout@v3 - name: Setup uses: ./.github/actions/setup-cpp + with: + toolchain: ${{ matrix.toolchain }} - name: Build benchmark run: |