Merge pull request #5514 from rocallahan/idstring-safety #3481
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Compiler testing | |
| on: | |
| # always test main | |
| push: | |
| branches: | |
| - main | |
| # test PRs | |
| pull_request: | |
| # allow triggering tests, ignores skip check | |
| workflow_dispatch: | |
| 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: | |
| # don't run on documentation changes | |
| paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' | |
| # cancel previous builds if a new commit is pushed | |
| # but never cancel main | |
| cancel_others: ${{ github.ref != 'refs/heads/main' }} | |
| test-compile: | |
| runs-on: ${{ matrix.os }} | |
| needs: pre_job | |
| if: needs.pre_job.outputs.should_skip != 'true' | |
| env: | |
| CXXFLAGS: ${{ startsWith(matrix.compiler, 'gcc') && '-Wp,-D_GLIBCXX_ASSERTIONS' || ''}} | |
| CC_SHORT: ${{ startsWith(matrix.compiler, 'gcc') && 'gcc' || 'clang' }} | |
| strategy: | |
| matrix: | |
| os: | |
| - ubuntu-latest | |
| compiler: | |
| # oldest supported | |
| - 'clang-10' | |
| - 'gcc-10' | |
| # newest, make sure to update maximum standard step to match | |
| - 'clang-19' | |
| - 'gcc-14' | |
| include: | |
| # macOS x86 | |
| - os: macos-15-intel | |
| compiler: 'clang-19' | |
| # macOS arm | |
| - os: macos-latest | |
| compiler: 'clang-19' | |
| fail-fast: false | |
| steps: | |
| - name: Checkout Yosys | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| persist-credentials: false | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-build-env | |
| with: | |
| runs-on: ${{ matrix.os }} | |
| get-build-deps: true | |
| - name: Setup Cpp | |
| uses: aminya/setup-cpp@v1 | |
| with: | |
| compiler: ${{ matrix.compiler }} | |
| - name: Tool versions | |
| shell: bash | |
| run: | | |
| $CC --version | |
| $CXX --version | |
| # minimum standard | |
| - name: Build C++17 | |
| shell: bash | |
| run: | | |
| make config-$CC_SHORT | |
| make -j$procs CXXSTD=c++17 compile-only | |
| # maximum standard, only on newest compilers | |
| - name: Build C++20 | |
| if: ${{ matrix.compiler == 'clang-19' || matrix.compiler == 'gcc-14' }} | |
| shell: bash | |
| run: | | |
| make config-$CC_SHORT | |
| make -j$procs CXXSTD=c++20 compile-only |