.travis.yml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. sudo: false
  2. dist: bionic
  3. language: c++
  4. env:
  5. global:
  6. - CXXFLAGS="-pedantic -Wall -Wextra"
  7. cache:
  8. apt: true
  9. directories:
  10. - $HOME/.deps
  11. matrix:
  12. include:
  13. - os: osx
  14. osx_image: xcode10.3
  15. compiler: clang
  16. - os: linux
  17. compiler: clang
  18. addons:
  19. apt:
  20. packages:
  21. - cmake
  22. - ninja-build
  23. - libsdl2-dev
  24. - libsdl2-image-dev
  25. - libfreetype6-dev
  26. - libglew-dev
  27. - liblua5.2-dev
  28. - libsfml-dev
  29. - os: linux
  30. compiler: clang
  31. env: NO_FONT_INTERFACE_DEFAULT="ON"
  32. addons:
  33. apt:
  34. packages:
  35. - cmake
  36. - ninja-build
  37. - libsdl2-dev
  38. - libsdl2-image-dev
  39. - libfreetype6-dev
  40. - libglew-dev
  41. - liblua5.2-dev
  42. - libsfml-dev
  43. - os: linux
  44. compiler: gcc
  45. env: DISABLE_RTTI_AND_EXCEPTIONS="ON" NO_THIRDPARTY_CONTAINERS="ON"
  46. addons:
  47. apt:
  48. packages:
  49. - cmake
  50. - ninja-build
  51. - libsdl2-dev
  52. - libsdl2-image-dev
  53. - libfreetype6-dev
  54. - libglew-dev
  55. - liblua5.2-dev
  56. - libsfml-dev
  57. - os: linux
  58. compiler: gcc
  59. env: VALGRIND_SAMPLES="1"
  60. services:
  61. - xvfb
  62. addons:
  63. apt:
  64. packages:
  65. - cmake
  66. - ninja-build
  67. - libsdl2-dev
  68. - libsdl2-image-dev
  69. - libfreetype6-dev
  70. - libglew-dev
  71. - liblua5.2-dev
  72. - libsfml-dev
  73. - mesa-utils
  74. - valgrind
  75. install:
  76. - mkdir -p $HOME/.deps
  77. - |
  78. if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
  79. if [[ ! -d "$HOME/.deps/cmake" ]]; then
  80. cd $HOME/.deps
  81. CMAKE_URL="https://cmake.org/files/v3.16/cmake-3.16.3-Linux-x86_64.tar.gz"
  82. mkdir -p cmake && travis_retry wget --no-clobber --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
  83. fi
  84. export PATH=${HOME}/.deps/cmake/bin:${PATH}
  85. echo ${PATH}
  86. fi
  87. - cmake --version
  88. - cd "$TRAVIS_BUILD_DIR"
  89. - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cmake -DNO_THIRDPARTY_CONTAINERS=ON -G Xcode .; fi
  90. - if [[ "$TRAVIS_OS_NAME" != "osx" ]]; then cmake -DBUILD_LUA_BINDINGS=ON -DBUILD_SAMPLES=ON -DDISABLE_RTTI_AND_EXCEPTIONS=${DISABLE_RTTI_AND_EXCEPTIONS:-OFF} -DNO_THIRDPARTY_CONTAINERS=${NO_THIRDPARTY_CONTAINERS:-OFF} -DNO_FONT_INTERFACE_DEFAULT=${NO_FONT_INTERFACE_DEFAULT:-OFF} -G Ninja .; fi
  91. before_script:
  92. - if [[ "$VALGRIND_SAMPLES" == "1" ]] && [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export DISPLAY=:99.0; fi
  93. script:
  94. - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then xcodebuild -project rmlui.xcodeproj/ -jobs 4 -configuration Release -scheme ALL_BUILD | xcpretty --color; test ${PIPESTATUS[0]} -eq 0; fi
  95. - if [[ "$TRAVIS_OS_NAME" != "osx" ]]; then ninja; fi
  96. - if [[ "$VALGRIND_SAMPLES" == "1" ]]; then mkdir build && DESTDIR=build ninja install; fi
  97. - |
  98. if [[ "$VALGRIND_SAMPLES" == "1" ]]; then
  99. cnt=0
  100. vout=$(mktemp)
  101. for f in $(find $TRAVIS_BUILD_DIR/build/usr/local/opt/RmlUi/Samples/ -executable -type f); do
  102. cd `dirname $f`
  103. sample=$(basename $f)
  104. printf "\033[0;36m$sample\033[0m\n"
  105. LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/build/usr/local/lib timeout --preserve-status --signal=TERM --kill-after=15 10 valgrind --leak-check=full --track-origins=yes --suppressions=$TRAVIS_BUILD_DIR/.travis.valgrind.supp --error-exitcode=1 --log-fd=1 ./$sample >>$vout
  106. cnt=$((cnt+1))
  107. done;
  108. cat $vout
  109. okcnt=$(grep 'ERROR SUMMARY: 0 errors' $vout | wc -l)
  110. if [[ "$okcnt" != "$cnt" ]]; then exit 1; fi
  111. fi