# 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. # Clang 9 (and GCC-6) are needed for inline assembly "flag output constraints" - 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 # addons: # apt: # sources: # - ubuntu-toolchain-r-test # - llvm-toolchain-bionic-9.0 # LLVM 9 repo is disallowed # packages: # - clang-9.0 # env: # - MATRIX_EVAL="CC=clang-9.0 && CXX=clang++-9.0" # On OSX we only test against clang (gcc is mapped to clang by default) - os: osx osx_image: xcode11.5 # Need xcode 11.4.2 min for Clang 9 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 # Installing Clang9.0 or later is a pain in Travis # for inline assembly "flag output constraint" # Also MacOS build is timing out with 2 series of tests. - | if [[ "$TRAVIS_COMPILER" == "clang" ]]; then nimble test_parallel_no_assembler else nimble test_parallel if [[ "$ARCH" != "arm64" ]]; then nimble test_parallel_no_assembler fi fi branches: except: - gh-pages