sudo: required
dist: xenial

language: c

env:
  global:
    - OPENSSL_INSTALL_DIR="${HOME}/opt"

addons:
  sonarcloud:
    organization: "softethervpn"

matrix:
  include:
    - env: OPENSSL_VERSION="1.0.2s" BUILD_DEB="1"
      os: linux
      compiler: gcc
    - env: RUN_SONARCLOUD=1 OPENSSL_VERSION="1.1.1c"
      os: linux
      compiler: gcc
    - env: OPENSSL_VERSION="1.1.1c" LABEL="linux-ppc64le" CMAKE_VERSION="3.9.6"
      os: linux-ppc64le
      compiler: gcc
      install:
        - wget https://cmake.org/files/v${CMAKE_VERSION%.*}/cmake-${CMAKE_VERSION}.tar.gz && tar -xzf cmake-${CMAKE_VERSION}.tar.gz
        - cd cmake-${CMAKE_VERSION} 
        - ./bootstrap > build-deps.log 2>&1 || (cat build-deps.log && exit 1)
        - sudo make install > build-deps.log 2>&1 || (cat build-deps.log && exit 1)
        - cd ..
    - env: OPENSSL_VERSION="1.0.2s" RUN_COVERITY="1"
      os: linux
      compiler: clang
    - env: OPENSSL_VERSION="1.1.1c"
      os: linux
      compiler: clang
    - env: LIBRESSL_VERSION="2.9.2"
      os: linux
      compiler: gcc
      before_install:
        - bash .ci/build-libressl.sh > build-deps.log 2>&1 || (cat build-deps.log && exit 1)
    - env: LABEL="check stb files"
      os: linux
      language: csharp
      mono: none
      dotnet: 2.2.203
      before_install:
        - true
      script:
        - cd developer_tools/stbchecker
        - dotnet run ../../src/bin/hamcore
    - os: osx
      compiler: clang
      before_install:
        - true
      script:
        - ./configure
        - make -C build
        - otool -L build/vpnserver
        - .ci/memory-leak-test.sh

cache:
  directories:
  - download-cache
  - ${HOME}/opt

before_install:
  - bash .ci/build-openssl.sh > build-deps.log 2>&1 || (cat build-deps.log && exit 1)

script:
  - export OPENSSL_ROOT_DIR=${OPENSSL_INSTALL_DIR}
  - export LD_LIBRARY_PATH="${HOME}/opt/lib:${LD_LIBRARY_PATH:-}"
  - export CFLAGS="-I${HOME}/opt/include"
  - export LDFLAGS="-L${HOME}/opt/lib"
  - echo "check_certificate = off" > ~/.wgetrc
  - .ci/coverity.sh
  - .ci/sonarcloud.sh
  - ./configure
  - make -j $(nproc || sysctl -n hw.ncpu || echo 4) -C build
  - ldd build/vpnserver
  - if [ "${BUILD_DEB}" = "1" ]; then make package -C build; fi
  - .ci/memory-leak-test.sh
