Travis -> Cirrus
diff --git a/.cirrus.yml b/.cirrus.yml new file mode 100644 index 0000000..b242dfc --- /dev/null +++ b/.cirrus.yml
@@ -0,0 +1,63 @@ +task: + name: build-test-trusty-gcc + container: + cpu: 4 + memory: 6 + dockerfile: .cirrus/Dockerfile.ubuntu14.04 + env: + CONFIG: gcc + build_script: .cirrus/step-build.sh + test_script: .cirrus/step-test.sh + +task: + name: build-test-trusty-clang + container: + cpu: 4 + memory: 6 + dockerfile: .cirrus/Dockerfile.ubuntu14.04 + env: + CONFIG: clang + build_script: .cirrus/step-build.sh + test_script: .cirrus/step-test.sh + +task: + name: build-test-bionic-gcc + container: + cpu: 4 + memory: 6 + dockerfile: .cirrus/Dockerfile.ubuntu18.04 + env: + CONFIG: gcc + build_script: .cirrus/step-build.sh + test_script: .cirrus/step-test.sh + +task: + name: build-test-bionic-clang + container: + cpu: 4 + memory: 6 + dockerfile: .cirrus/Dockerfile.ubuntu18.04 + env: + CONFIG: clang + build_script: .cirrus/step-build.sh + test_script: .cirrus/step-test.sh + +task: + name: build-test-high-sierra-clang + osx_instance: + image: high-sierra-xcode-9.4.1 + env: + CONFIG: clang + prepare_script: .cirrus/step-macos-prepare.sh + build_script: .cirrus/step-build.sh + test_script: .cirrus/step-test.sh + +task: + name: build-test-mojave-clang + osx_instance: + image: mojave-xcode-10.1 + env: + CONFIG: clang + prepare_script: .cirrus/step-macos-prepare.sh + build_script: .cirrus/step-build.sh + test_script: .cirrus/step-test.sh
diff --git a/.cirrus/Dockerfile.ubuntu14.04 b/.cirrus/Dockerfile.ubuntu14.04 new file mode 100644 index 0000000..35366c1 --- /dev/null +++ b/.cirrus/Dockerfile.ubuntu14.04
@@ -0,0 +1,20 @@ +FROM ubuntu:trusty-20181115 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN set -e -x ;\ + apt-get -y update ;\ + apt-get -y upgrade ;\ + apt-get -y install build-essential clang gperf bison flex libreadline-dev gawk \ + tcl-dev libffi-dev git graphviz xdot pkg-config python autoconf + +RUN set -e -x ;\ + cd /tmp ;\ + git clone git://github.com/steveicarus/iverilog.git ;\ + cd iverilog ;\ + autoconf ;\ + ./configure ;\ + make -j $(nproc) ;\ + make install ;\ + cd .. ;\ + rm -rf iverilog
diff --git a/.cirrus/Dockerfile.ubuntu18.04 b/.cirrus/Dockerfile.ubuntu18.04 new file mode 100644 index 0000000..06fa135 --- /dev/null +++ b/.cirrus/Dockerfile.ubuntu18.04
@@ -0,0 +1,20 @@ +FROM ubuntu:bionic-20181112 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN set -e -x ;\ + apt-get -y update ;\ + apt-get -y upgrade ;\ + apt-get -y install build-essential clang gperf bison flex libreadline-dev gawk \ + tcl-dev libffi-dev git graphviz xdot pkg-config python autoconf + +RUN set -e -x ;\ + cd /tmp ;\ + git clone git://github.com/steveicarus/iverilog.git ;\ + cd iverilog ;\ + autoconf ;\ + ./configure ;\ + make -j $(nproc) ;\ + make install ;\ + cd .. ;\ + rm -rf iverilog
diff --git a/.cirrus/step-build.sh b/.cirrus/step-build.sh new file mode 100755 index 0000000..dc29271 --- /dev/null +++ b/.cirrus/step-build.sh
@@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -e -x + +if [ "$CONFIG" = "gcc" ]; then + echo "Configuring for gcc." + make config-gcc +elif [ "$CONFIG" = "clang" ]; then + echo "Configuring for clang." + make config-clang +else + echo "CONFIG needs to be set to either 'clang' or 'gcc'" >&2 + exit 1 +fi + +make -j $(nproc)
diff --git a/.cirrus/step-macos-prepare.sh b/.cirrus/step-macos-prepare.sh new file mode 100755 index 0000000..8323cf2 --- /dev/null +++ b/.cirrus/step-macos-prepare.sh
@@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Prepare Homebrew + +brew update +brew tap Homebrew/bundle +brew bundle +brew install ccache + +# Install Icarus Verilog + +mkdir -p ~/.local-src +mkdir -p ~/.local-bin +cd ~/.local-src +git clone git://github.com/steveicarus/iverilog.git +cd iverilog +autoconf +./configure --prefix=$HOME/.local-bin +make -j $(nproc) +make install + +# Configure new PATH + +export PATH="$HOME/.local-bin/bin:$PATH" +export PATH="/usr/local/opt/ccache/libexec:$PATH"
diff --git a/.cirrus/step-test.sh b/.cirrus/step-test.sh new file mode 100755 index 0000000..f479886 --- /dev/null +++ b/.cirrus/step-test.sh
@@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -e -x + +make -j $(nproc) test
diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 8aacbb8..0000000 --- a/.travis.yml +++ /dev/null
@@ -1,148 +0,0 @@ -sudo: false -language: cpp - -cache: - ccache: true - directories: - - ~/.local-bin - - -env: - global: - - MAKEFLAGS="-j 2" - -matrix: - include: - # Latest gcc-4.8, earliest version supported by Travis - - os: linux - addons: - apt: - packages: - - g++-4.8 - - gperf - - build-essential - - bison - - flex - - libreadline-dev - - gawk - - tcl-dev - - libffi-dev - - git - - graphviz - - xdot - - pkg-config - - python - env: - - MATRIX_EVAL="CONFIG=gcc && CC=gcc-4.8 && CXX=g++-4.8" - - # Latest gcc-6 on Travis Linux - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - - gperf - - build-essential - - bison - - flex - - libreadline-dev - - gawk - - tcl-dev - - libffi-dev - - git - - graphviz - - xdot - - pkg-config - - python - env: - - MATRIX_EVAL="CONFIG=gcc && CC=gcc-6 && CXX=g++-6" - - # Latest gcc supported on Travis Linux - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-7 - - gperf - - build-essential - - bison - - flex - - libreadline-dev - - gawk - - tcl-dev - - libffi-dev - - git - - graphviz - - xdot - - pkg-config - - python - env: - - MATRIX_EVAL="CONFIG=gcc && CC=gcc-7 && CXX=g++-7" - - # Clang which ships on Trusty Linux - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.8 - packages: - - clang-3.8 - - gperf - - build-essential - - bison - - flex - - libreadline-dev - - gawk - - tcl-dev - - libffi-dev - - git - - graphviz - - xdot - - pkg-config - - python - env: - - MATRIX_EVAL="CONFIG=clang && CC=clang-3.8 && CXX=clang++-3.8" - - # Latest clang supported by Travis Linux - - os: linux - addons: - apt: - sources: - - llvm-toolchain-trusty-5.0 - packages: - - clang-5.0 - - gperf - - build-essential - - bison - - flex - - libreadline-dev - - gawk - - tcl-dev - - libffi-dev - - git - - graphviz - - xdot - - pkg-config - - python - env: - - MATRIX_EVAL="CONFIG=clang && CC=clang-5.0 && CXX=clang++-5.0" - - # Latest clang on Mac OS X - - os: osx - osx_image: xcode9.4 - env: - - MATRIX_EVAL="CONFIG=clang && CC=clang && CXX=clang++" - -before_install: - - ./.travis/setup.sh - -script: - - ./.travis/build-and-test.sh - -after_success: - - ./.travis/deploy-after-success.sh
diff --git a/.travis/build-and-test.sh b/.travis/build-and-test.sh deleted file mode 100755 index 096dde6..0000000 --- a/.travis/build-and-test.sh +++ /dev/null
@@ -1,49 +0,0 @@ -#! /bin/bash - -set -e - -source .travis/common.sh - -########################################################################## - -echo -echo 'Configuring...' && echo -en 'travis_fold:start:script.configure\\r' -echo - -if [ "$CONFIG" = "gcc" ]; then - echo "Configuring for gcc." - make config-gcc -elif [ "$CONFIG" = "clang" ]; then - echo "Configuring for clang." - make config-clang -fi - -echo -echo -en 'travis_fold:end:script.configure\\r' -echo - -########################################################################## - -echo -echo 'Building...' && echo -en 'travis_fold:start:script.build\\r' -echo - -make - -echo -echo -en 'travis_fold:end:script.build\\r' -echo - -########################################################################## - -echo -echo 'Testing...' && echo -en 'travis_fold:start:script.test\\r' -echo - -make test - -echo -echo -en 'travis_fold:end:script.test\\r' -echo - -##########################################################################
diff --git a/.travis/common.sh b/.travis/common.sh deleted file mode 100644 index 8eecc4c..0000000 --- a/.travis/common.sh +++ /dev/null
@@ -1,15 +0,0 @@ -#! /bin/bash - -# Setup the CC / CXX from the matrix config -eval "${MATRIX_EVAL}" - -# Look for location binaries first -export PATH="$HOME/.local-bin/bin:$PATH" - -# OS X specific common setup -if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - export PATH="/usr/local/opt/ccache/libexec:$PATH" -fi - -# Parallel builds! -MAKEFLAGS="-j 2"
diff --git a/.travis/deploy-after-success.sh b/.travis/deploy-after-success.sh deleted file mode 100755 index d64e952..0000000 --- a/.travis/deploy-after-success.sh +++ /dev/null
@@ -1,6 +0,0 @@ -#! /bin/bash - -set -x -set -e - -# FIXME: Upload the build results somewhere...
diff --git a/.travis/setup.sh b/.travis/setup.sh deleted file mode 100755 index d689cd2..0000000 --- a/.travis/setup.sh +++ /dev/null
@@ -1,96 +0,0 @@ -#! /bin/bash - -set -e - -source .travis/common.sh - -########################################################################## - -# Fixing Travis's git clone -echo -echo 'Fixing git setup...' && echo -en 'travis_fold:start:before_install.git\\r' -echo -git fetch --unshallow && git fetch --tags - -# For pull requests, we get more info about the git source. -if [ z"$TRAVIS_PULL_REQUEST_SLUG" != z ]; then - echo "- Fetching from pull request source" - git remote add source https://github.com/$TRAVIS_PULL_REQUEST_SLUG.git - git fetch source && git fetch --tags - - echo "- Fetching the actual pull request" - git fetch origin pull/$TRAVIS_PULL_REQUEST/head:pull-$TRAVIS_PULL_REQUEST-head - git fetch origin pull/$TRAVIS_PULL_REQUEST/merge:pull-$TRAVIS_PULL_REQUEST-merge - - git log -n 5 --graph pull-$TRAVIS_PULL_REQUEST-merge -fi - -# For building branches we need to fix the "detached head" state. -if [ z"$TRAVIS_BRANCH" != z ]; then - TRAVIS_COMMIT_ACTUAL=$(git log --pretty=format:'%H' -n 1) - echo "- Fixing detached head (current $TRAVIS_COMMIT_ACTUAL -> $TRAVIS_COMMIT)" - git remote -v - git branch -v - if [ x"$(git show-ref -s HEAD)" = x"$TRAVIS_COMMIT" ]; then - echo "Checked out at $TRAVIS_COMMIT" - else - if [ z"$TRAVIS_PULL_REQUEST_SLUG" != z ]; then - git fetch source $TRAVIS_COMMIT || echo "Unable to fetch $TRAVIS_COMMIT from source" - fi - git fetch origin $TRAVIS_COMMIT || echo "Unable to fetch $TRAVIS_COMMIT from origin" - fi - git branch -D $TRAVIS_BRANCH || true - git checkout $TRAVIS_COMMIT -b $TRAVIS_BRANCH - git branch -v -fi - -# Output status information. -git status -git describe --tags -git log -n 5 --graph -echo -echo -en 'travis_fold:end:before_install.git\\r' -echo - -########################################################################## - -# Mac OS X specific setup. -if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - ( - echo - echo 'Setting up brew...' && echo -en 'travis_fold:start:before_install.brew\\r' - echo - brew update - brew tap Homebrew/bundle - brew bundle - brew install ccache - echo - echo -en 'travis_fold:end:before_install.brew\\r' - echo - ) -fi - -########################################################################## - -# Install iverilog -( - if [ ! -e ~/.local-bin/bin/iverilog ]; then - echo - echo 'Building iverilog...' && echo -en 'travis_fold:start:before_install.iverilog\\r' - echo - mkdir -p ~/.local-src - mkdir -p ~/.local-bin - cd ~/.local-src - git clone git://github.com/steveicarus/iverilog.git - cd iverilog - autoconf - ./configure --prefix=$HOME/.local-bin - make - make install - echo - echo -en 'travis_fold:end:before_install.iverilog\\r' - echo - fi -) - -##########################################################################
diff --git a/Brewfile b/Brewfile index 0c58ce1..f04da33 100644 --- a/Brewfile +++ b/Brewfile
@@ -1,3 +1,4 @@ +brew "autoconf" brew "bison" brew "flex" brew "gawk"