ce2e48af52
- To support ASYNCIFY instead of EMTERPRETER - No need to generate a standalone toolchain for Android NDK
166 lines
6.2 KiB
YAML
166 lines
6.2 KiB
YAML
language: c
|
|
dist: trusty
|
|
|
|
git:
|
|
depth: 3
|
|
|
|
# TODO we could use a 32 bit Docker container for running true 32-bit tests
|
|
services:
|
|
- docker
|
|
|
|
matrix:
|
|
include:
|
|
- os: linux
|
|
env: ARCH=i386
|
|
sudo: required
|
|
- os: linux
|
|
env: ARCH=amd64 INSTALL_GLFW=YES USE_EXTERNAL_GLFW=OFF
|
|
sudo: required
|
|
- os: linux
|
|
env: ARCH=amd64 INSTALL_GLFW=YES STATIC=OFF RELEASE=NO
|
|
sudo: required
|
|
- os: linux
|
|
env: WAYLAND=ON ARCH=amd64 RELEASE=NO
|
|
sudo: required
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- libwayland-dev
|
|
- libxkbcommon-dev
|
|
- libegl1-mesa-dev
|
|
- os: osx
|
|
env: ARCH=universal
|
|
- os: osx
|
|
osx_image: xcode9.4
|
|
env: ARCH=universal SHARED=OFF RELEASE=NO
|
|
- os: linux
|
|
env: ARCH=arm64-android RELEASE=NO
|
|
sudo: required
|
|
- os: linux
|
|
env: ARCH=arm32-android RELEASE=NO
|
|
sudo: required
|
|
- os: linux
|
|
env: ARCH=html5 RELEASE=NO
|
|
sudo: required
|
|
- os: windows
|
|
compiler: gcc
|
|
env: ARCH=i386 SHARED=OFF RELEASE=NO
|
|
|
|
before_script:
|
|
|
|
before_install:
|
|
- if [ -z "$USE_EXTERNAL_GLFW" ]; then export USE_EXTERNAL_GLFW=IF_POSSIBLE; fi
|
|
- if [ -z "$SHARED" ]; then export SHARED=ON ; fi
|
|
- if [ -z "$STATIC" ]; then export STATIC=ON ; fi
|
|
- if [[ "$INSTALL_GLFW" == "YES" && "$USE_EXTERNAL_GLFW" != "OFF" ]]; then
|
|
export DONT_TEST=1;
|
|
fi
|
|
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then
|
|
if [[ "$ARCH" == *-android ]]; then
|
|
export DONT_TEST=1;
|
|
export RAYLIB_PACKAGE_SUFFIX="-Android-arm64";
|
|
wget https://dl.google.com/android/repository/android-ndk-r21-linux-x86_64.zip;
|
|
unzip -qq android-ndk*.zip;
|
|
if [[ "$ARCH" == arm64-* ]]; then
|
|
export RAYLIB_PACKAGE_SUFFIX="-Android-arm64";
|
|
TOOLCHAIN_ARCH=arm64;
|
|
PREFIX=aarch64-linux-android-;
|
|
else
|
|
export RAYLIB_PACKAGE_SUFFIX="-Android-arm32";
|
|
TOOLCHAIN_ARCH=arm;
|
|
PREFIX=arm-linux-androideabi-;
|
|
fi;
|
|
export PATH=/android-ndk*/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH;
|
|
export CC=${PREFIX}clang;
|
|
export CXX=${PREFIX}clang++;
|
|
export CMAKE_ARCH_ARGS='-DPLATFORM=Android';
|
|
elif [ "$ARCH" == "html5" ]; then
|
|
export DONT_TEST=1;
|
|
export RAYLIB_PACKAGE_SUFFIX="-html5";
|
|
docker run --privileged=true -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-latest bash;
|
|
export CMAKE_ARCH_ARGS='-DPLATFORM=Web -DCMAKE_TOOLCHAIN_FILE=../cmake/emscripten.cmake';
|
|
RUNNER='docker exec -it emscripten cmake -E chdir build';
|
|
else
|
|
sudo apt-get install -y gcc-multilib
|
|
libasound2-dev:$ARCH
|
|
libxcursor-dev:$ARCH libxinerama-dev:$ARCH mesa-common-dev:$ARCH
|
|
libx11-dev:$ARCH libxrandr-dev:$ARCH libxrandr2:$ARCH libxi-dev:$ARCH
|
|
libgl1-mesa-dev:$ARCH libglu1-mesa-dev:$ARCH;
|
|
|
|
if [ "$OPENAL" == "ON" ]; then sudo apt-get install -y libopenal-dev; fi;
|
|
if [ "$ARCH" == "i386" ]; then export CMAKE_ARCH_ARGS='-DCMAKE_C_FLAGS=-m32 -DCMAKE_SYSTEM_LIBRARY_PATH=/usr/lib/i386-linux-gnu -DSUPPORT_FILEFORMAT_FLAC=OFF'; fi;
|
|
|
|
export RAYLIB_PACKAGE_SUFFIX="-Linux-$ARCH";
|
|
if [ "$INSTALL_GLFW" == "YES" ]; then
|
|
pushd src/external/glfw;
|
|
cmake . -DGLFW_BUILD_DOCS=OFF
|
|
-DGLFW_BUILD_TESTS=OFF
|
|
-DGLFW_BUILD_EXAMPLES=OFF
|
|
-DGLFW_INSTALL=ON
|
|
-DBUILD_SHARED_LIBS=ON
|
|
-DGLFW_USE_WAYLAND=$WAYLAND;
|
|
make;
|
|
sudo make install;
|
|
popd;
|
|
fi;
|
|
fi;
|
|
fi
|
|
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then
|
|
export RAYLIB_PACKAGE_SUFFIX="-macOS";
|
|
if [ "$INSTALL_GLFW" == "YES" ]; then brew update; brew install glfw; fi;
|
|
fi
|
|
- if [ "$TRAVIS_OS_NAME" == "windows" ]; then
|
|
export DONT_TEST=1;
|
|
export RAYLIB_PACKAGE_SUFFIX="-windows";
|
|
export CMAKE_ARCH_ARGS='-DPLATFORM=Desktop';
|
|
fi
|
|
- mkdir build
|
|
- $RUNNER $CC --version
|
|
|
|
script:
|
|
- cd build
|
|
- if test -n "$WAYLAND"; then
|
|
wget https://mirrors.edge.kernel.org/ubuntu/pool/universe/e/extra-cmake-modules/extra-cmake-modules_5.44.0-0ubuntu1_amd64.deb;
|
|
sudo apt-get clean;
|
|
sudo apt-get update;
|
|
sudo apt-get install dpkg;
|
|
sudo dpkg -i extra-cmake-modules_5.44.0-0ubuntu1_amd64.deb;
|
|
git clone git://anongit.freedesktop.org/wayland/wayland-protocols;
|
|
pushd wayland-protocols;
|
|
git checkout 1.15 && ./autogen.sh --prefix=/usr && make && sudo make install;
|
|
popd;
|
|
fi
|
|
- $RUNNER cmake $CMAKE_ARCH_ARGS
|
|
-DMACOS_FATLIB=ON
|
|
-DSTATIC=$STATIC -DSHARED=$SHARED
|
|
-DBUILD_EXAMPLES=ON
|
|
-DUSE_EXTERNAL_GLFW=$USE_EXTERNAL_GLFW
|
|
-DUSE_WAYLAND=$WAYLAND
|
|
-DINCLUDE_EVERYTHING=ON
|
|
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
|
|
..
|
|
- $RUNNER cmake --build . --target
|
|
- if [ "$RELEASE" != "NO" ]; then $RUNNER cmake --build . --target package; fi
|
|
- if [ -n "$RUNNER" ]; then
|
|
sudo $RUNNER cmake --build . --target install;
|
|
else
|
|
$(which sudo) $RUNNER "$(which cmake)" --build . --target install;
|
|
fi
|
|
- if [ ! "$DONT_TEST" ]; then
|
|
pkg-config --static --libs raylib;
|
|
nm -g release/libraylib.a | grep glfwGetProcAddress || (echo "libraylib.a doesn't contain GLFW symbols! Aborting..." && false);
|
|
ctest --output-on-failure;
|
|
fi
|
|
|
|
deploy:
|
|
provider: releases
|
|
api_key:
|
|
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=
|
|
file_glob: true
|
|
file: raylib-*.tar.gz
|
|
skip_cleanup: true
|
|
on:
|
|
repo: raysan5/raylib
|
|
branch: master
|
|
tags: true
|