# Copyright (c) 2016 Ableton. All Rights Reserved. language: cpp sudo: required dist: trusty branches: only: - master matrix: include: ########################################################################### # Build with the main configuration on all the supported compilers ########################################################################### # Mac OS X / XCode 7.3, 64-bit Debug - os: osx env: WORDSIZE=64 CONFIGURATION=Debug osx_image: xcode7.3 compiler: clang # Mac OS X / XCode 7.3, 64-bit Release - os: osx env: WORDSIZE=64 CONFIGURATION=Release osx_image: xcode7.3 compiler: clang # Mac OS X / XCode 7.3, 32-bit Release - os: osx env: WORDSIZE=32 CONFIGURATION=Release osx_image: xcode7.3 compiler: clang # Mac OS X / XCode 9.0, 64-bit Debug - os: osx env: WORDSIZE=64 CONFIGURATION=Debug osx_image: xcode9 compiler: clang # Linux with Clang 3.6, 64-bit Debug, Alsa - os: linux compiler: clang addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['clang-3.6', 'g++-5', 'valgrind', 'p7zip-full', 'portaudio19-dev'] env: COMPILER=clang++-3.6 WORDSIZE=64 CONFIGURATION=Debug AUDIO=Alsa # Linux with Clang 3.6, 64-bit Release, Jack - os: linux compiler: clang addons: apt: sources: ['llvm-toolchain-precise-3.8', 'ubuntu-toolchain-r-test'] packages: ['clang-3.8', 'g++-5', 'valgrind', 'p7zip-full', 'portaudio19-dev'] env: COMPILER=clang++-3.8 WORDSIZE=64 CONFIGURATION=Release AUDIO=Jack # Linux with Clang 5.0, 64-bit Debug, Alsa - os: linux compiler: clang addons: apt: sources: ['llvm-toolchain-trusty-5.0', 'ubuntu-toolchain-r-test'] packages: ['clang-5.0', 'g++-5', 'valgrind', 'p7zip-full', 'portaudio19-dev'] env: COMPILER=clang++-5.0 WORDSIZE=64 CONFIGURATION=Debug AUDIO=Alsa # Linux with GCC 5.x, 32-bit Release # - os: linux # compiler: gcc # addons: # apt: # sources: ['ubuntu-toolchain-r-test'] # packages: ['g++-5', 'g++-5-multilib', 'linux-libc-dev:i386', 'valgrind:i386', # 'p7zip-full', 'libxext-dev:i386', 'libglapi-mesa:i386', # 'libgl1-mesa-glx:i386', 'libgl1-mesa-dev:i386', # 'portaudio19-dev:i386', 'libglib2.0-0:i386'] # env: COMPILER=g++-5 WORDSIZE=32 CONFIGURATION=Release # Linux with GCC 5.x, 64-bit Release, Alsa - os: linux compiler: gcc addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-5', 'valgrind', 'p7zip-full', 'portaudio19-dev'] env: COMPILER=g++-5 WORDSIZE=64 CONFIGURATION=Release AUDIO=Alsa # Linux with GCC 6.x, 64-bit Release, Alsa - os: linux compiler: gcc addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-6', 'valgrind', 'p7zip-full', 'portaudio19-dev'] env: COMPILER=g++-6 WORDSIZE=64 CONFIGURATION=Release AUDIO=Alsa # Code formatting verification - os: linux compiler: clang addons: apt: sources: ['llvm-toolchain-trusty-5.0'] packages: ['clang-format-5.0'] env: CONFIGURATION=Formatting LLVM_VERSION=5.0 before_install: # Do indentation check - | if [ "$CONFIGURATION" = "Formatting" ]; then python ci/check-formatting.py -c $(which clang-format-5.0) exit $? fi # Override Travis' CXX Flag - CXX=$COMPILER # Install homebrew packages for Mac OS X - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update && brew install ninja qt5; fi # Install QT for Linux - | if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-add-repository -y ppa:beineri/opt-qt58-trusty sudo apt-get -qy update sudo apt-get -qy install qtdeclarative5-dev fi install: - git submodule update --init --recursive script: - | set -e if [ "$TRAVIS_OS_NAME" = "osx" ]; then PATH=`brew --prefix qt5`/bin:${PATH} if [ "$WORDSIZE" -eq 64 ]; then python ci/configure.py --configuration $CONFIGURATION --generator Ninja --with-qt else python ci/configure.py --configuration $CONFIGURATION --generator Ninja --flags "\-DCMAKE_OSX_ARCHITECTURES=i386" fi python ci/build.py --configuration $CONFIGURATION --arguments "all -v" else if [ "$WORDSIZE" -eq 64 ]; then PATH=$PWD/5.5/gcc_64:${PATH} python ci/configure.py --configuration $CONFIGURATION --with-qt -a $AUDIO else PATH=$PWD/5.5/gcc:${PATH} python ci/configure.py --configuration $CONFIGURATION -a AUDIO --flags "\-DCMAKE_CXX_FLAGS=\"\-m32\"" fi python ci/build.py --configuration $CONFIGURATION --arguments "VERBOSE=1 -j8" fi set +e # Build Tests and run with Valgrind (Linux 64-bit only). Mac OSX supports # valgrind via homebrew, but there is no bottle formula, so it must be # compiled by brew and this takes way too much time on the build server. - | set -e if [ "$TRAVIS_OS_NAME" = "linux" ]; then python ci/run-tests.py --target LinkCoreTest --valgrind python ci/run-tests.py --target LinkDiscoveryTest --valgrind else python ci/run-tests.py --target LinkCoreTest python ci/run-tests.py --target LinkDiscoveryTest fi set +e