1language: cpp
2sudo: required
3dist: xenial
4branches:
5  only:
6    - master
7addons:
8  apt:
9    sources:
10    - sourceline: "deb http://archive.ubuntu.com/ubuntu/ xenial multiverse"
11    - sourceline: "deb http://archive.ubuntu.com/ubuntu/ xenial-backports universe"
12    packages:
13    - cmake
14    - libxaw7-dev
15    - libzzip-dev
16    - libxrandr-dev
17    - libfreetype6-dev
18    - libxt-dev
19    - libboost-all-dev
20    - libgles2-mesa-dev
21    - mesa-common-dev
22    - libgl1-mesa-dev
23    - libglu1-mesa-dev # legacy GL RenderSystem only
24    - python3-dev
25    - python3-lxml     # for validate script
26    - nvidia-cg-dev
27    - swig3.0
28before_script:
29    # we start compilation afterwards anyway, so no need to sleep
30    - if [ "$TRAVIS_OS_NAME" = "linux" ]; then export DISPLAY=:99.0 && sh -e /etc/init.d/xvfb start ; fi
31    - if [ "$TRAVIS_OS_NAME" =   "osx" ]; then brew update && brew install freetype libzzip sdl2 ; fi
32osx_image: xcode10.1
33env:
34    - TEST=TRUE
35    - GL3ES=TRUE # build GL3Plus and GLES2 Rendersystems
36    - ANDROID=TRUE
37    - IOS=TRUE
38compiler:
39    - clang
40    - gcc
41matrix:
42    exclude:
43        - os: linux
44          compiler: clang
45        - os: linux
46          env: IOS=TRUE
47        - os: linux
48          env: GL3ES=TRUE
49        - os: osx
50          compiler: gcc
51        - os: osx
52          env: TEST=TRUE
53        - os: osx
54          env: ANDROID=TRUE
55script:
56    - cmake -P ci-build.cmake
57    - BUILD_CMD="cmake --build build"
58    - if [ "$TRAVIS_OS_NAME" = "linux" ]; then BUILD_CMD="$BUILD_CMD -- -k -j 2" ; fi
59    - if [ "$TRAVIS_OS_NAME" == "osx" ]; then BUILD_CMD="set -o pipefail && $BUILD_CMD | xcpretty" ; fi
60    - echo $BUILD_CMD && eval $BUILD_CMD
61    # run unit tests
62    - if [ $TEST ]; then build/bin/Test_Ogre ; fi
63    - if [ "$TRAVIS_OS_NAME" == "osx" -a "$IOS" != "TRUE" ]; then build/bin/Debug/Test_Ogre.app/Contents/MacOS/Test_Ogre ; fi
64    # XMLConverter works & validates
65    - if [ $TEST ]; then build/bin/OgreXMLConverter Samples/Media/models/jaiqua.mesh && build/bin/OgreXMLConverter Samples/Media/models/jaiqua.skeleton ; fi
66    - if [ $TEST ]; then python3 Tools/XMLConverter/docs/validate.py Samples/Media/models/jaiqua.mesh.xml ; fi
67    # run visual tests
68    - if [ $TEST ]; then cd build/bin && ./TestContext -rs "OpenGL Rendering Subsystem" ; fi
69    # verify that the python modules are loadable
70    - if [ $TEST ]; then cd ../lib && python -c "import _Ogre; import _OgreRTShader" ; fi
71    # whitespace sanity
72    - if [ "$TRAVIS_OS_NAME" = "linux" ]; then git diff --check ${TRAVIS_COMMIT_RANGE/.../..} ; fi
73os:
74    - linux
75    - osx
76cache: apt
77