100 lines
2.8 KiB
YAML
100 lines
2.8 KiB
YAML
---
|
|
# DESCRIPTION: Github actions config
|
|
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
|
|
|
name: reusable-build
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
sha:
|
|
description: "Commit SHA to build"
|
|
required: true
|
|
type: string
|
|
os: # e.g. ubuntu-24.04
|
|
required: true
|
|
type: string
|
|
cc: # 'clang' or 'gcc'
|
|
required: true
|
|
type: string
|
|
os-name: # 'linux' or 'osx'
|
|
required: true
|
|
type: string
|
|
dev-asan:
|
|
required: true
|
|
type: number
|
|
dev-gcov:
|
|
required: true
|
|
type: number
|
|
outputs:
|
|
archive:
|
|
description: "Name of the built repository archive artifact"
|
|
value: ${{ jobs.build.outputs.archive }}
|
|
|
|
env:
|
|
CI_OS_NAME: ${{ inputs.os-name }}
|
|
CCACHE_COMPRESS: 1
|
|
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
|
CCACHE_LIMIT_MULTIPLE: 0.95
|
|
INSTALL_DIR: ${{ github.workspace }}/install
|
|
RELOC_DIR: ${{ github.workspace }}/relloc
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: repo
|
|
|
|
jobs:
|
|
|
|
build:
|
|
name: Build
|
|
runs-on: ${{ inputs.os }}
|
|
outputs:
|
|
archive: ${{ steps.create-archive.outputs.archive }}
|
|
env:
|
|
CI_BUILD_STAGE_NAME: build
|
|
CI_DEV_ASAN: ${{ inputs.dev-asan }}
|
|
CI_DEV_GCOV: ${{ inputs.dev-gcov }}
|
|
CI_RUNS_ON: ${{ inputs.os }}
|
|
CXX: ${{ inputs.cc == 'clang' && 'clang++' || 'g++' }}
|
|
CACHE_BASE_KEY: build-${{ inputs.os }}-${{ inputs.cc }}
|
|
CCACHE_MAXSIZE: 1000M # Per build matrix entry (* 5 = 5000M in total)
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v5
|
|
with:
|
|
path: repo
|
|
ref: ${{ inputs.sha }}
|
|
fetch-depth: ${{ inputs.dev-gcov && '0' || '1' }} # Coverage flow needs full history
|
|
|
|
- name: Cache $CCACHE_DIR
|
|
uses: actions/cache@v4
|
|
env:
|
|
CACHE_KEY: ${{ env.CACHE_BASE_KEY }}-ccache
|
|
with:
|
|
path: ${{ env.CCACHE_DIR }}
|
|
key: ${{ env.CACHE_KEY }}-${{ inputs.sha }}
|
|
restore-keys: |
|
|
${{ env.CACHE_KEY }}-
|
|
|
|
- name: Install packages for build
|
|
run: ./ci/ci-install.bash
|
|
|
|
- name: Build
|
|
run: ./ci/ci-script.bash
|
|
|
|
- name: Create repository archive
|
|
id: create-archive
|
|
working-directory: ${{ github.workspace }}
|
|
run: |
|
|
# Name of the archive must be unique based on the build parameters
|
|
ARCHIVE=verilator-${{ inputs.sha }}-${{ inputs.os }}-${{ inputs.cc }}-${{ inputs.dev-asan }}-${{ inputs.dev-gcov }}.tar.gz
|
|
tar --posix -c -z -f $ARCHIVE repo
|
|
echo "archive=$ARCHIVE" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Upload repository archive
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
path: ${{ github.workspace }}/${{ steps.create-archive.outputs.archive }}
|
|
name: ${{ steps.create-archive.outputs.archive }}
|