verilator/.travis.yml
2020-05-16 14:59:30 -04:00

130 lines
3.3 KiB
YAML

# DESCRIPTION: Travis-CI config
#
# Copyright 2003-2020 by Wilson Snyder. This program is free software; you
# can redistribute it and/or modify it under the terms of either the GNU
# Lesser General Public License Version 3 or the Perl Artistic License
# Version 2.0.
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
version: ~> 1.0
os: linux
language: cpp
cache: ccache
env:
global:
- VERILATOR_CACHE=$HOME/verilator_cache
- VERILATOR_ROOT=$PWD
- VERILATOR_NUM_JOBS=$(echo `nproc` + 1 | bc)
- VERILATOR_CONFIG_FLAGS="--enable-maintainer-mode --enable-longtests"
- VERILATOR_AUTHOR_SITE=1
cache:
directories:
- $VERILATOR_CACHE
before_install:
# Perl modules needed for testing
# Not listing Bit::Vector as slow to install, and only skips one test
- touch temp.cpp ; g++ -E -dM -c temp.cpp | sort ; rm -rf temp.cpp
- yes yes | sudo cpan -fi Unix::Processors Parallel::Forker
- sudo apt-get install gdb gtkwave lcov
- sudo apt-get install libfl-dev || true
- sudo apt-get install libgoogle-perftools-dev
before_script:
- bash -x ci/build_vcddiff.sh
- bash -x ci/build_verilator.sh
after_script:
- ccache -s
stages:
- "Build Verilator"
- test
jobs:
# compiler: gcc clang
# 12.04 dist: precise perl problem
# 14.04 dist: trusty cron
# 16.04 dist: xenial cron cron
# 18.04 dist: bionic cron
# 20.04 dist: focal !cron cron
# 20.04 coverage cron
include:
- if: type != cron
stage: "Build Verilator"
name: "Build Verilator"
dist: focal
compiler: gcc
script: echo "Done building Verilator"
# Non-cron build will just run on whatever linux flavor we get
- if: type != cron
stage: test
name: "Dist test"
dist: focal
compiler: gcc
script: ci/test.sh dist
- if: type != cron
stage: test
name: "Vlt test"
dist: focal
compiler: gcc
script: ci/test.sh vlt
- if: type != cron
stage: test
name: "Vltmt set 0 test"
dist: focal
compiler: gcc
script: ci/test.sh vltmt0
- if: type != cron
stage: test
name: "Vltmt set 1 test"
dist: focal
compiler: gcc
script: ci/test.sh vltmt1
# Cron builds try different OS/compiler combinations
- if: type = cron
dist: trusty
compiler: gcc
stage: "Build Verilator"
name: "14.04 gcc build+test"
script: ci/test.sh all
- if: type = cron
dist: xenial
compiler: gcc
stage: "Build Verilator"
name: "16.04 gcc build+test"
script: ci/test.sh all
- if: type = cron
dist: bionic
compiler: gcc
stage: "Build Verilator"
name: "18.04 gcc build+test"
script: ci/test.sh all
- if: type = cron
dist: xenial
compiler: clang
stage: "Build Verilator"
name: "16.04 clang build+test"
script: ci/test.sh all
- if: type = cron
dist: focal
compiler: clang
stage: "Build Verilator"
name: "20.04 clang build+test"
script: ci/test.sh all
# Cron coverage runs
- if: type = cron
dist: focal
compiler: gcc
stage: "Build Verilator"
name: "Coverage"
script: ci/test.sh coverage
notifications:
email:
if: repo = verilator/verilator
recipients:
- wsnyder@wsnyder.org
- todd.strader@gmail.com