287 lines
8.9 KiB
YAML
287 lines
8.9 KiB
YAML
---
|
|
# 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@v5
|
|
with:
|
|
path: repo
|
|
- name: Cache $CCACHE_DIR
|
|
uses: actions/cache@v4
|
|
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@v5
|
|
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) }}
|