# Copyright 2018-2019 Uber Technologies, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

language: c

os: linux
dist: xenial

compiler:
  - gcc
  - clang

# Docs are built during the normal compile/test check.
addons:
  apt:
    packages:
      - doxygen
      - graphviz

matrix:
  include:
      # Check that clang-format doesn't detect some files are not formatted.
    - env: NAME="Formatting check"
      compiler: clang
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-5.0
          packages:
            - clang-format-5.0
      script: make format && git diff --exit-code
      # Submit coverage report to Coveralls.io, also test that prefixing works.
    - env: NAME="Coverage report"
      compiler: gcc
      addons:
        apt:
          packages:
            - lcov
      install:
        - gem install coveralls-lcov
      before_script:
        - cmake -DCMAKE_BUILD_TYPE=Debug -DWARNINGS_AS_ERRORS=ON -DH3_PREFIX=testprefix_ .
      script:
        - make && make coverage
      after_success:
        - coveralls-lcov coverage.cleaned.info
    - env: NAME="Valgrind test"
      compiler: gcc
      addons:
        apt:
          packages:
            - valgrind
      before_script:
        - cmake -DCMAKE_BUILD_TYPE=Debug -DWRAP_VALGRIND=ON .
      script:
        - make
        - CTEST_OUTPUT_ON_FAILURE=1 make test-fast
    - env: NAME="Mac OSX (Xcode 8)"
      os: osx
    - env: NAME="binding-functions target"
      script:
        - make binding-functions
        # Check that the file exists and has contents
        - test -s binding-functions

# Configure the build script, out of source.
before_script:
  - mkdir build
  - cd build
  - cmake -DWARNINGS_AS_ERRORS=ON ..

# Build and test the library, then build and test the examples.
script:
  - make
  - make test
  - sudo make install
  - mkdir examples
  - cd examples
  - cmake ../../examples
  - make
  - make test