AMD64
Shell
Git
Kicer86/photobroom:.travis.yml@8f137d1
language: cpp
dist: focal
osx_image: xcode12.2

branches:
  only:
    - master
    - travis_test
    - v1.4-branch

addons:
  apt:
    packages:
      - g++-10
      - python3
      - lcov
      - libdlib-dev
      - libblas-dev
      - liblapack-dev
      - nasm
      - googletest
      - libexiv2-dev
    sources:

  homebrew:
    packages:
      - qt5
      - exiv2
      - dlib
    update: true

notifications:
  on_failure: never
  on_success: never

os:
  - linux
  - osx

compiler:
  - gcc
  # - clang     disabled due to https://bugs.llvm.org/show_bug.cgi?id=33222 (https://stackoverflow.com/questions/46859053/stdvisit-for-variant-fails-to-compile-under-clang-5)

env:
  - DEBUG=0

matrix:
  exclude:
    - os: osx
      compiler: gcc
  include:
    - os: linux
      compiler: gcc
      env: DEBUG=1

  allow_failures:
    - os: osx

cache:
    - ccache: true
    - directories:
        - $HOME/tools               # vcpkg

install:
  # setup tools for particular system
  - if [ $TRAVIS_OS_NAME == 'osx' ]; then
        brew upgrade pyenv;
        eval "$(pyenv init -)";
        brew install ccache;
        export PATH="/usr/local/opt/ccache/libexec:$PATH";
        export PATH="/usr/local/opt/qt/bin:$PATH";
    else
        export CC=gcc-10;
        export CXX=g++-10;
        echo "max_size = 0.5"      > /home/travis/.ccache/ccache.conf;
        echo "compression = true" >> /home/travis/.ccache/ccache.conf;
        sudo add-apt-repository -y ppa:beineri/opt-qt-5.15.0-focal;
        sudo apt install qt515base qt515svg qt515quickcontrols2 libgl-dev lcov;
        source /opt/qt515/bin/qt515-env.sh;
        mkdir $HOME/googletest;
        pushd $HOME/googletest;
        cmake /usr/src/googletest -DCMAKE_INSTALL_PREFIX=$HOME/googletest_installation;
        make install;
        popd;
    fi

  - if [ ! -d $HOME/tools/vcpkg ]; then
        git clone https://github.com/microsoft/vcpkg.git $HOME/tools/vcpkg;
        pushd $HOME/tools/vcpkg;
        sh ./bootstrap-vcpkg.sh;
        popd;
    fi

  - $HOME/tools/vcpkg/vcpkg --overlay-ports=./ci/vcpkg --overlay-ports=./ci/vcpkg-system-native install exiv2 openlibrary magic-enum

before_script:
  - if [ $DEBUG -eq 1 ]; then
        EXTRA_CMAKE_OPTIONS="-DENABLE_CODE_COVERAGE=ON -DCMAKE_BUILD_TYPE=Debug";
    fi

  # photo broom
  - mkdir build && cd build
  - ccache -z

script:
  - cmake -DCMAKE_INSTALL_PREFIX=$TRAVIS_BUILD_DIR/usr
          -DBUILD_UPDATER=ON
          -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
          -DCMAKE_C_COMPILER_LAUNCHER=ccache
          -DGTest_DIR=$HOME/googletest_installation/lib/cmake/GTest
          -DCMAKE_TOOLCHAIN_FILE=$HOME/tools/vcpkg/scripts/buildsystems/vcpkg.cmake
          ${EXTRA_CMAKE_OPTIONS}
          ..
  - make

after_script:
  - ccache -s
  - if [ $TRAVIS_OS_NAME != 'osx' ]; then
        xvfb-run -e /dev/stdout ctest -V -L UnitTest;
    fi

after_success:
  - if [ $DEBUG -eq 1 ]; then
        cd ${TRAVIS_BUILD_DIR}/build;
        xvfb-run -e /dev/stdout make run_unit_tests_code_coverage;
        lcov --directory . --capture --output-file coverage.info;
        lcov --remove coverage.info '/usr/*' --output-file coverage.info;
        lcov --list coverage.info;
        bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports";
    fi
Build Config
{
  "dist": "trusty",
  "sudo": "required",
  "addons": {
    "artifacts": {
      "paths": [
        "./build/shellcheck-${VERSION}.tar.bz2"
      ],
      "target_paths": [
        "/binaries/$OS_NAME/$LSB_RELEASE/$ARCH"
      ]
    }
  },
  "script": [
    "export LSB_RELEASE=${LSB_RELEASE:-$(lsb_release -rs || echo ${$(sw_vers -productVersion)%*.*})}",
    "export OS_NAME=${OS_NAME:-$(lsb_release -is | tr \"A-Z\" \"a-z\" || echo \"osx\")}",
    "export ARCH=${ARCH:-$(uname -m)}",
    "make build"
  ],
  "language": "bash"
}