env:
  global:
    # Set at the root level as this is ignored when set under matrix.env.
    - GCC_VERSION="4.9"
    # Fail on first error if UBSAN or ASAN enabled for a target
    - UBSAN_OPTIONS=halt_on_error=1
    - ASAN_OPTIONS=halt_on_error=1
    # Travis machines have 2 cores
    - JOBS=2
    - MAKEFLAGS="-j 2"

conan-linux: &conan-linux
  os: linux
  dist: xenial
  language: python
  python: "3.7"
  services:
    - docker
  install:
    - ./conan/travis/install.sh
  script:
    - ./conan/travis/build.sh
  if: tag IS present

conan-linux-master: &conan-linux-master
  os: linux
  dist: xenial
  language: python
  python: "3.7"
  services:
    - docker
  install:
    - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bash ./conan/travis/install.sh; fi'
  script:
    - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bash ./conan/travis/build.sh; fi'
  branches:
    only:
    - master

conan-osx: &conan-osx
  os: osx
  language: generic
  install:
    - ./conan/travis/install.sh
  script:
    - ./conan/travis/build.sh
  if: tag IS present

matrix:
  include:
    #- language: python
    #  python: "2.7"
    #  install:
    #    - "pip install wheel twine"
    #  script:
    #    - "cd python/"
    #    - 'VERSION="$TRAVIS_TAG" python setup.py sdist bdist_wheel'
    #    - "cd ../"
    #  deploy:
    #    # Checkpointed release builds.
    #    - provider: script
    #      script: .travis/deploy-python.sh
    #      skip_cleanup: true
    #      on:
    #        tags: true
    #        # all_branches must be set with tags: true. See below post:
    #        # https://stackoverflow.com/a/27775257/1076585
    #        all_branches: true
    #    # Produce a new build for the cutting edge when master changes.
    #    - provider: script
    #      script: .travis/deploy-python.sh
    #      skip_cleanup: true
    #      on:
    #        branch: master
    - language: cpp
      os:
        - linux

      addons:
        apt:
          packages:
            - docker-ce
      script:
        - bash .travis/build-and-run-docker-test-containers.sh

    - language: cpp
      os:
        - linux

      compiler:
        - gcc

      env:
        matrix:
          - BUILD_TYPE=Debug
          - BUILD_TYPE=Release

      before_install:
      - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi
      - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get update -qq; fi
      - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq g++-$GCC_VERSION; fi
      - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq gcc-$GCC_VERSION; fi
      - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo ln -s -v -f $(which g++-$GCC_VERSION) /usr/bin/g++; fi
      - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo ln -s -v -f $(which gcc-$GCC_VERSION) /usr/bin/gcc; fi

      script:
      - bash .travis/check-sources.sh
      - bash grpc/build_grpc.sh
      - cmake .
        -DCMAKE_BUILD_TYPE=$BUILD_TYPE
        -DFLATBUFFERS_BUILD_GRPCTEST=ON
        -DGRPC_INSTALL_PATH=$TRAVIS_BUILD_DIR/google/grpc/install
        -DPROTOBUF_DOWNLOAD_PATH=$TRAVIS_BUILD_DIR/google/grpc/third_party/protobuf
        -DFLATBUFFERS_CODE_SANITIZE=ON
      - cmake --build . --target all --clean-first -- -j${JOBS}
      - LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/google/grpc/install/lib ctest --extra-verbose --output-on-failure
      - bash .travis/check-generate-code.sh

    - language: cpp
      os: osx
      osx_image: xcode9.3
      env:
        matrix:
          - BUILD_TYPE=Debug
          - BUILD_TYPE=Release

      script:
      - bash grpc/build_grpc.sh
      - cmake .
        -DCMAKE_BUILD_TYPE=$BUILD_TYPE
        -DFLATBUFFERS_BUILD_GRPCTEST=ON
        -DGRPC_INSTALL_PATH=$TRAVIS_BUILD_DIR/google/grpc/install
        -DPROTOBUF_DOWNLOAD_PATH=$TRAVIS_BUILD_DIR/google/grpc/third_party/protobuf
        -DFLATBUFFERS_CODE_SANITIZE=ON
      - cmake --build . -- -j${JOBS}
      - DYLD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/google/grpc/install/lib ctest --extra-verbose --output-on-failure
      - bash .travis/check-generate-code.sh

    - <<: *conan-linux-master
      env: CONAN_GCC_VERSIONS=8 CONAN_DOCKER_IMAGE=conanio/gcc8
    - <<: *conan-linux
      env: CONAN_GCC_VERSIONS=4.9 CONAN_DOCKER_IMAGE=conanio/gcc49
    - <<: *conan-linux
      env: CONAN_GCC_VERSIONS=5 CONAN_DOCKER_IMAGE=conanio/gcc5
    - <<: *conan-linux
      env: CONAN_GCC_VERSIONS=6 CONAN_DOCKER_IMAGE=conanio/gcc6
    - <<: *conan-linux
      env: CONAN_GCC_VERSIONS=7 CONAN_DOCKER_IMAGE=conanio/gcc7
    - <<: *conan-linux
      env: CONAN_GCC_VERSIONS=8 CONAN_DOCKER_IMAGE=conanio/gcc8
    - <<: *conan-linux
      env: CONAN_GCC_VERSIONS=9 CONAN_DOCKER_IMAGE=conanio/gcc9
    - <<: *conan-linux
      env: CONAN_CLANG_VERSIONS=3.9 CONAN_DOCKER_IMAGE=conanio/clang39
    - <<: *conan-linux
      env: CONAN_CLANG_VERSIONS=4.0 CONAN_DOCKER_IMAGE=conanio/clang40
    - <<: *conan-linux
      env: CONAN_CLANG_VERSIONS=5.0 CONAN_DOCKER_IMAGE=conanio/clang50
    - <<: *conan-linux
      env: CONAN_CLANG_VERSIONS=6.0 CONAN_DOCKER_IMAGE=conanio/clang60
    - <<: *conan-linux
      env: CONAN_CLANG_VERSIONS=7.0 CONAN_DOCKER_IMAGE=conanio/clang7
    - <<: *conan-linux
      env: CONAN_CLANG_VERSIONS=8 CONAN_DOCKER_IMAGE=conanio/clang8
    - <<: *conan-osx
      osx_image: xcode7.3
      env: CONAN_APPLE_CLANG_VERSIONS=7.3
    - <<: *conan-osx
      osx_image: xcode8.3
      env: CONAN_APPLE_CLANG_VERSIONS=8.1
    - <<: *conan-osx
      osx_image: xcode9
      env: CONAN_APPLE_CLANG_VERSIONS=9.0
    - <<: *conan-osx
      osx_image: xcode9.4
      env: CONAN_APPLE_CLANG_VERSIONS=9.1
    - <<: *conan-osx
      osx_image: xcode10.2
      env: CONAN_APPLE_CLANG_VERSIONS=10.0

    - language: android
      sudo: true
      dist: trusty
      android:
        components:
          - tools
          - platform-tools
          - build-tools-25.0.2
          - android-25
          - extra-android-m2repository
      compiler:
        - gcc

      before_install:
        # Output something every 10 minutes or Travis kills the job
        - while sleep 540; do echo "=====[ $SECONDS seconds still running ]====="; done &
        # Install the r17c version of the NDK that still so that we can continue to test with gnustl
        # and stlport.
        - export ANDROID_NDK_HOME=$HOME/android-ndk
        - NDK_ZIP=$ANDROID_NDK_HOME/ndk.zip
        - mkdir -p $ANDROID_NDK_HOME
        - curl -o $NDK_ZIP https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip
        - unzip -q -d $ANDROID_NDK_HOME $NDK_ZIP
        - rm $NDK_ZIP
        - mv $ANDROID_NDK_HOME/android-ndk-*/* $ANDROID_NDK_HOME
        - rmdir $ANDROID_NDK_HOME/android-ndk-*
        - export CMAKE=$(which cmake)
        # libc required for prebuilt llvm toolchain the NDK r17c.
        - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get update -qq; fi
        - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq libc6; fi
        # Setup environment for Linux build which is required to build the sample.
        - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi
        - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get update -qq; fi
        - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq g++-$GCC_VERSION; fi
        - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -qq gcc-$GCC_VERSION; fi
        - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo ln -s -v -f $(which g++-$GCC_VERSION) /usr/bin/g++; fi
        - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo ln -s -v -f $(which gcc-$GCC_VERSION) /usr/bin/gcc; fi
      script:
        - failed=0; for build_gradle in $(git ls-files | grep build.gradle); do ( cd "$(dirname "${build_gradle}")" && ./gradlew build ) || failed=1; done; exit $((failed))
        # Kill the sleep loop
        - kill %1
