name: Compiler testing on: [push, pull_request] jobs: pre_job: runs-on: ubuntu-latest outputs: should_skip: ${{ steps.skip_check.outputs.should_skip }} steps: - id: skip_check uses: fkirc/skip-duplicate-actions@v5 with: paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' # cancel previous builds if a new commit is pushed cancel_others: 'true' # only run on push *or* pull_request, not both concurrent_skipping: 'same_content_newer' test-compile: runs-on: ${{ matrix.os }} needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' env: CXXSTD: ${{ matrix.cpp_std }} CXXFLAGS: ${{ startsWith(matrix.compiler, 'gcc') && '-Wp,-D_GLIBCXX_ASSERTIONS' || ''}} CC_SHORT: ${{ startsWith(matrix.compiler, 'gcc') && 'gcc' || 'clang' }} strategy: matrix: os: - ubuntu-22.04 compiler: - 'clang-12' - 'gcc-11' cpp_std: - 'c++11' - 'c++14' - 'c++17' - 'c++20' include: # macOS builds - os: macos-latest compiler: 'clang' cpp_std: 'c++11' - os: macos-13 compiler: 'clang' cpp_std: 'c++11' - os: macos-13 compiler: 'clang' cpp_std: 'c++17' # ubuntu-22.04 compilers - os: ubuntu-22.04 compiler: 'clang-11' cpp_std: 'c++11' - os: ubuntu-22.04 compiler: 'clang-13' cpp_std: 'c++11' # ubuntu-latest compilers - os: ubuntu-latest compiler: 'clang-14' cpp_std: 'c++11' - os: ubuntu-latest compiler: 'clang-15' cpp_std: 'c++11' - os: ubuntu-latest compiler: 'clang-16' cpp_std: 'c++11' - os: ubuntu-latest compiler: 'clang-17' cpp_std: 'c++11' - os: ubuntu-latest compiler: 'gcc-10' cpp_std: 'c++11' - os: ubuntu-latest compiler: 'gcc-12' cpp_std: 'c++11' - os: ubuntu-latest compiler: 'gcc-13' cpp_std: 'c++11' fail-fast: false steps: - name: Checkout Yosys uses: actions/checkout@v4 - name: Setup environment uses: ./.github/actions/setup-build-env - name: Setup Cpp uses: aminya/setup-cpp@v1 with: compiler: ${{ matrix.compiler }} - name: Tool versions shell: bash run: | $CC --version $CXX --version - name: Build shell: bash run: | make config-$CC_SHORT make -j$procs CXXSTD=$CXXSTD - name: Log yosys-config output run: | ./yosys-config || true