cross 0.1.13

Zero setup cross compilation and cross testing
dist: trusty
language: rust
rust: nightly
services: docker
sudo: required

matrix:
  include:
    # Linux
    - env: TARGET=aarch64-unknown-linux-gnu       CPP=1 DYLIB=1 STD=1 OPENSSL=0.5.5  RUN=1
    - env: TARGET=arm-unknown-linux-gnueabi       CPP=1 DYLIB=1 STD=1 OPENSSL=0.5.5  RUN=1
    - env: TARGET=arm-unknown-linux-musleabi                    STD=1                RUN=1
    - env: TARGET=armv7-unknown-linux-gnueabihf   CPP=1 DYLIB=1 STD=1 OPENSSL=0.5.5  RUN=1
    - env: TARGET=armv7-unknown-linux-musleabihf                STD=1                RUN=1
    - env: TARGET=i686-unknown-linux-gnu          CPP=1 DYLIB=1 STD=1 OPENSSL=0.5.5  RUN=1
    - env: TARGET=i686-unknown-linux-musl                       STD=1 OPENSSL=0.5.5  RUN=1
    - env: TARGET=mips-unknown-linux-gnu          CPP=1 DYLIB=1 STD=1 OPENSSL=0.5.5  RUN=1
    - env: TARGET=mips64-unknown-linux-gnuabi64   CPP=1 DYLIB=1 STD=1 OPENSSL=0.7.17 RUN=1
    - env: TARGET=mips64el-unknown-linux-gnuabi64 CPP=1 DYLIB=1 STD=1 OPENSSL=0.7.17 RUN=1
    - env: TARGET=mipsel-unknown-linux-gnu        CPP=1 DYLIB=1 STD=1 OPENSSL=0.5.5  RUN=1
    - env: TARGET=powerpc-unknown-linux-gnu       CPP=1 DYLIB=1 STD=1 OPENSSL=0.5.5  RUN=1
    - env: TARGET=powerpc64-unknown-linux-gnu     CPP=1 DYLIB=1 STD=1 OPENSSL=0.7.17 RUN=1
    - env: TARGET=powerpc64le-unknown-linux-gnu   CPP=1 DYLIB=1 STD=1 OPENSSL=0.7.17 RUN=1
    - env: TARGET=s390x-unknown-linux-gnu         CPP=1 DYLIB=1 STD=1 OPENSSL=0.7.17
    - env: TARGET=sparc64-unknown-linux-gnu       CPP=1 DYLIB=1       OPENSSL=0.5.5  RUN=1
    - env: TARGET=x86_64-unknown-linux-gnu        CPP=1 DYLIB=1       OPENSSL=0.5.5  RUN=1 DEPLOY=1
    - env: TARGET=x86_64-unknown-linux-musl                     STD=1 OPENSSL=0.5.5  RUN=1 DEPLOY=1

    # Android
    - env: TARGET=aarch64-linux-android           CPP=1         STD=1 OPENSSL=0.5.5  RUN=1
    - env: TARGET=arm-linux-androideabi           CPP=1         STD=1 OPENSSL=0.5.5  RUN=1
    - env: TARGET=armv7-linux-androideabi         CPP=1         STD=1 OPENSSL=0.5.5  RUN=1
    # NOTE RUN=1 missing due to issue #143
    - env: TARGET=i686-linux-android              CPP=1         STD=1 OPENSSL=0.5.5
    - env: TARGET=x86_64-linux-android            CPP=1         STD=1 OPENSSL=0.5.5  RUN=1

    # OSX
    - env: TARGET=i686-apple-darwin                     DYLIB=1 STD=1                RUN=1
      os: osx
    - env: TARGET=x86_64-apple-darwin                   DYLIB=1 STD=1                RUN=1 DEPLOY=1
      os: osx

    # BSD
    - env: TARGET=i686-unknown-freebsd                  DYLIB=1 STD=1 OPENSSL=0.7.17
    - env: TARGET=x86_64-unknown-dragonfly              DYLIB=1       OPENSSL=0.5.5
    - env: TARGET=x86_64-unknown-freebsd                DYLIB=1 STD=1 OPENSSL=0.5.5
    - env: TARGET=x86_64-unknown-netbsd                 DYLIB=1 STD=1 OPENSSL=0.7.17

    # Solaris
    - env: TARGET=sparcv9-sun-solaris                   DYLIB=1 STD=1 OPENSSL=0.7.17
    - env: TARGET=x86_64-sun-solaris                    DYLIB=1 STD=1 OPENSSL=0.7.17

    # Windows
    - env: TARGET=x86_64-pc-windows-gnu           CPP=1         STD=1                RUN=1
    - env: TARGET=i686-pc-windows-gnu             CPP=1         STD=1                RUN=1

    # Emscripten
    - env: TARGET=asmjs-unknown-emscripten        CPP=1         STD=1                RUN=1
    - env: TARGET=wasm32-unknown-emscripten       CPP=1         STD=1                RUN=1
      # work around rust-lang/cargo#4689
      rust: nightly-2017-10-24

    # Bare metal
    - env: TARGET=thumbv6m-none-eabi                                                 RUN=1
    - env: TARGET=thumbv7em-none-eabi                                                RUN=1
    - env: TARGET=thumbv7em-none-eabihf                                              RUN=1
    - env: TARGET=thumbv7m-none-eabi                                                 RUN=1

