83 lines
2.1 KiB
Bash
Executable File
83 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# DESCRIPTION: Verilator: CI build job script
|
|
#
|
|
# SPDX-FileCopyrightText: 2026 Wilson Snyder
|
|
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
|
|
|
################################################################################
|
|
# Executed in the 'build' stage.
|
|
################################################################################
|
|
|
|
# Destructive to the checkout (reconfigures and rebuilds); never run locally
|
|
if [ "$GITHUB_ACTIONS" != "true" ]; then
|
|
echo "ERROR: $(basename "$0") must only be run in GitHub Actions CI" >&2
|
|
exit 1
|
|
fi
|
|
|
|
set -e
|
|
set -x
|
|
|
|
source "$(dirname "$0")/ci-common.bash"
|
|
|
|
################################################################################
|
|
# Parse arguments
|
|
|
|
OPT_ASAN=0
|
|
OPT_CCWARN=0
|
|
OPT_GCOV=0
|
|
OPT_COMPILER=
|
|
OPT_PREFIX=
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
--asan) OPT_ASAN=1 ;;
|
|
--ccwarn) OPT_CCWARN=1 ;;
|
|
--compiler)
|
|
[ $# -ge 2 ] || fatal "--compiler requires an argument"
|
|
OPT_COMPILER="$2"
|
|
shift
|
|
;;
|
|
--gcov) OPT_GCOV=1 ;;
|
|
--prefix)
|
|
[ $# -ge 2 ] || fatal "--prefix requires an argument"
|
|
OPT_PREFIX="$2"
|
|
shift
|
|
;;
|
|
*) fatal "Unknown option: '$1'" ;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
[ -n "$OPT_COMPILER" ] || fatal "--compiler is required"
|
|
[ -n "$OPT_PREFIX" ] || fatal "--prefix is required"
|
|
|
|
# Map the compiler name to the executable name configure CXX expects
|
|
case "$OPT_COMPILER" in
|
|
clang) CXX=clang++ ;;
|
|
gcc) CXX=g++ ;;
|
|
*) fatal "Unknown compiler: '$OPT_COMPILER'" ;;
|
|
esac
|
|
|
|
################################################################################
|
|
# Configure
|
|
|
|
CONFIGURE_ARGS="--prefix=$OPT_PREFIX --enable-longtests"
|
|
if [ "$OPT_CCWARN" = 1 ]; then
|
|
CONFIGURE_ARGS="$CONFIGURE_ARGS --enable-ccwarn"
|
|
fi
|
|
if [ "$OPT_ASAN" = 1 ]; then
|
|
CONFIGURE_ARGS="$CONFIGURE_ARGS --enable-dev-asan"
|
|
CXX="$CXX -DVL_LEAK_CHECKS"
|
|
fi
|
|
if [ "$OPT_GCOV" = 1 ]; then
|
|
CONFIGURE_ARGS="$CONFIGURE_ARGS --enable-dev-gcov"
|
|
fi
|
|
autoconf
|
|
./configure $CONFIGURE_ARGS CXX="$CXX"
|
|
|
|
################################################################################
|
|
# Build
|
|
|
|
ccache -z
|
|
"$MAKE" -j "$NPROC" -k
|
|
ccache -svv
|