.travis.yml 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. #
  2. # Copyright (c) 2008-2017 the Urho3D project.
  3. #
  4. # Permission is hereby granted, free of charge, to any person obtaining a copy
  5. # of this software and associated documentation files (the "Software"), to deal
  6. # in the Software without restriction, including without limitation the rights
  7. # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. # copies of the Software, and to permit persons to whom the Software is
  9. # furnished to do so, subject to the following conditions:
  10. #
  11. # The above copyright notice and this permission notice shall be included in
  12. # all copies or substantial portions of the Software.
  13. #
  14. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  20. # THE SOFTWARE.
  21. #
  22. ---
  23. language: cpp
  24. compiler: gcc
  25. cache:
  26. ccache: true
  27. directories:
  28. - $HOME/cmake-3.8.2-Linux-x86_64/bin
  29. - $HOME/cmake-3.8.2-Linux-x86_64/share
  30. dist: trusty
  31. sudo: false
  32. addons: {apt: {packages: &default_packages [doxygen, graphviz]}}
  33. env:
  34. global:
  35. - secure: SLJCjkjDsTMbCIV9Wecz5JATnhk0fuzlnLMeZdvvFDv+8NL8cXyutkU0VfyRSLf3HSD1Js79a6fRMROyVGWj/w/BRrjqGnZzsB6+ZeJNnadiVIF5Gh+w90We5ccvSp2G4DyYgwkNnkKlJK7zNEWGu/K+bHL1EOCA+EIVrFMyA44=
  36. - secure: ecj/PwpbHkH9AYFsc2TMeRuNm5E3xMM8A0x4AcGhzpwDuZWdFx3R1T4G9u45Z5aUyTJWGqOeX1JPaEVVFZuYnNBKRy0kmiUrM9EE0j7WsT57K48tP1ysn2ynyvHgbYkKOfYR0t8XAMWTBbulT9DVVk3DS69//2WgiXGDVUEJTyI=
  37. - numjobs=4
  38. - USE_CCACHE=1
  39. - CCACHE_SLOPPINESS=pch_defines,time_macros
  40. - CCACHE_COMPRESS=1
  41. - CCACHE_MAXSIZE=100M
  42. - URHO3D_DEPLOYMENT_TARGET=generic
  43. stage: build
  44. before_script:
  45. - rake ci_timer
  46. # Upgrade CMake using tarball from its vendor and cache the installation
  47. - if [[ ! -f $HOME/cmake-3.8.2-Linux-x86_64/bin/cmake ]]; then wget --no-check-certificate https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz -O $HOME/cmake.tar.gz && tar xf $HOME/cmake.tar.gz -C $HOME && rm $HOME/cmake.tar.gz; fi
  48. - export PATH=$HOME/cmake-3.8.2-Linux-x86_64/bin:$PATH
  49. # Rely on git directly to detect the commit message and the release tag instead of using the corresponding Travis's environment variable because we may be querying for different commit SHA
  50. - if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then export COMMIT_MESSAGE=$(git log --format=%B -n 1 $TRAVIS_COMMIT); fi
  51. - export TAG=$(git describe --exact-match $TRAVIS_COMMIT 2>/dev/null); if [[ $TAG =~ [[:digit:]]+\.[[:digit:]]+ ]]; then export RELEASE_TAG=$TAG; fi
  52. # Travis-CI has a special case handling for release tag where it checks out directly from the tag branch instead of the default 'master' branch
  53. - if [[ $RELEASE_TAG ]] || ([[ "$TRAVIS_BRANCH" == "master" ]] && [[ "$TRAVIS_PULL_REQUEST" == "false" ]]); then if [[ ${TRAVIS_JOB_NUMBER##*.} == 1 ]]; then export SITE_UPDATE=1; fi; if [[ "$CC" == "gcc" ]] && ([[ $RELEASE_TAG ]] || echo $COMMIT_MESSAGE |grep -cq '\[ci package\]'); then export PACKAGE_UPLOAD=1; fi; fi
  54. - if [[ $LINUX ]]; then
  55. if [[ "$URHO3D_64BIT" == "0" ]]; then
  56. export CMAKE_PREFIX_PATH=/usr/lib/i386-linux-gnu;
  57. elif [[ ! $PACKAGE_UPLOAD ]]; then
  58. export DISPLAY=:99.0; bash -e /etc/init.d/xvfb start;
  59. fi;
  60. elif [[ $WIN32 ]]; then
  61. if [[ "$URHO3D_64BIT" == "0" ]]; then export ARCH=i686; else export ARCH=x86_64; fi;
  62. export MINGW_PREFIX=/usr/bin/${ARCH}-w64-mingw32 DIRECTX_LIB_SEARCH_PATHS=/usr/${ARCH}-w64-mingw32/lib;
  63. fi
  64. - if [[ $URHO3D_BINDINGS ]]; then git clone --depth 1 https://github.com/urho3d/fastcomp-clang.git && export LLVM_CLANG_ROOT=$(pwd)/fastcomp-clang; fi
  65. # For some reason clang compiler toolchain installation in Ubuntu does not have symlink in the ccache symlinks directory, so workaround it
  66. - if [[ "$CC" == "clang" ]]; then ln -s $(which ccache) $HOME/clang && ln -s $(which ccache) $HOME/clang++ && export PATH=$HOME:$PATH; fi
  67. - rake ci_setup_cache
  68. script: rake ci && if [[ $SITE_UPDATE ]]; then rake ci_site_update; fi && if [[ $PACKAGE_UPLOAD ]]; then rake ci_package_upload && if [[ $LINUX ]] && [[ ! "$URHO3D_64BIT" == "0" ]]; then rake ci_package_upload URHO3D_USE_LIB64_RPM=1; fi; fi && rake ci_timer
  69. after_script:
  70. - rake ci_teardown_cache
  71. - if [[ ${TRAVIS_JOB_NUMBER##*.} == 1 ]] && [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then rake ci_create_mirrors; fi
  72. notifications: {email: {on_success: never, on_failure: change}}
  73. # Below are our custom data to preset build stages for other documents in this YAML stream, we do this because YAML anchor cannot be referenced across document boundary
  74. data:
  75. stages:
  76. base: &base
  77. addons:
  78. before_script:
  79. after_script:
  80. housekeep:
  81. <<: *base
  82. cache:
  83. env:
  84. script: rake ci_delete_mirror
  85. matrix:
  86. fast_finish: true
  87. exclude:
  88. - compiler: gcc
  89. include:
  90. - &Linux-64bit
  91. addons: {apt: {packages: &linux_packages [*default_packages, libpulse-dev, rpm]}}
  92. env: LINUX=1 URHO3D_LIB_TYPE=STATIC URHO3D_UPDATE_SOURCE_TREE=1 SF_DEFAULT=linux:Linux-64bit-STATIC.tar.gz
  93. - <<: *Linux-64bit
  94. env: LINUX=1 URHO3D_LIB_TYPE=SHARED
  95. - &Linux-64bit-clang
  96. <<: *Linux-64bit
  97. compiler: clang
  98. addons: {apt: {packages: *linux_packages}}
  99. env: LINUX=1 URHO3D_LIB_TYPE=STATIC
  100. - <<: *Linux-64bit-clang
  101. env: LINUX=1 URHO3D_LIB_TYPE=SHARED
  102. - &Linux-32bit
  103. addons: {apt: {packages: [*linux_packages, g++-multilib, "libxrandr-dev:i386", "libglapi-mesa:i386", "libgl1-mesa-glx:i386", "libgl1-mesa-dev:i386", "libxext-dev:i386", "libxrender-dev:i386", lib32readline6-dev]}}
  104. env: LINUX=1 URHO3D_LIB_TYPE=STATIC URHO3D_64BIT=0
  105. - &Linux-32bit-shared
  106. <<: *Linux-32bit
  107. env: LINUX=1 URHO3D_LIB_TYPE=SHARED URHO3D_64BIT=0
  108. - <<: *Linux-32bit
  109. compiler: clang
  110. - <<: *Linux-32bit-shared
  111. compiler: clang
  112. - &MinGW-64bit
  113. compiler: mingw-w64-x86_64
  114. addons: {apt: {packages: [*default_packages, gcc-mingw-w64-x86-64, g++-mingw-w64-x86-64, binutils-mingw-w64-x86-64]}}
  115. env: WIN32=1 URHO3D_LIB_TYPE=STATIC
  116. - <<: *MinGW-64bit
  117. env: WIN32=1 URHO3D_LIB_TYPE=SHARED
  118. - <<: *MinGW-64bit
  119. env: WIN32=1 URHO3D_LIB_TYPE=STATIC URHO3D_OPENGL=0
  120. - <<: *MinGW-64bit
  121. env: WIN32=1 URHO3D_LIB_TYPE=SHARED URHO3D_OPENGL=0
  122. - &MinGW-32bit
  123. compiler: mingw-w64-i686
  124. addons: {apt: {packages: [*default_packages, gcc-mingw-w64-i686, g++-mingw-w64-i686, binutils-mingw-w64-i686]}}
  125. env: WIN32=1 URHO3D_LIB_TYPE=STATIC URHO3D_64BIT=0
  126. - <<: *MinGW-32bit
  127. env: WIN32=1 URHO3D_LIB_TYPE=SHARED URHO3D_64BIT=0
  128. - <<: *MinGW-32bit
  129. env: WIN32=1 URHO3D_LIB_TYPE=STATIC URHO3D_64BIT=0 URHO3D_OPENGL=0
  130. - <<: *MinGW-32bit
  131. env: WIN32=1 URHO3D_LIB_TYPE=SHARED URHO3D_64BIT=0 URHO3D_OPENGL=0
  132. # TODO - if/when Travis-CI later supports conditional build stages then move the 'scan' and 'annotate' stages here
  133. - stage: lint (to be implemented)
  134. <<: *base
  135. script: true # Using clang-tidy or something like that or using CMake/clang-tidy integration (see <LANG>_CLANG_TIDY CMake property)
  136. ---
  137. branch: {name: MinGW-CI, active: yes, appveyor: yes}
  138. version: '{build}'
  139. platform:
  140. - x86
  141. - x64
  142. clone_depth: 50
  143. cache:
  144. # AppVeyor seems to restore caches based on the job ordering alone, it does not use the env-vars as the key like Travis
  145. # Therefore, we are forced to list out all the cache items for our master CI and MinGW CI builds here
  146. # Build
  147. # mingw-Build
  148. # Cache the MinGW compiler toolchains so that our CI builds do not chalk up their download stats
  149. - C:\tools\mingw32
  150. - C:\tools\mingw64
  151. environment:
  152. GIT_NAME:
  153. secure: JatNbOZZZKMvMHL8sRq9XpHgESzJ13eh9NHbMK99rX8=
  154. GIT_EMAIL:
  155. secure: 7EAYZJ5nFqEhMKcPmUvnqPp81XAoJEILzDJJ2qZXrKA=
  156. GH_TOKEN:
  157. secure: xx7og+aLQbdBSsdVo79OTGtdfqedOpYpIJjduNlzjFSXsTkD8NX8fEPq0XE1KT5n
  158. SF_KEY:
  159. secure: 6Vuo+sNP2YT/iI4ilNDdyJbKpu1AYxSpkdwjJxeZ3BVXM0XQQnG7VS/6IspV9kgWXmYpeVnUTqpoxAg7GDf3MTN9SeXgwHuSsblIAHDaOJk=
  160. SF_API:
  161. secure: gEDrho4yNr5++SbgkWsxQiFA62GJfTLrZU9Dzjz9HCUcS7XwjTGg3XsFm84w6B1s
  162. # Using neither-in-nor-out-of-source (Urho3D-legacy) build tree when on AppVeyor; using out-of-source (and in-the-source) build tree when on Travis-CI for test coverage
  163. build_tree: mingw-Build
  164. config: Release
  165. # We cannot afford to have a large matrix on AppVeyor at the moment
  166. URHO3D_D3D11: 1
  167. MINGW: 1
  168. # MinGW-w64 on Windows is NOT multilib capable but we are installing the ones that support C++14 standard
  169. x86_64-posix-seh: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/6.3.0/threads-posix/seh/x86_64-6.3.0-release-posix-seh-rt_v5-rev1.7z
  170. i686-posix-dwarf: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/6.3.0/threads-posix/dwarf/i686-6.3.0-release-posix-dwarf-rt_v5-rev1.7z
  171. matrix:
  172. - URHO3D_LIB_TYPE: STATIC
  173. - URHO3D_LIB_TYPE: SHARED
  174. before_build:
  175. - rake ci_timer
  176. - set "APPVEYOR_REPO_COMMIT=%APPVEYOR_REPO_COMMIT%~"
  177. - ps: $env:COMMIT_MESSAGE = $(git log --format=%B -n 1 $env:APPVEYOR_REPO_COMMIT);
  178. if ($env:APPVEYOR_REPO_TAG -eq "true") { $env:RELEASE_TAG = $env:APPVEYOR_REPO_TAG_NAME };
  179. if ($env:RELEASE_TAG -or ($env:APPVEYOR_REPO_BRANCH -notmatch "[^-]+-[^-]+-CI" -and (select-string '\[ci package\]' -inputobject $env:COMMIT_MESSAGE)))
  180. {
  181. $env:PACKAGE_UPLOAD = "1";
  182. do { "Installing doxygen and graphviz..."; choco install doxygen.portable graphviz.portable >$null } until ($?);
  183. }
  184. else
  185. {
  186. $env:URHO3D_TOOLS = "0";
  187. iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-desktop.ps1'))
  188. }
  189. - if "%PLATFORM%" == "x64" (set "URHO3D_64BIT=1" && set "MINGW_URL=%x86_64-posix-seh%" && set "ARCH=64") else (set "MINGW_URL=%i686-posix-dwarf%" && set "ARCH=32")
  190. - if not exist "C:\tools\mingw%ARCH%" curl -fsSL -o "mingw.7z" -O "%MINGW_URL%" && 7z x -y -o"C:\tools" "mingw.7z" >nul && echo "Installed MinGW compiler toolchain to C:\tools"
  191. - set "PATH=C:\tools\mingw%ARCH%\bin;%PATH%"
  192. # rake ci_setup_cache
  193. build_script:
  194. - rake ci && if "%PACKAGE_UPLOAD%" == "1" (rake ci_package_upload && move %build_tree%\*.zip . && rd /S /Q %build_tree%\_CPack_Packages)
  195. - rake ci_timer
  196. after_build:
  197. # rake ci_teardown_cache
  198. - if "%PLATFORM%:%URHO3D_LIB_TYPE%" == "x64:SHARED" rake ci_delete_mirror
  199. test: off
  200. artifacts:
  201. - path: .\*.zip
  202. deploy: off
  203. ---
  204. branch: {name: Coverity-Scan, active: no}
  205. language: cpp
  206. compiler: gcc
  207. cache:
  208. ccache: true
  209. directories:
  210. - $HOME/cmake-3.8.2-Linux-x86_64/bin
  211. - $HOME/cmake-3.8.2-Linux-x86_64/share
  212. dist: trusty
  213. sudo: false
  214. addons:
  215. apt:
  216. packages: libpulse-dev
  217. coverity_scan:
  218. project:
  219. name: urho3d/Urho3D
  220. description: Urho3D is a free lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license. Greatly inspired by OGRE and Horde3D.
  221. notification_email: [email protected]
  222. build_command_prepend: rake cmake URHO3D_LUAJIT=1 URHO3D_LUAJIT_AMALG=1 URHO3D_SAMPLES=1 URHO3D_TOOLS=1 URHO3D_EXTRAS=1 URHO3D_DATABASE_SQLITE=1 URHO3D_LIB_TYPE=SHARED
  223. build_command: rake make numjobs=4
  224. branch_pattern: .*Coverity-Scan$
  225. env:
  226. global:
  227. - secure: SLJCjkjDsTMbCIV9Wecz5JATnhk0fuzlnLMeZdvvFDv+8NL8cXyutkU0VfyRSLf3HSD1Js79a6fRMROyVGWj/w/BRrjqGnZzsB6+ZeJNnadiVIF5Gh+w90We5ccvSp2G4DyYgwkNnkKlJK7zNEWGu/K+bHL1EOCA+EIVrFMyA44=
  228. - secure: itgWNvH4Zj0hQpkUctVxMwJwVX3hIluVuvUbzO2XG7dxQaMMfcLGwVKgq8X1HOf4dJCUv5WL0jcSMWXbdc8tvqQJwBb5R2Z2JJYpTTAgtmLy7TNn6zgetZtGrYEJuTlxSItbS/NF4iPDO25ih7j5Ma0ffXRpBnlURQaytfYfFaQ=
  229. - LINUX=1
  230. - USE_CCACHE=1
  231. - CCACHE_SLOPPINESS=pch_defines,time_macros
  232. - CCACHE_COMPRESS=1
  233. - CCACHE_MAXSIZE=100M
  234. stage: scan
  235. before_script:
  236. - if [[ ! -f $HOME/cmake-3.8.2-Linux-x86_64/bin/cmake ]]; then wget --no-check-certificate https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz -O $HOME/cmake.tar.gz && tar xf $HOME/cmake.tar.gz -C $HOME && rm $HOME/cmake.tar.gz; fi
  237. - export PATH=$HOME/cmake-3.8.2-Linux-x86_64/bin:$PATH
  238. - export TRAVIS_COMMIT=$TRAVIS_COMMIT~
  239. - export COMMIT_MESSAGE=$(git log --format=%B -n 1 $TRAVIS_COMMIT)
  240. - rake ci_setup_cache
  241. script: true
  242. after_script:
  243. - rake ci_teardown_cache
  244. - rake ci_delete_mirror
  245. ---
  246. branch: {name: Annotate, active: no}
  247. language: cpp
  248. compiler: gcc
  249. cache:
  250. ccache: true
  251. directories:
  252. - $HOME/cmake-3.8.2-Linux-x86_64/bin
  253. - $HOME/cmake-3.8.2-Linux-x86_64/share
  254. addons: {apt: {packages: libpulse-dev}}
  255. env:
  256. global:
  257. - secure: SLJCjkjDsTMbCIV9Wecz5JATnhk0fuzlnLMeZdvvFDv+8NL8cXyutkU0VfyRSLf3HSD1Js79a6fRMROyVGWj/w/BRrjqGnZzsB6+ZeJNnadiVIF5Gh+w90We5ccvSp2G4DyYgwkNnkKlJK7zNEWGu/K+bHL1EOCA+EIVrFMyA44=
  258. - numjobs=4
  259. - USE_CCACHE=1
  260. - CCACHE_SLOPPINESS=pch_defines,time_macros
  261. - CCACHE_COMPRESS=1
  262. - CCACHE_MAXSIZE=100M
  263. stage: annotate
  264. before_script:
  265. - if [[ ! -f $HOME/cmake-3.8.2-Linux-x86_64/bin/cmake ]]; then wget --no-check-certificate https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz -O $HOME/cmake.tar.gz && tar xf $HOME/cmake.tar.gz -C $HOME && rm $HOME/cmake.tar.gz; fi
  266. - export PATH=$HOME/cmake-3.8.2-Linux-x86_64/bin:$PATH
  267. - export TRAVIS_COMMIT=$TRAVIS_COMMIT~
  268. - export COMMIT_MESSAGE=$(git log --format=%B -n 1 $TRAVIS_COMMIT)
  269. - git clone --depth 1 https://github.com/urho3d/fastcomp-clang.git && export LLVM_CLANG_ROOT=$(pwd)/fastcomp-clang
  270. - rake ci_setup_cache
  271. script: rake ci_annotate
  272. after_script:
  273. - rake ci_teardown_cache
  274. - rake ci_delete_mirror
  275. ---
  276. branch: {name: Android-CI, active: yes}
  277. language: android
  278. cache:
  279. directories:
  280. - $HOME/.ccache
  281. - $HOME/cmake-3.8.2-Linux-x86_64/bin
  282. - $HOME/cmake-3.8.2-Linux-x86_64/share
  283. dist: trusty
  284. sudo: false
  285. addons: {apt: {packages: &default_packages [doxygen, graphviz, g++-multilib]}}
  286. env:
  287. global:
  288. - secure: SLJCjkjDsTMbCIV9Wecz5JATnhk0fuzlnLMeZdvvFDv+8NL8cXyutkU0VfyRSLf3HSD1Js79a6fRMROyVGWj/w/BRrjqGnZzsB6+ZeJNnadiVIF5Gh+w90We5ccvSp2G4DyYgwkNnkKlJK7zNEWGu/K+bHL1EOCA+EIVrFMyA44=
  289. - secure: ecj/PwpbHkH9AYFsc2TMeRuNm5E3xMM8A0x4AcGhzpwDuZWdFx3R1T4G9u45Z5aUyTJWGqOeX1JPaEVVFZuYnNBKRy0kmiUrM9EE0j7WsT57K48tP1ysn2ynyvHgbYkKOfYR0t8XAMWTBbulT9DVVk3DS69//2WgiXGDVUEJTyI=
  290. - numjobs=4
  291. - ANDROID=1
  292. - ANDROID_TMP=~/tmp
  293. - USE_CCACHE=1
  294. - CCACHE_SLOPPINESS=pch_defines,time_macros
  295. - CCACHE_COMPRESS=1
  296. - CCACHE_MAXSIZE=100M
  297. matrix:
  298. - ANDROID_ABI=armeabi-v7a ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang URHO3D_LIB_TYPE=STATIC # Using default native API Level android-9
  299. - ANDROID_ABI=armeabi-v7a ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang URHO3D_LIB_TYPE=SHARED AVD=21
  300. # x86 and x86_64 emulation currently requires hardware acceleration which Travis-CI cannot provide, so skip testing using AVD for now
  301. - ANDROID_ABI=x86_64 ANDROID_TOOLCHAIN_NAME=x86_64-clang URHO3D_LIB_TYPE=STATIC INSTALL=sys-img-x86_64-android-21 # Using default native API level android-21
  302. - ANDROID_ABI=x86_64 ANDROID_TOOLCHAIN_NAME=x86_64-clang URHO3D_LIB_TYPE=SHARED INSTALL=sys-img-x86_64-android-21
  303. - ANDROID_ABI=x86 ANDROID_TOOLCHAIN_NAME=x86-clang URHO3D_LIB_TYPE=STATIC INSTALL=sys-img-x86-android-21 ANDROID_NATIVE_API_LEVEL=android-21 # At least android-12 is needed when LuaJIT is enabled
  304. - ANDROID_ABI=x86 ANDROID_TOOLCHAIN_NAME=x86-clang URHO3D_LIB_TYPE=SHARED INSTALL=sys-img-x86-android-21 ANDROID_NATIVE_API_LEVEL=android-21
  305. # ANDROID_ANDROID_ABI=arm64-v8a uses NEON by default, so the following two CI jobs also test NEON code path in the build
  306. - ANDROID_ABI=arm64-v8a ANDROID_TOOLCHAIN_NAME=aarch64-linux-android-clang URHO3D_LIB_TYPE=STATIC NO_SDK_SYSIMG=1 # Using default native API level android-21
  307. - ANDROID_ABI=arm64-v8a ANDROID_TOOLCHAIN_NAME=aarch64-linux-android-clang URHO3D_LIB_TYPE=SHARED NO_SDK_SYSIMG=1
  308. stage: build
  309. before_script:
  310. # Temporarily disable the test to build the APK as Travis-CI Trusty beta VM has not yet setup the environment for Android properly
  311. - export NO_SDK_SYSIMG=1; unset AVD INSTALL
  312. - rake ci_timer
  313. - if [[ ! -f $HOME/cmake-3.8.2-Linux-x86_64/bin/cmake ]]; then wget --no-check-certificate https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz -O $HOME/cmake.tar.gz && tar xf $HOME/cmake.tar.gz -C $HOME && rm $HOME/cmake.tar.gz; fi
  314. - export PATH=$HOME/cmake-3.8.2-Linux-x86_64/bin:$PATH
  315. - export TRAVIS_COMMIT=$TRAVIS_COMMIT~
  316. - export COMMIT_MESSAGE=$(git log --format=%B -n1 $TRAVIS_COMMIT)
  317. - export TAG=$(git describe --exact-match $TRAVIS_COMMIT 2>/dev/null); if [[ $TAG =~ [[:digit:]]+\.[[:digit:]]+ ]]; then export RELEASE_TAG=$TAG; fi
  318. - if [[ $RELEASE_TAG ]] || (! [[ $TRAVIS_BRANCH =~ [^-]+-[^-]+-CI ]] && echo $COMMIT_MESSAGE |grep -cq '\[ci package\]'); then export PACKAGE_UPLOAD=1; fi
  319. - git clone --depth 1 --branch strip https://github.com/urho3d/android-ndk.git && export ANDROID_NDK=$(pwd)/android-ndk && if ([[ $AVD ]] || [[ $PACKAGE_UPLOAD ]]) && [[ $INSTALL ]]; then (while :; do echo 'y'; sleep 1; done) |android update sdk --no-ui --all --filter $INSTALL; fi
  320. - export C_PATH=$(pwd)/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin
  321. - export PATH=$(whereis -b ccache |grep -o '\S*lib\S*'):$C_PATH:$PATH
  322. - for compiler in $C_PATH/{clang,clang++}; do touch -d "2017-01-01 00:00:00 +0800" $compiler; done
  323. - rake ci_setup_cache
  324. script: rake ci && if [[ $PACKAGE_UPLOAD ]]; then rake ci_package_upload; fi && rake ci_timer
  325. after_script: rake ci_teardown_cache
  326. matrix:
  327. fast_finish: true
  328. include: [stage: housekeep]
  329. ---
  330. branch: {name: RPI-CI, active: yes}
  331. language: cpp
  332. compiler: gcc
  333. cache:
  334. ccache: true
  335. directories:
  336. - $HOME/cmake-3.8.2-Linux-x86_64/bin
  337. - $HOME/cmake-3.8.2-Linux-x86_64/share
  338. dist: trusty
  339. sudo: false
  340. addons: {apt: {packages: [doxygen, graphviz, g++-multilib, rpm]}}
  341. env:
  342. global:
  343. - secure: SLJCjkjDsTMbCIV9Wecz5JATnhk0fuzlnLMeZdvvFDv+8NL8cXyutkU0VfyRSLf3HSD1Js79a6fRMROyVGWj/w/BRrjqGnZzsB6+ZeJNnadiVIF5Gh+w90We5ccvSp2G4DyYgwkNnkKlJK7zNEWGu/K+bHL1EOCA+EIVrFMyA44=
  344. - secure: ecj/PwpbHkH9AYFsc2TMeRuNm5E3xMM8A0x4AcGhzpwDuZWdFx3R1T4G9u45Z5aUyTJWGqOeX1JPaEVVFZuYnNBKRy0kmiUrM9EE0j7WsT57K48tP1ysn2ynyvHgbYkKOfYR0t8XAMWTBbulT9DVVk3DS69//2WgiXGDVUEJTyI=
  345. - numjobs=4
  346. - RPI=1
  347. - USE_CCACHE=1
  348. - CCACHE_SLOPPINESS=pch_defines,time_macros
  349. - CCACHE_COMPRESS=1
  350. - CCACHE_MAXSIZE=100M
  351. matrix:
  352. # RPI 1
  353. - URHO3D_LIB_TYPE=STATIC
  354. - URHO3D_LIB_TYPE=SHARED
  355. # RPI 2/3
  356. - URHO3D_LIB_TYPE=STATIC RPI_ABI='armeabi-v7a with NEON'
  357. - URHO3D_LIB_TYPE=SHARED RPI_ABI='armeabi-v7a with NEON'
  358. stage: build
  359. before_script:
  360. - rake ci_timer
  361. - if [[ ! -f $HOME/cmake-3.8.2-Linux-x86_64/bin/cmake ]]; then wget --no-check-certificate https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz -O $HOME/cmake.tar.gz && tar xf $HOME/cmake.tar.gz -C $HOME && rm $HOME/cmake.tar.gz; fi
  362. - export PATH=$HOME/cmake-3.8.2-Linux-x86_64/bin:$PATH
  363. - git clone --depth 1 https://github.com/raspberrypi/tools.git rpi-tools && export RPI_PREFIX=$(pwd)/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf && git clone --depth 1 https://github.com/urho3d/rpi-sysroot.git && export RPI_SYSROOT=$(pwd)/rpi-sysroot && for compiler in $RPI_PREFIX-{gcc,g++}; do touch -d "2017-01-01 00:00:00 +0800" $compiler; done
  364. - export TRAVIS_COMMIT=$TRAVIS_COMMIT~
  365. - export COMMIT_MESSAGE=$(git log --format=%B -n 1 $TRAVIS_COMMIT)
  366. - export TAG=$(git describe --exact-match $TRAVIS_COMMIT 2>/dev/null); if [[ $TAG =~ [[:digit:]]+\.[[:digit:]]+ ]]; then export RELEASE_TAG=$TAG; fi
  367. - if [[ $RELEASE_TAG ]] || (! [[ $TRAVIS_BRANCH =~ [^-]+-[^-]+-CI ]] && echo $COMMIT_MESSAGE |grep -cq '\[ci package\]'); then export PACKAGE_UPLOAD=1; fi
  368. - export PATH=${RPI_PREFIX%/*}:$PATH
  369. - rake ci_setup_cache
  370. script: rake ci && if [[ $PACKAGE_UPLOAD ]]; then rake ci_package_upload; fi && rake ci_timer
  371. after_script: rake ci_teardown_cache
  372. matrix:
  373. fast_finish: true
  374. include: [stage: housekeep]
  375. ---
  376. branch: {name: ARM-CI, active: yes}
  377. language: cpp
  378. compiler: gcc
  379. cache:
  380. ccache: true
  381. directories:
  382. - $HOME/cmake-3.8.2-Linux-x86_64/bin
  383. - $HOME/cmake-3.8.2-Linux-x86_64/share
  384. dist: trusty
  385. sudo: false
  386. addons: {apt: {packages: [doxygen, graphviz, g++-multilib, rpm]}}
  387. env:
  388. global:
  389. - secure: SLJCjkjDsTMbCIV9Wecz5JATnhk0fuzlnLMeZdvvFDv+8NL8cXyutkU0VfyRSLf3HSD1Js79a6fRMROyVGWj/w/BRrjqGnZzsB6+ZeJNnadiVIF5Gh+w90We5ccvSp2G4DyYgwkNnkKlJK7zNEWGu/K+bHL1EOCA+EIVrFMyA44=
  390. - secure: ecj/PwpbHkH9AYFsc2TMeRuNm5E3xMM8A0x4AcGhzpwDuZWdFx3R1T4G9u45Z5aUyTJWGqOeX1JPaEVVFZuYnNBKRy0kmiUrM9EE0j7WsT57K48tP1ysn2ynyvHgbYkKOfYR0t8XAMWTBbulT9DVVk3DS69//2WgiXGDVUEJTyI=
  391. - numjobs=4
  392. - ARM=1
  393. - USE_CCACHE=1
  394. - CCACHE_SLOPPINESS=pch_defines,time_macros
  395. - CCACHE_COMPRESS=1
  396. - CCACHE_MAXSIZE=100M
  397. matrix:
  398. # ODROID-X2
  399. - SYSROOT=armhf-sysroot URHO3D_LIB_TYPE=STATIC ARM_ABI_FLAGS='-mcpu=cortex-a9 -mfpu=neon-fp16'
  400. - SYSROOT=armhf-sysroot URHO3D_LIB_TYPE=SHARED ARM_ABI_FLAGS='-mcpu=cortex-a9 -mfpu=neon-fp16'
  401. # ODROID-C2
  402. - SYSROOT=arm64-sysroot URHO3D_LIB_TYPE=STATIC ARM_ABI_FLAGS='-mcpu=cortex-a53'
  403. - SYSROOT=arm64-sysroot URHO3D_LIB_TYPE=SHARED ARM_ABI_FLAGS='-mcpu=cortex-a53'
  404. stage: build
  405. before_script:
  406. - rake ci_timer
  407. - if [[ ! -f $HOME/cmake-3.8.2-Linux-x86_64/bin/cmake ]]; then wget --no-check-certificate https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz -O $HOME/cmake.tar.gz && tar xf $HOME/cmake.tar.gz -C $HOME && rm $HOME/cmake.tar.gz; fi
  408. - export PATH=$HOME/cmake-3.8.2-Linux-x86_64/bin:$PATH
  409. - if [[ $SYSROOT =~ arm64 ]]; then export triplet=aarch64-linux-gnu; else export triplet=arm-linux-gnueabihf; fi
  410. - wget https://releases.linaro.org/components/toolchain/binaries/latest-5/$triplet/gcc-linaro-5.4.1-2017.05-x86_64_$triplet.tar.xz -O arm-tools.tar.xz && tar xf arm-tools.tar.xz && rm arm-tools.tar.xz && mv gcc-linaro* gcc-linaro && export ARM_PREFIX=$(pwd)/gcc-linaro/bin/$triplet
  411. - for compiler in $ARM_PREFIX-{gcc,g++}; do touch -d "2017-01-01 00:00:00 +0800" $compiler; done
  412. - git clone --depth 1 https://github.com/urho3d/$SYSROOT.git && export ARM_SYSROOT=$(pwd)/$SYSROOT
  413. - export TRAVIS_COMMIT=$TRAVIS_COMMIT~
  414. - export COMMIT_MESSAGE=$(git log --format=%B -n 1 $TRAVIS_COMMIT)
  415. - export TAG=$(git describe --exact-match $TRAVIS_COMMIT 2>/dev/null); if [[ $TAG =~ [[:digit:]]+\.[[:digit:]]+ ]]; then export RELEASE_TAG=$TAG; fi
  416. - if [[ $RELEASE_TAG ]] || (! [[ $TRAVIS_BRANCH =~ [^-]+-[^-]+-CI ]] && echo $COMMIT_MESSAGE |grep -cq '\[ci package\]'); then export PACKAGE_UPLOAD=1; fi
  417. - export PATH=${ARM_PREFIX%/*}:$PATH
  418. - rake ci_setup_cache
  419. script: rake ci && if [[ $PACKAGE_UPLOAD ]]; then rake ci_package_upload && if [[ "$SYSROOT" == "arm64-sysroot" ]]; then rake ci_package_upload URHO3D_USE_LIB64_RPM=1; fi; fi && rake ci_timer
  420. after_script: rake ci_teardown_cache
  421. matrix:
  422. fast_finish: true
  423. include: [stage: housekeep]
  424. ---
  425. branch: {name: Web-CI, active: yes}
  426. language: cpp
  427. compiler: gcc
  428. cache:
  429. ccache: true
  430. directories:
  431. - $HOME/cmake-3.8.2-Linux-x86_64/bin
  432. - $HOME/cmake-3.8.2-Linux-x86_64/share
  433. dist: trusty
  434. sudo: false
  435. addons: {apt: {packages: [doxygen, graphviz]}}
  436. env:
  437. global:
  438. - secure: SLJCjkjDsTMbCIV9Wecz5JATnhk0fuzlnLMeZdvvFDv+8NL8cXyutkU0VfyRSLf3HSD1Js79a6fRMROyVGWj/w/BRrjqGnZzsB6+ZeJNnadiVIF5Gh+w90We5ccvSp2G4DyYgwkNnkKlJK7zNEWGu/K+bHL1EOCA+EIVrFMyA44=
  439. - secure: ecj/PwpbHkH9AYFsc2TMeRuNm5E3xMM8A0x4AcGhzpwDuZWdFx3R1T4G9u45Z5aUyTJWGqOeX1JPaEVVFZuYnNBKRy0kmiUrM9EE0j7WsT57K48tP1ysn2ynyvHgbYkKOfYR0t8XAMWTBbulT9DVVk3DS69//2WgiXGDVUEJTyI=
  440. - numjobs=2
  441. - WEB=1
  442. - EMSCRIPTEN_SHARE_DATA=1
  443. - USE_CCACHE=1
  444. - CCACHE_SLOPPINESS=pch_defines,time_macros
  445. - CCACHE_COMPRESS=1
  446. - CCACHE_MAXSIZE=100M
  447. matrix:
  448. - URHO3D_LIB_TYPE=MODULE BRANCH=master numjobs=4
  449. - URHO3D_LIB_TYPE=STATIC BRANCH=master
  450. - URHO3D_LIB_TYPE=SHARED BRANCH=master
  451. # URHO3D_LIB_TYPE=MODULE EMSCRIPTEN_WASM=1 BRANCH=incoming numjobs=4
  452. - URHO3D_LIB_TYPE=STATIC EMSCRIPTEN_WASM=1 BRANCH=incoming
  453. - URHO3D_LIB_TYPE=SHARED EMSCRIPTEN_WASM=1 BRANCH=incoming
  454. stage: build
  455. before_script:
  456. - rake ci_timer
  457. - if [[ ! -f $HOME/cmake-3.8.2-Linux-x86_64/bin/cmake ]]; then wget --no-check-certificate https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz -O $HOME/cmake.tar.gz && tar xf $HOME/cmake.tar.gz -C $HOME && rm $HOME/cmake.tar.gz; fi
  458. - export PATH=$HOME/cmake-3.8.2-Linux-x86_64/bin:$PATH
  459. - export TRAVIS_COMMIT=$TRAVIS_COMMIT~
  460. - export COMMIT_MESSAGE=$(git log --format=%B -n 1 $TRAVIS_COMMIT)
  461. - export TAG=$(git describe --exact-match $TRAVIS_COMMIT 2>/dev/null); if [[ $TAG =~ [[:digit:]]+\.[[:digit:]]+ ]]; then export RELEASE_TAG=$TAG; fi
  462. - if [[ $RELEASE_TAG ]] || (! [[ $TRAVIS_BRANCH =~ [^-]+-[^-]+-CI ]] && echo $COMMIT_MESSAGE |grep -cq '\[ci package\]'); then export PACKAGE_UPLOAD=1; fi
  463. - if [[ $EMSCRIPTEN_WASM ]]; then export BINARYEN=binaryen-master-64bit; fi
  464. - git clone --depth 1 --branch $BRANCH https://github.com/urho3d/emscripten-sdk.git && emscripten-sdk/emsdk activate --build=Release sdk-${BRANCH}-64bit $BINARYEN && source emscripten-sdk/emsdk_env.sh
  465. - for compiler in $EMSCRIPTEN/{emcc,em++}; do touch -d "2017-01-01 00:00:00 +0800" $compiler; done
  466. - rake ci_setup_cache
  467. script: rake ci && if [[ "$TRAVIS_BRANCH" == "Web-CI" ]] && [[ ! $EMSCRIPTEN_WASM ]] && [[ "$TRAVIS_PULL_REQUEST" == "false" ]] && [[ "$URHO3D_LIB_TYPE" == "SHARED" ]]; then rake ci_emscripten_samples_update; fi && if [ $PACKAGE_UPLOAD ]; then rake ci_package_upload; fi && rake ci_timer
  468. after_script: rake ci_teardown_cache
  469. matrix:
  470. fast_finish: true
  471. include: [stage: housekeep]
  472. ---
  473. branch: {name: OSX-CI, active: yes}
  474. language: objective-c
  475. cache: {directories: $HOME/.ccache}
  476. osx_image: xcode8.3
  477. env:
  478. global:
  479. - secure: SLJCjkjDsTMbCIV9Wecz5JATnhk0fuzlnLMeZdvvFDv+8NL8cXyutkU0VfyRSLf3HSD1Js79a6fRMROyVGWj/w/BRrjqGnZzsB6+ZeJNnadiVIF5Gh+w90We5ccvSp2G4DyYgwkNnkKlJK7zNEWGu/K+bHL1EOCA+EIVrFMyA44=
  480. - secure: ecj/PwpbHkH9AYFsc2TMeRuNm5E3xMM8A0x4AcGhzpwDuZWdFx3R1T4G9u45Z5aUyTJWGqOeX1JPaEVVFZuYnNBKRy0kmiUrM9EE0j7WsT57K48tP1ysn2ynyvHgbYkKOfYR0t8XAMWTBbulT9DVVk3DS69//2WgiXGDVUEJTyI=
  481. - numjobs=3
  482. - OSX=1
  483. - USE_CCACHE=1
  484. - CCACHE_SLOPPINESS=pch_defines,time_macros
  485. - CCACHE_COMPRESS=1
  486. - CCACHE_MAXSIZE=300M
  487. matrix:
  488. - &tvOS XCODE=1 TVOS=1 URHO3D_LIB_TYPE=STATIC APPLETVOS_DEPLOYMENT_TARGET=10.2 sdk=appletvsimulator
  489. - &iOS XCODE=1 IOS=1 URHO3D_LIB_TYPE=STATIC IPHONEOS_DEPLOYMENT_TARGET=10.3 sdk=iphonesimulator
  490. - &macOS-STATIC XCODE=1 URHO3D_LIB_TYPE=STATIC CMAKE_OSX_DEPLOYMENT_TARGET=10.12 SF_DEFAULT=mac:OSX-64bit-STATIC.tar.gz
  491. - &macOS-SHARED XCODE=1 URHO3D_LIB_TYPE=SHARED CMAKE_OSX_DEPLOYMENT_TARGET=10.12
  492. - MAKEFILE=1 URHO3D_LIB_TYPE=STATIC URHO3D_DEPLOYMENT_TARGET=generic
  493. - MAKEFILE=1 URHO3D_LIB_TYPE=SHARED URHO3D_DEPLOYMENT_TARGET=generic
  494. stage: build
  495. before_script: &before_script
  496. - rake ci_timer
  497. - export TRAVIS_COMMIT=$TRAVIS_COMMIT~
  498. - export COMMIT_MESSAGE=$(git log --format=%B -n 1 $TRAVIS_COMMIT)
  499. - export TAG=$(git describe --exact-match $TRAVIS_COMMIT 2>/dev/null); if [[ $TAG =~ [[:digit:]]+\.[[:digit:]]+ ]]; then export RELEASE_TAG=$TAG; fi
  500. - brew update
  501. - which cmake >/dev/null 2>&1 || cmake=cmake
  502. - travis_retry brew install ccache $cmake
  503. - if [[ ! $cmake ]]; then brew outdated cmake || brew upgrade cmake; fi
  504. - export PATH=$(brew info ccache |grep -o '\S*lib\S*'):$PATH
  505. - if [[ $XCODE ]]; then pushd $(dirname $(xcodebuild -find-executable clang)) && sudo cp -p $(which ccache) . && for compiler in clang clang++; do sudo mv $compiler{,.orig} && sudo ln -sf $(pwd)/clang.orig /usr/local/bin/$compiler && sudo ln -sf ccache $compiler; done && popd && if [[ $IOS ]]; then redundant=AppleTV,Watch; elif [[ $TVOS ]]; then redundant=iPhone,Watch; else redundant=iPhone,AppleTV,Watch; fi && eval sudo rm -rf /Applications/Xcode.app/Contents/Developer/Platforms/{$redundant}{OS,Simulator}.platform; if echo $COMMIT_MESSAGE |egrep -cq '\[(cache clear|xcode 64bit only)\]' || [[ $(ccache -s |grep 'files in cache' |rev |cut -d' ' -f1 |rev) == '0' ]]; then export XCODE_64BIT_ONLY=1; fi; fi
  506. - rake ci_setup_cache
  507. script: rake ci && if [[ $PACKAGE_UPLOAD ]]; then rake ci_package_upload; fi && rake ci_timer
  508. after_script: rake ci_teardown_cache
  509. matrix:
  510. fast_finish: true
  511. include:
  512. - &package-stage
  513. stage: package
  514. condition: PACKAGE_UPLOAD
  515. env: *tvOS
  516. before_script:
  517. - *before_script
  518. - export PACKAGE_UPLOAD=1
  519. - whitelist='brew-cask ccache cmake doxygen graphviz libpng libyaml md5deep openssl pkg-config readline'
  520. - for f in $(brew list); do [[ $whitelist =~ $f ]] || brew uninstall --force $f; done
  521. - for f in $(brew cask list |grep -v Uninstalling); do [[ $whitelist =~ $f ]] || brew cask uninstall --force $f; done
  522. - travis_retry brew cleanup
  523. - travis_retry brew install doxygen graphviz
  524. - <<: *package-stage
  525. env: *iOS
  526. - <<: *package-stage
  527. env: *macOS-STATIC
  528. - <<: *package-stage
  529. env: *macOS-SHARED
  530. - stage: housekeep
  531. # Below samples are excluded from Xcode/OSX build due to build time constraint
  532. data:
  533. excluded_sample:
  534. '#2': [42_PBRMaterials]
  535. '#3': [42_PBRMaterials]
  536. ...
  537. # vi: set ts=2 sw=2 expandtab: