sudo: required
dist: trusty
language: cpp

# don't re-build for tags so that [publish binary] is not re-run
# https://github.com/travis-ci/travis-ci/issues/1532
branches:
  except:
  - /^\d*\.+\d*\.?\d*\.?/

compiler:
- gcc

os:
- linux
- osx

env:
  global:
  - secure: "UhzF/paWS3wrZEWCKKCmNl2hlFuLzlNqt0x7eJJtLg/AOBVwGnrgsGDgUCgY4meyxxJ1D0ZH+fzqoB4vp5ZGppE7HwaIyxyxzA23ZbWk6dyvTVK66UZPosYcUjwLKbr/hmS4KNpT/XmiHV1xdBHsGel2vxBcnZpRaa6Fpplz5fMXL+zYi9K3IfHLvnmAEpW4iz1dOypN0IWcPkI0fsqtliGUQXaBp8QfxQD8tlMpJik79No7cMI/GHYeP5SkeNWjSLJcL+KwZnLPufpmXONK8KkGfRPGGPVst6ABDbMTu9BSTTIgQKdxNW7TpcuQdJgjn3lpV8L95SBq31rcVmXocSvah4L1d4KtRIk1x7mC7L3OPXdWkucYdAB5Uzb3/dJb7TuH8LRN/H7ldXW/RbeIjjpvwYG8oCgtdNh4DfxY0BBnX4aH65blEe0cFRbCQch/DHYovY855fFsrmhzGTLsJlZZ/vBLjuOqSUrSS1aArOMm3G/RGc8VE1QRy1dhPtRCMEQD99080S63Th4mLllG7KDYzwisUGbx0lJTWaHJsRW7iObvtuAxAabktgOempJ1iDC3IvctrRqBNg1HmCdHb/yXE391T7QO6vvMAjl9nYamhEYAKMA9e7wCxaBl1YQiBmweuyt+F5C20tBP5nSXccUlLFmRXJ1eKx8xzI+JclE="
  matrix:
  # node
  - RUNTIME="node" RVERSION="4.5.0" ARCH="x64"
  - RUNTIME="node" RVERSION="4.5.0" ARCH="ia32"
  - RUNTIME="node" RVERSION="5.12.0" ARCH="x64"
  - RUNTIME="node" RVERSION="5.12.0" ARCH="ia32"
  - RUNTIME="node" RVERSION="6.5.0" ARCH="x64"
  - RUNTIME="node" RVERSION="6.5.0" ARCH="ia32"

  # electron
  - RUNTIME="electron" RVERSION="0.37.8" ARCH="x64"
  - RUNTIME="electron" RVERSION="0.37.8" ARCH="ia32"
  - RUNTIME="electron" RVERSION="1.2.3" ARCH="x64"
  - RUNTIME="electron" RVERSION="1.2.3" ARCH="ia32"

matrix:
  exclude:
  - os: osx
    env: RUNTIME="node" RVERSION="4.5.0" ARCH="ia32"
  - os: osx
    env: RUNTIME="node" RVERSION="5.12.0" ARCH="ia32"
  - os: osx
    env: RUNTIME="node" RVERSION="6.5.0" ARCH="ia32"
  - os: osx
    env: RUNTIME="electron" RVERSION="0.37.8" ARCH="ia32"
  - os: osx
    env: RUNTIME="electron" RVERSION="1.2.3" ARCH="ia32"

addons:
  apt:
    sources:
    #- ubuntu-toolchain-r-test
    - george-edison55-precise-backports
    packages:
    - gcc-multilib
    - g++-multilib
    #- gcc-4.8-multilib
    #- g++-4.8-multilib
    - cmake
    - cmake-data

before_install:
# purge previous boost installation
#- rm -rf ~/.cmake-js

install:
# install node (use v6 if building for electron)
- export DEFAULT_NODE_VERSION="6"
- export NODE_VERSION=$RVERSION
- rm -rf ~/.nvm/ && git clone --depth 1 https://github.com/creationix/nvm.git ~/.nvm && source ~/.nvm/nvm.sh
- if [[ "$RUNTIME" == "electron" ]]; then export NODE_VERSION=$DEFAULT_NODE_VERSION; fi
- nvm install $NODE_VERSION
- nvm use $NODE_VERSION
- npm install npm -g

# update path
- PATH=$PATH:`pwd`/node_modules/.bin

# download node for x86
- BASE_URL=$(node -p "'https://nodejs.org/dist/' + process.version")
- X86_FILE=$(node -p "'node-' + process.version + '-' + process.platform + '-x86'")
- if [[ "$ARCH" == "ia32" ]]; then wget $BASE_URL/$X86_FILE.tar.gz; tar -xf $X86_FILE.tar.gz; export PATH=$X86_FILE/bin:$PATH; npm install npm -g; fi

# use g++-4.8 on linux
#- if [[ $TRAVIS_OS_NAME == "linux" ]]; then export CXX="g++-4.8"; CC="gcc-4.8"; fi

# print some info
- uname -a
- npm --version
- node --version
- node -p 'process.platform + "@" + process.arch'
- $CXX --version

# install recent cmake for osx
- if [[ "$TRAVIS_OS_NAME" == "osx"   ]]; then wget --no-check-certificate http://cmake.org/files/v3.4/cmake-3.4.3-Darwin-x86_64.tar.gz  ;fi
- if [[ "$TRAVIS_OS_NAME" == "osx"   ]]; then tar -xzf cmake-3.4.3-Darwin-x86_64.tar.gz                                                 ;fi
- if [[ "$TRAVIS_OS_NAME" == "osx"   ]]; then export PATH=$PWD/cmake-3.4.3-Darwin-x86_64/CMake.app/Contents/bin:$PATH                   ;fi

# figure out if we should publish
- PUBLISH_BINARY=false
- COMMIT_MESSAGE=$(git show -s --format=%B $TRAVIS_COMMIT | tr -d '\n')
- if [[ ${COMMIT_MESSAGE} =~ "[publish binary]" ]]; then PUBLISH_BINARY=true; fi
- echo "Publishing native platform Binary Package? ->" $PUBLISH_BINARY

# cleanup npm progress
- npm config set progress false
- npm config set spin false

script:
# build
- npm install --build-from-source

# if we're publishing, do it
- if [[ $PUBLISH_BINARY == true ]]; then node-pre-gyp --runtime=$RUNTIME --target=$RVERSION --target_arch=$ARCH package; fi;
- if [[ $PUBLISH_BINARY == true ]]; then node-pre-gyp-github publish --release; fi;
- if [[ $PUBLISH_BINARY == true ]]; then npm install --fallback-to-build=false; fi;
