# Use something that's not 'ruby' so we don't set up things like
# RVM/bundler/ruby and whatnot. Right now 'rust' isn't a language on travis and
# it treats unknown languages as ruby-like I believe.
language: c

# Before we start doing anything, install a stock LLVM
install:
  - sudo sh -c "echo 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.4 main' >> /etc/apt/sources.list"
  - sudo sh -c "echo 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise main' >> /etc/apt/sources.list"
  - sudo sh -c "echo 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu precise main' >> /etc/apt/sources.list"
  - wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
  - sudo apt-get update -qq
  - sudo apt-get install -qq --force-yes -y llvm-$LLVM_VERSION
    llvm-${LLVM_VERSION}-dev clang-$LLVM_VERSION lldb-$LLVM_VERSION


# All of the llvm tools are suffixed with "-$VERS" which we don't want, so
# symlink them all into a local directory and just use that
#
# FIXME: this shouldn't update the src/llvm sub-repo, that takes about a minute
#        it's gotta download so much stuff.
before_script:
  - mkdir -p local-llvm/bin
  - ln -nsf /usr/bin/llvm-config-$LLVM_VERSION local-llvm/bin/llvm-config
  - ln -nsf /usr/bin/llvm-mc-$LLVM_VERSION local-llvm/bin/llvm-mc
  - ln -nsf /usr/bin/llvm-as-$LLVM_VERSION local-llvm/bin/llvm-as
  - ln -nsf /usr/bin/llvm-dis-$LLVM_VERSION local-llvm/bin/llvm-dis
  - ln -nsf /usr/bin/llc-$LLVM_VERSION local-llvm/bin/llc
  - ln -nsf /usr/include/llvm-$LLVM_VERSION local-llvm/include
  - ./configure --disable-optimize-tests --llvm-root=`pwd`/local-llvm
    --enable-fast-make --enable-clang

# Tidy everything up first, then build a few things, and then run a few tests.
# Note that this is meant to run in a "fairly small" amount of time, so this
# isn't exhaustive at all.
#
# As a result of https://github.com/travis-ci/travis-ci/issues/1066, we run
# everything in one large command instead of multiple commands.
script: |
  if [[ $TRAVIS_PULL_REQUEST != 'false' ]]; then
    if [[ $LLVM_VERSION != '3.4' ]]; then exit 0; fi
  fi &&
  make tidy &&
  travis_wait make -j4 rustc-stage1 &&
  make check-stage1-std check-stage1-rpass check-stage1-cfail check-stage1-rfail check-stage1-doc

env:
  global:
    - NO_BENCH=1
  matrix:
    - LLVM_VERSION=3.3
    - LLVM_VERSION=3.4

# We track this ourselves, and in theory we don't have to update the LLVM repo
# (but sadly we do right now anyway).
git:
  submodules: false

notifications:
  email: false

branches:
  only:
    - master
