# 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 # Only works on 20.04 - sudo apt-get install libsystemc-dev || true before_script: - bash -x ci/build_vcddiff.sh - bash -x ci/build_verilator.sh - bin/verilator -V || true after_script: - ccache -s stages: - vbuild - 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: vbuild 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: "Test Dist" dist: focal compiler: gcc script: ci/test.sh dist - if: type != cron stage: test name: "Test Vlt" dist: focal compiler: gcc script: ci/test.sh vlt - if: type != cron stage: test name: "Test Vltmt set 0" dist: focal compiler: gcc script: ci/test.sh vltmt0 - if: type != cron stage: test name: "Test Vltmt set 1" dist: focal compiler: gcc script: ci/test.sh vltmt1 # Cron builds try different OS/compiler combinations - if: type = cron dist: trusty compiler: gcc stage: vbuild name: "14.04 gcc build" script: echo - if: type = cron dist: trusty compiler: gcc stage: test name: "14.04 gcc distvlt" script: ci/test.sh distvlt - if: type = cron dist: trusty compiler: gcc stage: test name: "14.04 gcc vltmt0" script: ci/test.sh vltmt0 - if: type = cron dist: trusty compiler: gcc stage: test name: "14.04 gcc vltmt1" script: ci/test.sh vltmt1 # - if: type = cron dist: xenial compiler: gcc stage: vbuild name: "16.04 gcc build" script: echo - if: type = cron dist: xenial compiler: gcc stage: test name: "16.04 gcc distvlt" script: ci/test.sh distvlt - if: type = cron dist: xenial compiler: gcc stage: test name: "16.04 gcc vltmt0" script: ci/test.sh vltmt0 - if: type = cron dist: xenial compiler: gcc stage: test name: "16.04 gcc vltmt1" script: ci/test.sh vltmt1 # - if: type = cron dist: bionic compiler: gcc stage: vbuild name: "18.04 gcc build" script: echo - if: type = cron dist: bionic compiler: gcc stage: test name: "18.04 gcc distvlt" script: ci/test.sh distvlt - if: type = cron dist: bionic compiler: gcc stage: test name: "18.04 gcc vltmt0" script: ci/test.sh vltmt0 - if: type = cron dist: bionic compiler: gcc stage: test name: "18.04 gcc vltmt1" script: ci/test.sh vltmt1 # - if: type = cron dist: xenial compiler: clang stage: vbuild name: "16.04 clang build" script: echo - if: type = cron dist: xenial compiler: clang stage: test name: "16.04 clang distvlt" script: ci/test.sh distvlt - if: type = cron dist: xenial compiler: clang stage: test name: "16.04 clang vltmt0" script: ci/test.sh vltmt0 - if: type = cron dist: xenial compiler: clang stage: test name: "16.04 clang vltmt1" script: ci/test.sh vltmt1 # - if: type = cron dist: focal compiler: clang stage: vbuild name: "20.04 clang build" script: echo - if: type = cron dist: focal compiler: clang stage: test name: "20.04 clang distvlt" script: ci/test.sh distvlt - if: type = cron dist: focal compiler: clang stage: test name: "20.04 clang vltmt0" script: ci/test.sh vltmt0 - if: type = cron dist: focal compiler: clang stage: test name: "20.04 clang vltmt1" script: ci/test.sh vltmt1 # # Cron coverage runs (two parts to avoid 50min timeout) - if: type = cron dist: focal compiler: gcc stage: vbuild name: "Coverage Build" script: ci/test.sh coverage-build - if: type = cron dist: focal compiler: gcc stage: test name: "Coverage dist" script: ci/test.sh coverage-dist - if: type = cron dist: focal compiler: gcc stage: test name: "Coverage vlt set 0" script: ci/test.sh coverage-vlt0 - if: type = cron dist: focal compiler: gcc stage: test name: "Coverage vltmt set 0" script: ci/test.sh coverage-vltmt0 - if: type = cron dist: focal compiler: gcc stage: test name: "Coverage vlt set 1" script: ci/test.sh coverage-vlt1 - if: type = cron dist: focal compiler: gcc stage: test name: "Coverage vltmt set 1" script: ci/test.sh coverage-vltmt1 - if: type = cron dist: focal compiler: gcc stage: test name: "Coverage vlt set 2" script: ci/test.sh coverage-vlt2 - if: type = cron dist: focal compiler: gcc stage: test name: "Coverage vltmt set 2" script: ci/test.sh coverage-vltmt2 - if: type = cron dist: focal compiler: gcc stage: test name: "Coverage vlt set 3" script: ci/test.sh coverage-vlt3 - if: type = cron dist: focal compiler: gcc stage: test name: "Coverage vltmt set 3" script: ci/test.sh coverage-vltmt3 notifications: email: if: repo = verilator/verilator recipients: - wsnyder@wsnyder.org - todd.strader@gmail.com