# # # # sol3
# The MIT License (MIT)
# 
# Copyright (c) 2013-2019 Rapptz, ThePhD, and contributors
# 
# Permission is hereby granted, free of charge, to any person obtaining a copy of
# this software and associated documentation files (the "Software"), to deal in
# the Software without restriction, including without limitation the rights to
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
# the Software, and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
# 
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

sudo: required
language: cpp

git:
  depth: 2

services:
- docker

before_install:
- sudo apt install -y git

script:
- export SOL2_DIR=${TRAVIS_BUILD_DIR}
- sudo docker image pull thephd/sol2:gcc-${GCC_VERSION}_llvm-${LLVM_VERSION}
- sudo docker run --rm --interactive --tty --name "sol2.test" -v "${SOL2_DIR}:/root/sol2" --env "SOL2_CI=${SOL2_CI}" --env "SOL2_PLATFORM=${SOL2_PLATFORM}" --env "SOL2_LUA_VERSION=${SOL2_LUA_VERSION}"  --env "SOL2_TEST_SINGLE=${SOL2_TEST_SINGLE}"  --env "SOL2_TEST_INTEROP=${SOL2_TEST_INTEROP}" --env "GCC_VERSION=${GCC_VERSION}" --env "LLVM_VERSION=${LLVM_VERSION}" thephd/sol2:gcc-${GCC_VERSION}_llvm-${LLVM_VERSION}

matrix:
  fast_finish: true
  allow_failures:
    - os: osx

  include:
    # LLVM 5.0.x -> 8.0.x
    - env:
      - SOL2_LUA_VERSION=5.3.5
        LLVM_VERSION=5.0.2
        SOL2_PLATFORM=x64
        SOL2_CI=true

    - env:
      - SOL2_LUA_VERSION=5.3.5
        LLVM_VERSION=6.0.1
        SOL2_PLATFORM=x64
        SOL2_CI=true

    - env:
      - SOL2_LUA_VERSION=5.3.5
        LLVM_VERSION=7.0.1
        SOL2_PLATFORM=x64
        SOL2_CI=true

    - env:
      - SOL2_LUA_VERSION=5.3.5
        LLVM_VERSION=8.0.0
        SOL2_PLATFORM=x64
        SOL2_CI=true

    # GCC 7.x, 8.x
    - env:
      - SOL2_LUA_VERSION=5.3.5
        GCC_VERSION=7
        SOL2_PLATFORM=x64
        SOL2_CI=true

    - env:
      - SOL2_LUA_VERSION=5.3.5
        GCC_VERSION=8
        SOL2_PLATFORM=x64
        SOL2_CI=true

    # Lua Versions 5.2.4, 5.1.5, and LuaJIT
    - env:
      - SOL2_LUA_VERSION=5.1.5
        GCC_VERSION=8
        SOL2_PLATFORM=x64
        SOL2_CI=true
        
    - env:
      - SOL2_LUA_VERSION=5.2.4
        GCC_VERSION=8
        SOL2_PLATFORM=x64
        SOL2_CI=true
        
    - env:
      - SOL2_LUA_VERSION=luajit-2.0.4
        GCC_VERSION=8
        SOL2_PLATFORM=x64
        SOL2_CI=true
        
    - env:
      - SOL2_LUA_VERSION=luajit-2.0.5
        GCC_VERSION=8
        SOL2_PLATFORM=x64
        SOL2_CI=true

    # x86 builds
    - env:
      - SOL2_LUA_VERSION=5.3.5
        GCC_VERSION=8
        SOL2_PLATFORM=i686
        SOL2_CI=true

    - env:
      - SOL2_LUA_VERSION=luajit-2.0.5
        GCC_VERSION=8
        SOL2_PLATFORM=i686
        SOL2_CI=true

    - env:
      - SOL2_LUA_VERSION=luajit-2.1.0-beta3
        GCC_VERSION=8
        SOL2_PLATFORM=i686
        SOL2_CI=true

    # Test Single, Interop, Etc.
    - env:
      - SOL2_LUA_VERSION=5.3.5
        SOL2_TEST_SINGLE=true
        SOL2_TEST_INTEROP=true
        LLVM_VERSION=8.0.0
        SOL2_PLATFORM=x64
        SOL2_CI=true

    - env:
      - SOL2_LUA_VERSION=5.3.5
        SOL2_TEST_SINGLE=true
        SOL2_TEST_INTEROP=true
        GCC_VERSION=8
        SOL2_PLATFORM=x64
        SOL2_CI=true

    - os: osx
      osx_image: xcode10.1
      env:
        - SOL2_LUA_VERSION=lua-5.3.5
      before_install:
        - chmod +x ./scripts/run.osx.sh
        - chmod +x ./scripts/preparation.osx.sh
        - ./scripts/preparation.osx.sh
      script:
        - ./scripts/run.osx.sh

    - os: osx
      osx_image: xcode9.4
      env:
        - SOL2_LUA_VERSION=lua-5.3.5
      before_install:
        - chmod +x ./scripts/run.osx.sh
        - chmod +x ./scripts/preparation.osx.sh
        - ./scripts/preparation.osx.sh
      script:
        - ./scripts/run.osx.sh

    - os: osx
      osx_image: xcode9.3
      env:
        - SOL2_LUA_VERSION=lua-5.3.5
      before_install:
        - chmod +x ./scripts/run.osx.sh
        - chmod +x ./scripts/preparation.osx.sh
        - ./scripts/preparation.osx.sh
      script:
        - ./scripts/run.osx.sh

    - os: osx
      osx_image: xcode9.2
      env:
        - SOL2_LUA_VERSION=lua-5.3.5
      before_install:
        - chmod +x ./scripts/run.osx.sh
        - chmod +x ./scripts/preparation.osx.sh
        - ./scripts/preparation.osx.sh
      script:
        - ./scripts/run.osx.sh

notifications:
  webhooks:
    urls:
      - http://skyhook.glitch.me/api/webhooks/427786348108185611/y2nTmghqltv1SKX2DclEMEKyZtRcwKFlwfZpB_mL1A0nZTVS5MSfumqDKq30-gvWgeL5/travis
    on_success: change
    on_failure: always
    on_start: always
  email:
    on_success: change
    on_failure: change
    on_start: never