# Travis config for Constantine language: c cache: directories: - nim-devel - nim-stable matrix: include: # Constantine only works with Nim devel # Build and test using both gcc and clang # Build and test on both x86-64 and ARM64 # Ubuntu Bionic (18.04) is needed, it includes # GCC 7 codegen fixes to addcarry_u64. - dist: bionic arch: amd64 env: - ARCH=amd64 - CHANNEL=devel compiler: gcc - dist: bionic arch: arm64 env: - ARCH=arm64 - CHANNEL=devel compiler: gcc - dist: bionic arch: amd64 env: - ARCH=amd64 - CHANNEL=devel compiler: clang # On OSX we only test against clang (gcc is mapped to clang by default) - os: osx arch: amd64 env: - ARCH=amd64 - CHANNEL=devel compiler: clang fast_finish: true # Submodules are only for benchmarks, don't clone them git: submodules: false addons: apt: packages: - libgmp-dev homebrew: packages: - gmp before_install: - | if [ "${CHANNEL}" = stable ]; then BRANCH="v$(curl https://nim-lang.org/channels/stable)" else BRANCH="${CHANNEL}" fi install: # Detect caching of Nim compiler - | if [ ! -x "nim-${CHANNEL}/bin/nim" ]; then git clone -b "${BRANCH}" https://github.com/nim-lang/nim "nim-${CHANNEL}/" pushd "nim-${CHANNEL}" git clone --depth 1 https://github.com/nim-lang/csources csources/ pushd csources sh build.sh popd rm -rf csources bin/nim c koch ./koch boot -d:release ./koch tools else pushd "nim-${CHANNEL}" git fetch origin "${BRANCH}" if [[ $(git merge FETCH_HEAD | grep -c "Already up to date.") -ne 1 ]]; then bin/nim c koch ./koch boot -d:release ./koch tools fi fi popd before_script: - export PATH="$PWD/nim-${CHANNEL}/bin${PATH:+:$PATH}" script: - nimble refresh - nimble install gmp stew - nimble test branches: except: - gh-pages