os: - linux - osx # If linux, use precise dist: trusty sudo: false language: - cpp env: - BUILD_TYPE=Debug - BUILD_TYPE=Release compiler: - clang addons: # Everything under apt is only used on linux apt: sources: # PPA for clang 5.0 - llvm-toolchain-trusty-5.0 # PPA for clang-format 7 - llvm-toolchain-trusty # PPA for a more recen libstdc++ - ubuntu-toolchain-r-test packages: # Get recent compilers - clang-5.0 # Pull a recent version of libstdc++ - libstdc++-6-dev # Ninja builds are faster - ninja-build # Required for the code generator, unfortunately this is jinja2 2.6 which lacks some of the options we use - python-jinja2 # Required dependency for GLFW on Linux - xorg-dev # Format using the latest and greatest - clang-format-7 before_install: - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update; fi - if [ "$TRAVIS_OS_NAME" == "osx" ]; then sudo easy_install pip; fi install: # Install dependencies required on OSX - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install ninja; fi - if [ "$TRAVIS_OS_NAME" == "osx" ]; then sudo python -m pip install jinja2; fi script: # Use the more recent compilers we just installed - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$CXX" == "clang++" ]; then export CXX="clang++-5.0" CC="clang-5.0"; fi # Build the Vulkan backend on Linux - if [ "$TRAVIS_OS_NAME" == "linux" ]; then export BUILD_VULKAN=1; else export BUILD_VULKAN=0; fi # Build - mkdir -p build - cd build - cmake --version - cmake -G "Ninja" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DNXT_USE_WERROR=1 -DNXT_ENABLE_VULKAN=$BUILD_VULKAN .. - cmake --build . # Test - ./nxt_unittests # Get out of the build dir - cd .. # Lint - if [ "$TRAVIS_OS_NAME" == "linux" ]; then ./scripts/travis_lint_format.sh clang-format-7; fi