language: cpp cache: ccache matrix: fast_finish: true include: - name: "lint check" os: linux dist: xenial compiler: gcc env: MAKE_TARGET=format-verify PATH="/usr/lib/llvm-8/bin:$PATH" addons: apt: sources: - llvm-toolchain-xenial-8 packages: - clang-format-8 - name: "make debug (linux/gcc)" os: linux dist: xenial compiler: gcc env: BUILD_TYPE=Debug IS_NOTIFICATION=1 - name: "make release (linux/gcc)" os: linux dist: xenial compiler: gcc env: BUILD_TYPE=Release - name: "make debug (linux/clang)" os: linux dist: xenial compiler: clang env: BUILD_TYPE=Debug - name: "make release (linux/clang)" os: linux dist: xenial compiler: clang env: BUILD_TYPE=Release - name: "make debug (macOS/clang)" os: osx osx_image: xcode10.2 env: BUILD_TYPE=Debug PATH="/usr/local/opt/ccache/libexec:$PATH" - name: "make release (macOS/clang)" os: osx osx_image: xcode10.2 env: BUILD_TYPE=Release PATH="/usr/local/opt/ccache/libexec:$PATH" - name: "make iOS" os: osx osx_image: xcode10.2 env: MAKE_TARGET=ios PATH="/usr/local/opt/ccache/libexec:$PATH" # - name: "make windows (macOS)" # os: osx # osx_image: xcode10.2 # env: MAKE_TARGET=windows PATH="/usr/local/opt/ccache/libexec:$PATH" # - name: "make windows-release (macOS)" # os: osx # osx_image: xcode10.2 # env: MAKE_TARGET=windows-release PATH="/usr/local/opt/ccache/libexec:$PATH" # - name: "make release (macOS beta/clang)" # os: osx # osx_image: xcode11 # env: BUILD_TYPE=Release PATH="/usr/local/opt/ccache/libexec:$PATH" # - name: "address sanitizer" # os: osx # osx_image: xcode10.2 # env: BUILD_TYPE=Debug XSAN=address PATH="/usr/local/opt/ccache/libexec:$PATH" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ # - name: "thread sanitizer" # os: osx # osx_image: xcode10.2 # env: BUILD_TYPE=Debug XSAN=thread PATH="/usr/local/opt/ccache/libexec:$PATH" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ # - name: "undefined sanitizer" # os: osx # osx_image: xcode10.2 # env: BUILD_TYPE=Debug XSAN=undefined PATH="/usr/local/opt/ccache/libexec:$PATH" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ - name: "memory sanitizer" os: linux dist: xenial compiler: clang env: BUILD_TYPE=Debug XSAN=memory - name: "router docker image" os: linux dist: xenial env: DOCKER_FILE=docker/router.Dockerfile services: docker - name: "make windows docker image" os: linux dist: xenial env: DOCKER_FILE=docker/alpine-windows.Dockerfile services: docker - name: "gcc trunk" os: linux dist: xenial env: DOCKER_FILE=docker/gcc-trunk.Dockerfile services: docker allow_failures: - name: "native windows debug" os: windows env: BUILD_TYPE=Debug - name: "native windows release" os: windows env: BUILD_TYPE=Release # - name: "native windows debug" # os: windows # env: BUILD_TYPE=Debug # - name: "native windows release" # os: windows # env: BUILD_TYPE=Release # - os: linux # dist: xenial # env: DOCKER_FILE=docker/alpine-windows.Dockerfile # services: docker - os: linux dist: xenial env: DOCKER_FILE=docker/gcc-trunk.Dockerfile services: docker # - os: osx # osx_image: xcode10.2 # env: MAKE_TARGET=windows PATH="/usr/local/opt/ccache/libexec:$PATH" # - os: osx # osx_image: xcode10.2 # env: MAKE_TARGET=windows-release PATH="/usr/local/opt/ccache/libexec:$PATH" env: global: - NINJA=ninja - STATIC_LINK=OFF addons: apt: packages: - binutils-gold - build-essential - clang-format - cmake - curl - docker-ce - g++-mingw-w64 - g++-mingw-w64-x86-64 - gcc-mingw-w64-base - git - libcap-dev - libcurl4-openssl-dev - libuv1-dev - mingw-w64 mingw-w64-common - ninja-build - libsodium-dev homebrew: packages: - ccache - cmake - curl - libuv - llvm - make - mingw-w64 - ninja - libsodium before_install: - if [ "$TRAVIS_OS_NAME" == "windows" ]; then choco install curl make ninja; choco upgrade cmake.install; export CC="/c/Program Files/LLVM/bin/clang-cl"; export CXX="/c/Program Files/LLVM/bin/clang-cl"; fi script: - if [ "$TRAVIS_OS_NAME" == "windows" ]; then travis_wait cmd.exe /C '"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" amd64 && make test'; elif [[ ! -z $DOCKER_FILE ]]; then travis_wait docker build -f $DOCKER_FILE .; else travis_wait make ${MAKE_TARGET:-test}; fi after_script: - echo $TRAVIS_COMMIT_RANGE - echo $TRAVIS_COMMIT_LOG notifications: webhooks: urls: $WEBHOOK_URL irc: on_success: change on_failure: change channels: - "chat.freenode.net#llarp" nick: lokinet-ci template: - "%{result} | %{repository}#%{build_number} (%{commit} : %{author}) | Build details : %{build_url}"