You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
5.1 KiB

  1. language: c
  2. dist: trusty
  3. git:
  4. depth: 3
  5. # TODO we could use a 32 bit Docker container for running true 32-bit tests
  6. services:
  7. - docker
  8. matrix:
  9. include:
  10. - os: linux
  11. env: ARCH=i386
  12. sudo: required
  13. - os: linux
  14. env: ARCH=amd64
  15. sudo: required
  16. - os: linux
  17. env: ARCH=amd64 GLFW=SYSTEM RELEASE=NO
  18. sudo: required
  19. - os: linux
  20. env: USE_WAYLAND=ON ARCH=amd64 RELEASE=NO
  21. sudo: required
  22. addons:
  23. apt:
  24. packages:
  25. - libwayland-dev
  26. - libxkbcommon-dev
  27. - libegl1-mesa-dev
  28. - os: osx
  29. env: ARCH=universal
  30. - os: linux
  31. env: ARCH=arm64-android RELEASE=NO
  32. sudo: required
  33. - os: linux
  34. env: ARCH=arm32-android RELEASE=NO
  35. sudo: required
  36. - os: linux
  37. env: ARCH=html5 RELEASE=NO
  38. sudo: required
  39. before_script:
  40. before_install:
  41. - if [ "$TRAVIS_OS_NAME" == "linux" ]; then
  42. if [[ "$ARCH" == *-android ]]; then
  43. export RAYLIB_PACKAGE_SUFFIX="-Android-arm64";
  44. wget https://dl.google.com/android/repository/android-ndk-r17-linux-x86_64.zip;
  45. unzip -qq android-ndk*.zip;
  46. if [[ "$ARCH" == arm64-* ]]; then
  47. export RAYLIB_PACKAGE_SUFFIX="-Android-arm64";
  48. export TOOLCHAIN_ARCH=arm64;
  49. export PREFIX=aarch64-linux-android-;
  50. else
  51. export RAYLIB_PACKAGE_SUFFIX="-Android-arm32";
  52. export TOOLCHAIN_ARCH=arm;
  53. export PREFIX=arm-linux-androideabi-;
  54. fi;
  55. android-ndk*/build/tools/make_standalone_toolchain.py --arch $TOOLCHAIN_ARCH --api 21 --install-dir /tmp/android-toolchain;
  56. export PATH=/tmp/android-toolchain/bin:$PATH;
  57. export CC=${PREFIX}clang;
  58. export CXX=${PREFIX}clang++;
  59. export CMAKE_ARCH_ARGS='-DPLATFORM=Android';
  60. elif [ "$ARCH" == "html5" ]; then
  61. export RAYLIB_PACKAGE_SUFFIX="-html5";
  62. docker run --privileged=true -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash;
  63. export CMAKE_ARCH_ARGS='-DPLATFORM=Web -DCMAKE_TOOLCHAIN_FILE=../cmake/emscripten.cmake';
  64. export RUNNER='docker exec -it emscripten cmake -E chdir build';
  65. else
  66. sudo apt-get install -y gcc-multilib
  67. libasound2-dev:$ARCH
  68. libxcursor-dev:$ARCH libxinerama-dev:$ARCH mesa-common-dev:$ARCH
  69. libx11-dev:$ARCH libxrandr-dev:$ARCH libxrandr2:$ARCH libxi-dev:$ARCH
  70. libgl1-mesa-dev:$ARCH libglu1-mesa-dev:$ARCH;
  71. if [ "$ARCH" == "i386" ]; then
  72. export CMAKE_ARCH_ARGS='-DCMAKE_C_FLAGS=-m32 -DCMAKE_SYSTEM_LIBRARY_PATH=/usr/lib/i386-linux-gnu';
  73. fi;
  74. export RAYLIB_PACKAGE_SUFFIX="-Linux-$ARCH";
  75. if [ "$GLFW" == "SYSTEM" ]; then
  76. wget 'http://ftp.de.debian.org/debian/pool/main/g/glfw3/libglfw3_3.2.1-1_amd64.deb';
  77. wget 'http://ftp.de.debian.org/debian/pool/main/g/glfw3/libglfw3-dev_3.2.1-1_amd64.deb';
  78. sudo dpkg -i libglfw3_3.2.1-1_amd64.deb libglfw3-dev_3.2.1-1_amd64.deb;
  79. fi;
  80. fi;
  81. fi
  82. - if [ "$TRAVIS_OS_NAME" == "osx" ]; then
  83. export RAYLIB_PACKAGE_SUFFIX="-macOS";
  84. if [ "$GLFW" == "SYSTEM" ]; then brew update; brew install glfw; fi;
  85. fi
  86. - mkdir build
  87. - $RUNNER $CC --version
  88. script:
  89. - cd build
  90. - if test -n "${USE_WAYLAND}";
  91. then wget https://mirrors.kernel.org/ubuntu/pool/universe/e/extra-cmake-modules/extra-cmake-modules_5.38.0a-0ubuntu1_amd64.deb;
  92. sudo dpkg -i extra-cmake-modules_5.38.0a-0ubuntu1_amd64.deb;
  93. git clone git://anongit.freedesktop.org/wayland/wayland-protocols;
  94. pushd wayland-protocols;
  95. git checkout 1.12 && ./autogen.sh --prefix=/usr && make && sudo make install;
  96. popd;
  97. fi
  98. - $RUNNER cmake $CMAKE_ARCH_ARGS -DMACOS_FATLIB=ON -DSTATIC=ON -DSHARED=ON -DBUILD_EXAMPLES=ON -DBUILD_GAMES=ON -DUSE_EXTERNAL_GLFW=IF_POSSIBLE -DUSE_WAYLAND=${USE_WAYLAND} ..
  99. - $RUNNER make VERBOSE=1
  100. - if [ "$RELEASE" != "NO" ]; then $RUNNER make package; fi;
  101. - sudo $RUNNER make install
  102. - if [[ "$ARCH" != *-android && "$ARCH" != html5 ]]; then
  103. pkg-config --static --libs raylib;
  104. nm -g release/libraylib.a | grep glfwGetProcAddress || (echo "libraylib.a doesn't contain GLFW symbols! Aborting..." && false);
  105. ctest --output-on-failure;
  106. fi
  107. deploy:
  108. provider: releases
  109. api_key:
  110. secure: LvqUIAN/3dJul+Ra2iK3tSaNG5IwsNMmGIwVMy0DK5IBCxiQPBc9pWGiE30RTBPt6Z+N4BhMEE8DtUl+vnISlMoHWNIIhF2zwC66hs/F7zY7qEITMRSmfiLcqxQysknFOnJB06CATgXcFqlEo9j+t4abrG/f3qcb92J4O2uNz336Au2myTx93Q5MxbyA7KiUuEutFnb2dWiPCY4d+sGeXEfsiD2R7aj/8MaWOkoGdZVrTkI9juMgvpImkjQBArvqdjUMeT3MsRrwgOIq5v2GFV9dOl8k1WzPeT8B2JHh00ed/o1/wuFq/cLLOxtYo2+Pv3+xatOrlexoX0WkDm7C9/L1W5U4rLexU3CQ9mMBmHPnp6k/WXZ5QXEE4uUF0+LpN3XlIXzFpdZmZiVV8VLxg2WvyncMmivYiu7/MTkyfZxyKkzwl7sZZslzHA9kOGedGaN7b7/2B77OFHoQK8lKfdFml7jJnarh+89nenNZYMab0E8qkOJOyb2bYlDTa0/2nyxGiyymYgq6YHLNrDbhqB/1LzdgzjMliQ8ri5q9Ux2vjfcqOzhfAmcwFwnY/D6yXJWYi0DWpHZdpKl3du6dYDrypW91/yDWbwiJ/YhrE7ZunzrcB6GH/QkbuzWxdCth39rQAHih8DG01co/K3Gvi4yGjvIH5tFUpyEolMnpMiA=
  111. file_glob: true
  112. file: raylib-*.tar.gz
  113. skip_cleanup: true
  114. on:
  115. repo: raysan5/raylib
  116. branch: master
  117. tags: true