language: cpp
# Default scripts, which may be overridden by some jobs
before_script:
  - mkdir -p build
  - cd build
  - cmake -DCMAKE_BUILD_TYPE:STRING=Debug ..
script:
  - cmake --build . --config Debug
  - ctest -V
  - cmake --build . --config Debug --target cesium-native-docs
jobs:
  include:
    - name: Check Source Formatting
      os: linux
      dist: focal
      git:
        submodules: false
      before_script:
      script:
        - npm install
        - npm run format -- --dry-run -Werror
    - name: Windows + VS2017
      os: windows
      install:
        - choco install doxygen.install
      before_script:
        - mkdir -p build
        - cd build
        - cmake .. -A x64
    - name: Windows + VS2019
      os: windows
      install:
        - choco install visualstudio2019buildtools --package-parameters "--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64"
        - choco install doxygen.install
    - name: Linux + GCC
      os: linux
      dist: focal
      install:
        - sudo apt-get update
        - sudo apt-get install cmake doxygen
    - name: Linux + Clang
      os: linux
      dist: focal
      # We're using Clang 10 instead of the default (Clang 7) because of std::variant related failures
      # on Clang 7, possibly related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90397
      install:
        - sudo apt-get update
        -  # Workaround for an apparent Ubuntu package problem.
        -  # See https://travis-ci.community/t/clang-10-was-recently-broken-on-linux-unmet-dependencies-for-clang-10-clang-tidy-10-valgrind/11527
        - sudo apt-get install -yq --allow-downgrades libc6=2.31-0ubuntu9.2 libc6-dev=2.31-0ubuntu9.2
        - sudo -E apt-get -yq --no-install-suggests --no-install-recommends --allow-downgrades --allow-remove-essential --allow-change-held-packages install clang-10 cmake doxygen
      env:
        - CC=clang-10
        - CXX=clang++-10
