# 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 - parallel homebrew: packages: - gmp # Travis `bundle` bug: https://travis-ci.community/t/macos-build-fails-because-of-homebrew-bundle-unknown-command/7296/28 # - parallel before_install: - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install parallel; fi - | 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_parallel - if [[ "$ARCH" != "arm64" ]]; then nimble test_parallel_no_assembler; fi branches: except: - gh-pages