Extract case with forcing struct to separate test #570
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
| --- | |
| # DESCRIPTION: Github actions config | |
| # This name is key to badges in README.rst, so we use the name build | |
| # SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 | |
| name: build-test | |
| on: | |
| push: | |
| branches-ignore: | |
| - 'dependabot/**' # Avoid duplicates: only run the PR, not the push | |
| pull_request: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: '0 0 * * 0' # weekly | |
| permissions: | |
| contents: read | |
| defaults: | |
| run: | |
| working-directory: repo | |
| concurrency: | |
| # At most 1 job per branch. Auto cancel on pull requests and on all forks | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' || github.repository != 'verilator/verilator' }} | |
| jobs: | |
| build-2404-gcc: | |
| name: Build | ${{ matrix.os }} | ${{ matrix.cc }}${{ matrix.asan && ' | asan' || '' }} | |
| uses: ./.github/workflows/reusable-build.yml | |
| with: | |
| sha: ${{ github.sha }} | |
| os: ${{ matrix.os }} | |
| os-name: linux | |
| cc: ${{ matrix.cc }} | |
| dev-asan: ${{ matrix.asan }} | |
| dev-gcov: 0 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - {os: ubuntu-24.04, cc: gcc, asan: 0} | |
| build-2404-clang: | |
| name: Build | ${{ matrix.os }} | ${{ matrix.cc }}${{ matrix.asan && ' | asan' || '' }} | |
| uses: ./.github/workflows/reusable-build.yml | |
| with: | |
| sha: ${{ github.sha }} | |
| os: ${{ matrix.os }} | |
| os-name: linux | |
| cc: ${{ matrix.cc }} | |
| dev-asan: ${{ matrix.asan }} | |
| dev-gcov: 0 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - {os: ubuntu-24.04, cc: clang, asan: 1} | |
| build-2204-gcc: | |
| name: Build | ${{ matrix.os }} | ${{ matrix.cc }}${{ matrix.asan && ' | asan' || '' }} | |
| uses: ./.github/workflows/reusable-build.yml | |
| with: | |
| sha: ${{ github.sha }} | |
| os: ${{ matrix.os }} | |
| os-name: linux | |
| cc: ${{ matrix.cc }} | |
| dev-asan: ${{ matrix.asan }} | |
| dev-gcov: 0 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - {os: ubuntu-22.04, cc: gcc, asan: 0} | |
| build-2204-clang: | |
| name: Build | ${{ matrix.os }} | ${{ matrix.cc }}${{ matrix.asan && ' | asan' || '' }} | |
| uses: ./.github/workflows/reusable-build.yml | |
| with: | |
| sha: ${{ github.sha }} | |
| os: ${{ matrix.os }} | |
| os-name: linux | |
| cc: ${{ matrix.cc }} | |
| dev-asan: ${{ matrix.asan }} | |
| dev-gcov: 0 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - {os: ubuntu-22.04, cc: clang, asan: 0} | |
| build-osx-gcc: | |
| name: Build | ${{ matrix.os }} | ${{ matrix.cc }}${{ matrix.asan && ' | asan' || '' }} | |
| uses: ./.github/workflows/reusable-build.yml | |
| with: | |
| sha: ${{ github.sha }} | |
| os: ${{ matrix.os }} | |
| os-name: osx | |
| cc: ${{ matrix.cc }} | |
| dev-asan: ${{ matrix.asan }} | |
| dev-gcov: 0 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - {os: macos-15, cc: gcc, asan: 0} | |
| build-osx-clang: | |
| name: Build | ${{ matrix.os }} | ${{ matrix.cc }}${{ matrix.asan && ' | asan' || '' }} | |
| uses: ./.github/workflows/reusable-build.yml | |
| with: | |
| sha: ${{ github.sha }} | |
| os: ${{ matrix.os }} | |
| os-name: osx | |
| cc: ${{ matrix.cc }} | |
| dev-asan: ${{ matrix.asan }} | |
| dev-gcov: 0 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - {os: macos-15, cc: clang, asan: 0} | |
| build-windows: | |
| name: Build | ${{ matrix.os }} | ${{ matrix.cc }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - {os: windows-2025, cc: msvc} | |
| env: | |
| CI_OS_NAME: win | |
| CCACHE_COMPRESS: 1 | |
| CCACHE_DIR: ${{ github.workspace }}/.ccache | |
| CCACHE_LIMIT_MULTIPLE: 0.95 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| path: repo | |
| - name: Cache $CCACHE_DIR | |
| uses: actions/cache@v5 | |
| with: | |
| path: ${{ env.CCACHE_DIR }} | |
| key: msbuild-msvc-cmake | |
| - name: compile | |
| env: | |
| WIN_FLEX_BISON: ${{ github.workspace }}/.ccache | |
| run: ./ci/ci-win-compile.ps1 | |
| - name: test build | |
| run: ./ci/ci-win-test.ps1 | |
| - name: Zip up repository | |
| run: Compress-Archive -LiteralPath install -DestinationPath verilator.zip | |
| - name: Upload zip archive | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| path: ${{ github.workspace }}/repo/verilator.zip | |
| name: verilator-win.zip | |
| test-2404-gcc: | |
| name: Test | ${{ matrix.os }} | ${{ matrix.cc }} | ${{ matrix.reloc && 'reloc | ' || '' }} ${{ matrix.suite }} | |
| needs: build-2404-gcc | |
| uses: ./.github/workflows/reusable-test.yml | |
| with: | |
| archive: ${{ needs.build-2404-gcc.outputs.archive }} | |
| os: ${{ matrix.os }} | |
| cc: ${{ matrix.cc }} | |
| reloc: ${{ matrix.reloc }} | |
| suite: ${{ matrix.suite }} | |
| dev-gcov: 0 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Ubuntu 24.04 gcc | |
| - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: dist-vlt-0} | |
| - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: dist-vlt-1} | |
| - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: dist-vlt-2} | |
| - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: dist-vlt-3} | |
| - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: vltmt-0} | |
| - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: vltmt-1} | |
| - {os: ubuntu-24.04, cc: gcc, reloc: 0, suite: vltmt-2} | |
| test-2404-clang: | |
| name: Test | ${{ matrix.os }} | ${{ matrix.cc }} | ${{ matrix.reloc && 'reloc | ' || '' }} ${{ matrix.suite }} | |
| needs: build-2404-clang | |
| uses: ./.github/workflows/reusable-test.yml | |
| with: | |
| archive: ${{ needs.build-2404-clang.outputs.archive }} | |
| os: ${{ matrix.os }} | |
| cc: ${{ matrix.cc }} | |
| reloc: ${{ matrix.reloc }} | |
| suite: ${{ matrix.suite }} | |
| dev-gcov: 0 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Ubuntu 24.04 clang | |
| - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: dist-vlt-0} | |
| - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: dist-vlt-1} | |
| - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: dist-vlt-2} | |
| - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: dist-vlt-3} | |
| - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: vltmt-0} | |
| - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: vltmt-1} | |
| - {os: ubuntu-24.04, cc: clang, reloc: 0, suite: vltmt-2} | |
| test-2204-gcc: | |
| name: Test | ${{ matrix.os }} | ${{ matrix.cc }} | ${{ matrix.reloc && 'reloc | ' || '' }} ${{ matrix.suite }} | |
| needs: build-2204-gcc | |
| uses: ./.github/workflows/reusable-test.yml | |
| with: | |
| archive: ${{ needs.build-2204-gcc.outputs.archive }} | |
| os: ${{ matrix.os }} | |
| cc: ${{ matrix.cc }} | |
| reloc: ${{ matrix.reloc }} | |
| suite: ${{ matrix.suite }} | |
| dev-gcov: 0 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Ubuntu 22.04 gcc | |
| - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: dist-vlt-0} | |
| - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: dist-vlt-1} | |
| - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: dist-vlt-2} | |
| - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: dist-vlt-3} | |
| - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: vltmt-0} | |
| - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: vltmt-1} | |
| - {os: ubuntu-22.04, cc: gcc, reloc: 0, suite: vltmt-2} | |
| test-2204-clang: | |
| name: Test | ${{ matrix.os }} | ${{ matrix.cc }} | ${{ matrix.reloc && 'reloc | ' || '' }} ${{ matrix.suite }} | |
| needs: build-2204-clang | |
| uses: ./.github/workflows/reusable-test.yml | |
| with: | |
| archive: ${{ needs.build-2204-clang.outputs.archive }} | |
| os: ${{ matrix.os }} | |
| cc: ${{ matrix.cc }} | |
| reloc: ${{ matrix.reloc }} | |
| suite: ${{ matrix.suite }} | |
| dev-gcov: 0 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Ubuntu 22.04 clang, also test relocation | |
| - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: dist-vlt-0} | |
| - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: dist-vlt-1} | |
| - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: dist-vlt-2} | |
| - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: dist-vlt-3} | |
| - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: vltmt-0} | |
| - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: vltmt-1} | |
| - {os: ubuntu-22.04, cc: clang, reloc: 1, suite: vltmt-2} | |
| lint-py: | |
| name: Lint Python | |
| uses: ./.github/workflows/reusable-lint-py.yml | |
| passed: | |
| name: Test suite passed | |
| if: always() | |
| needs: | |
| - build-2404-gcc | |
| - build-2404-clang | |
| - build-2204-gcc | |
| - build-2204-clang | |
| - build-osx-gcc | |
| - build-osx-clang | |
| - build-windows | |
| - test-2404-gcc | |
| - test-2404-clang | |
| - test-2204-gcc | |
| - test-2204-clang | |
| - lint-py | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Decide whether the needed jobs succeeded or failed | |
| uses: re-actors/alls-green@release/v1 | |
| with: | |
| jobs: ${{ toJSON(needs) }} |