# Copyright (C) 2017 Sebastian Pipping <sebastian@pipping.org>
# Licensed under the MIT license

language: cpp
os:
  - linux
  - osx
dist: trusty

git:
  depth: 50

env:
  global:
    - CFLAGS='-g3 -pipe'
  matrix:
    - MODE=cmake-oos
    - MODE=distcheck
    - MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address

matrix:
  include:
    - os: osx
      env: MODE=cppcheck
    - os: linux
      env: MODE=clang-format
    - os: linux
      env: MODE=cmake-oos CMAKE_ARGS="-DEXPAT_ATTR_INFO=ON -DEXPAT_BUILD_FUZZERS=ON -DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_CXX_FLAGS=-fsanitize=address -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++"
    - os: linux
      env: MODE=coverage-sh
    - os: linux
      env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address CMAKE_ARGS=-DEXPAT_ATTR_INFO=ON
    - os: linux
      env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address CMAKE_ARGS=-DEXPAT_CONTEXT_BYTES=OFF
    - os: linux
      env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address CMAKE_ARGS=-DEXPAT_DTD=OFF
    - os: linux
      env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address CMAKE_ARGS=-DEXPAT_LARGE_SIZE=ON
    - os: linux
      env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address CMAKE_ARGS=-DEXPAT_MIN_SIZE=ON
    - os: linux
      env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address CMAKE_ARGS=-DEXPAT_NS=OFF
    - os: linux
      env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=memory
    - os: linux
      env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=undefined
    - os: linux
      env: MODE=qa-sh CC=gcc CXX=g++ LD=ld QA_PROCESSOR=gcov
    - os: linux
      env: MODE=qa-sh CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ LD=i686-w64-mingw32-ld QA_PROCESSOR=gcov CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Windows -DWIN32=ON -DMINGW=ON -DEXPAT_ATTR_INFO=ON"
    - os: linux
      env: MODE=qa-sh CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ LD=i686-w64-mingw32-ld QA_PROCESSOR=gcov CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Windows -DWIN32=ON -DMINGW=ON -DEXPAT_ATTR_INFO=ON -DEXPAT_CHAR_TYPE=wchar_t"

addons:
  homebrew:
    update: true
    brewfile: true
  apt:
    sources:
      - llvm-toolchain-trusty
      - ubuntu-toolchain-r-test
    packages:
      - clang-9
      - clang-format-9
      - cmake
      - cppcheck
      - docbook2x
      - dos2unix
      - lcov
      - libbsd-dev
      - lzip
      - mingw-w64
      - moreutils
      - wine

script:
  - ./.travis.sh