install:
  - curl https://sh.rustup.rs -sSf |
    sh -s -- -y --default-toolchain $TRAVIS_RUST_VERSION
  - source ~/.cargo/env

script:
  - bash ci/script.sh

after_success:
  - sh ci/after_success.sh

branches:
  only:
    - /^v\d+\.\d+\.\d+.*$/
    - auto
    - master
    - try

before_deploy:
  - sh ci/before_deploy.sh

deploy:
  provider: releases
  api_key:
    secure: W1xJIL2bOdrnu0qfqmfMBV9TF34YqmzZzNL9GU9/fpFb/2+cRjBGYxJLRQ2v7wD5B2ThLJAi/NXMG2YjC/gDAu4zjAkshMeKPKGvcu4PgPSEwNYL0C6ubcU6pO2rDmfUv4v/0Urk3LkpzUHkYGSXE7zFOM3zOiMbqryuO9EtYerZoj319/P3vnJaBIEtdFgdLZwLwoHWna/oFq/PU5HsdWWpxD9DYbCmCax16Vyt5UxFkMkU49XYgMspOGDZHSrb/WTvyIZ3hWyu5x5FkpvjQ5Dk00IdXB0cg6biuaryOgN+lXw2TZCSvmZOw4qOcnF+adzy8mOJMGjrCxGbF8Nmq1yM9+9+hkys0mvQKYhxuuKB9Rx7w5PAuGX9vCv4p5Is8xxX6UnB5eaNvTtVpZBFSLdQQEDTzULOxrfHRNDnzXQKj4vvGdo8rVv82GtRgWO99w23OVO8dKdpZ7RSgyuz7haHmJTSw1s7GPcrEfJ+ebEpJNm/RBHYmhfqD8T7V/jkHBgC4x1kpDoBBfbfdfV8OE5Evl8zgz8ygsmbPHFSl+ngj/pLaewI9JL2sP28e8jVhn40vEldBg7lLyGvwNJqsFNOtk+p09Rbs3IgX2iLkUvXnjIJqFtTdSoPLt4me8GRPfg34NcMeUCtwc0h/LLrlUZiHK7hvnRqZLWEaYDEHR8=
  file_glob: true
  file: cross-$TRAVIS_TAG-$TARGET.*
  skip_cleanup: true
  on:
    condition: $DEPLOY = 1
    tags: true

before_cache:
  - test $TRAVIS_OS_NAME = osx ||
    docker history -q japaric/$TARGET:latest |
    grep -v \<missing\> |
    xargs docker save |
    gzip > $HOME/docker/$TARGET.tar.gz

cache:
  directories:
    - $HOME/docker

# restore the cache
before_install:
  - test $TRAVIS_OS_NAME = osx ||
    zcat $HOME/docker/$TARGET.tar.gz | docker load || true

notifications:
  email:
    on_success: never