--- # 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 }}