# 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