sudo: false

language: generic

dist: precise

git:
  depth: 10

addons:
  apt:
    sources:
    - ubuntu-toolchain-r-test
    - llvm-toolchain-precise-3.5
    packages:
     - clang-3.5

matrix:
  include:
     # Linux
     - os: linux
       compiler: clang
       env: NODE_VERSION="10"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5', 'libstdc++-4.9-dev']
     - os: linux
       compiler: clang
       env: NODE_VERSION="9"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     - os: linux
       compiler: clang
       env: NODE_VERSION="8"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     - os: linux
       compiler: clang
       env: NODE_VERSION="7"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     - os: linux
       compiler: clang
       env: NODE_VERSION="6"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     - os: linux
       compiler: clang
       env: NODE_VERSION="5"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     - os: linux
       compiler: clang
       env: NODE_VERSION="5" COVERAGE=true PUBLISHABLE=false
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     - os: linux
       compiler: clang
       env: NODE_VERSION="4"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     # test building against external sqlite
     - os: linux
       compiler: clang
       env: NODE_VERSION="8" EXTERNAL_SQLITE=true PUBLISHABLE=false
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5','libsqlite3-dev']
     # OS X
     - os: osx
       compiler: clang
       env: NODE_VERSION="5" COVERAGE=true PUBLISHABLE=false # node abi 47
     - os: osx
       compiler: clang
       env: NODE_VERSION="10" # node abi 64
     - os: osx
       compiler: clang
       env: NODE_VERSION="9" # node abi 59
     - os: osx
       compiler: clang
       env: NODE_VERSION="8" # node abi 57
     - os: osx
       compiler: clang
       env: NODE_VERSION="7" # node abi 51
     - os: osx
       compiler: clang
       env: NODE_VERSION="6" # node abi 48
     - os: osx
       compiler: clang
       env: NODE_VERSION="5" # node abi 47
     - os: osx
       compiler: clang
       env: NODE_VERSION="4" # node abi 46
     # electron Linux
     - os: linux
       compiler: clang
       env: NODE_VERSION="6" ELECTRON_VERSION="2.0.1"
       dist: trusty # needed for libc6 / 'version `GLIBC_2.17` not found' error on precise
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5', 'libc6']
     - os: linux
       compiler: clang
       env: NODE_VERSION="6" ELECTRON_VERSION="1.8.4"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     - os: linux
       compiler: clang
       env: NODE_VERSION="6" ELECTRON_VERSION="1.7.12"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     - os: linux
       compiler: clang
       env: NODE_VERSION="6" ELECTRON_VERSION="1.6.2"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     - os: linux
       compiler: clang
       env: NODE_VERSION="6" ELECTRON_VERSION="1.3.14"
       addons:
         apt:
            sources: [ 'ubuntu-toolchain-r-test','llvm-toolchain-precise-3.5', 'gcc-multilib', 'g++-multilib', 'libsqlite3-dev:i386' ]
            packages: [ 'clang-3.5']
     # electron MacOs
     - os: osx
       compiler: clang
       env: NODE_VERSION="6" ELECTRON_VERSION="2.0.1"
     - os: osx
       compiler: clang
       env: NODE_VERSION="6" ELECTRON_VERSION="1.8.4"
     - os: osx
       compiler: clang
       env: NODE_VERSION="6" ELECTRON_VERSION="1.7.12"
     - os: osx
       compiler: clang
       env: NODE_VERSION="6" ELECTRON_VERSION="1.6.2"
     - os: osx
       compiler: clang
       env: NODE_VERSION="6" ELECTRON_VERSION="1.3.14"

env:
  global:
    - JOBS: "8"

before_install:
- export PUBLISHABLE=${PUBLISHABLE:-true}
- export COVERAGE=${COVERAGE:-false}
- if [[ $(uname -s) == 'Linux' ]]; then
    export CXX="clang++-3.5";
    export CC="clang-3.5";
    export PYTHONPATH=$(pwd)/py-local/lib/python2.7/site-packages;
  else
    export PYTHONPATH=$(pwd)/py-local/lib/python/site-packages;
  fi;
- scripts/validate_tag.sh
- source ./scripts/install_node.sh ${NODE_VERSION}

install:
# put node-pre-gyp on path
- export PATH=./node_modules/.bin/:$PATH

before_script:
# get commit message
- export COMMIT_MESSAGE=$(git show -s --format=%B $TRAVIS_COMMIT | tr -d '\n')
- if [[ ${COVERAGE} == true ]]; then
     if [[ $(uname -s) == 'Linux' ]]; then
       curl https://bootstrap.pypa.io/get-pip.py | python - --user;
       pip install --user cpp-coveralls;
     else
       PYTHONUSERBASE=$(pwd)/py-local easy_install --user cpp-coveralls;
     fi;
   fi

script:
- if [[ "${NODE_VERSION}" ]]; then
    if [[ "${ELECTRON_VERSION}" ]]; then
      ./scripts/build_against_electron.sh;
    else
      ./scripts/build_against_node.sh;
    fi;
  fi
- if [[ "${NODE_VERSION}" -eq "4" ]]; then ./node_modules/.bin/eslint lib; fi;
# disabled for now: need to port to sudo:false
#- if [[ "${NODE_WEBKIT}" ]]; then ./scripts/build_against_node_webkit.sh; fi;
