diff --git a/.travis.yml b/.travis.yml index 44527b49a..66298b3fd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,16 +11,22 @@ services: matrix: include: - os: linux - env: ARCH=i386 + env: ARCH=i386 SHARED=OFF sudo: required - os: linux env: ARCH=amd64 INSTALL_GLFW=YES USE_EXTERNAL_GLFW=OFF sudo: required - os: linux - env: ARCH=amd64 INSTALL_GLFW=YES RELEASE=NO + env: ARCH=amd64 INSTALL_GLFW=YES OPENAL=ON STATIC=OFF RELEASE=NO sudo: required + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 - os: linux - env: USE_WAYLAND=ON ARCH=amd64 RELEASE=NO + env: WAYLAND=ON ARCH=amd64 RELEASE=NO sudo: required addons: apt: @@ -41,17 +47,16 @@ matrix: sudo: required - os: linux env: ARCH=html5 RELEASE=NO - sudo: required + sudo: requir 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 [ -x "$(which gcc-5)" ]; then export CC=gcc-5; fi + - if [ -z "$USE_EXTERNAL_GLFW" ]; then USE_EXTERNAL_GLFW=IF_POSSIBLE; fi + - if [ -z "$SHARED" ]; then SHARED=ON ; fi + - if [ -z "$STATIC" ]; then STATIC=ON ; fi + - if [ -z "$OPENAL" ]; then OPENAL=OFF ; fi - if [ "$TRAVIS_OS_NAME" == "linux" ]; then if [[ "$ARCH" == *-android ]]; then export RAYLIB_PACKAGE_SUFFIX="-Android-arm64"; @@ -59,32 +64,32 @@ before_install: unzip -qq android-ndk*.zip; if [[ "$ARCH" == arm64-* ]]; then export RAYLIB_PACKAGE_SUFFIX="-Android-arm64"; - export TOOLCHAIN_ARCH=arm64; - export PREFIX=aarch64-linux-android-; + TOOLCHAIN_ARCH=arm64; + PREFIX=aarch64-linux-android-; else export RAYLIB_PACKAGE_SUFFIX="-Android-arm32"; - export TOOLCHAIN_ARCH=arm; - export PREFIX=arm-linux-androideabi-; + TOOLCHAIN_ARCH=arm; + PREFIX=arm-linux-androideabi-; fi; android-ndk*/build/tools/make_standalone_toolchain.py --arch $TOOLCHAIN_ARCH --api 21 --install-dir /tmp/android-toolchain; export PATH=/tmp/android-toolchain/bin:$PATH; export CC=${PREFIX}clang; export CXX=${PREFIX}clang++; - export CMAKE_ARCH_ARGS='-DPLATFORM=Android'; + CMAKE_ARCH_ARGS='-DPLATFORM=Android'; elif [ "$ARCH" == "html5" ]; then export RAYLIB_PACKAGE_SUFFIX="-html5"; docker run --privileged=true -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash; - export CMAKE_ARCH_ARGS='-DPLATFORM=Web -DCMAKE_TOOLCHAIN_FILE=../cmake/emscripten.cmake'; - export RUNNER='docker exec -it emscripten cmake -E chdir build'; + 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 [ "$ARCH" == "i386" ]; then - export CMAKE_ARCH_ARGS='-DCMAKE_C_FLAGS=-m32 -DCMAKE_SYSTEM_LIBRARY_PATH=/usr/lib/i386-linux-gnu'; - fi; + + if [ "$OPENAL" == "ON" ]; then sudo apt-get install -y libopenal-dev; fi; + if [ "$ARCH" == "i386" ]; then CMAKE_ARCH_ARGS='-DCMAKE_C_FLAGS=-m32 -DCMAKE_SYSTEM_LIBRARY_PATH=/usr/lib/i386-linux-gnu'; fi; export RAYLIB_PACKAGE_SUFFIX="-Linux-$ARCH"; if [ "$INSTALL_GLFW" == "YES" ]; then wget 'http://ftp.de.debian.org/debian/pool/main/g/glfw3/libglfw3_3.2.1-1_amd64.deb'; @@ -102,7 +107,7 @@ before_install: script: - cd build - - if test -n "${USE_WAYLAND}"; + - if test -n "$WAYLAND"; then wget https://mirrors.kernel.org/ubuntu/pool/universe/e/extra-cmake-modules/extra-cmake-modules_5.38.0a-0ubuntu1_amd64.deb; sudo dpkg -i extra-cmake-modules_5.38.0a-0ubuntu1_amd64.deb; git clone git://anongit.freedesktop.org/wayland/wayland-protocols; @@ -110,9 +115,17 @@ script: git checkout 1.12 && ./autogen.sh --prefix=/usr && make && sudo make install; popd; fi - - $RUNNER cmake $CMAKE_ARCH_ARGS -DMACOS_FATLIB=ON -DSTATIC=ON -DSHARED=$SHARED -DBUILD_EXAMPLES=ON -DBUILD_GAMES=ON -DUSE_EXTERNAL_GLFW=$USE_EXTERNAL_GLFW -DUSE_WAYLAND=${USE_WAYLAND} .. + - $RUNNER cmake $CMAKE_ARCH_ARGS + -DMACOS_FATLIB=ON + -DSTATIC=$STATIC -DSHARED=$SHARED + -DBUILD_EXAMPLES=ON -DBUILD_GAMES=ON + -DUSE_EXTERNAL_GLFW=$USE_EXTERNAL_GLFW + -DUSE_WAYLAND=$WAYLAND + -DUSE_OPENAL_BACKEND=$OPENAL + -DINCLUDE_EVERYTHING=ON + .. - $RUNNER make VERBOSE=1 - - if [ "$RELEASE" != "NO" ]; then $RUNNER make package; fi; + - if [ "$RELEASE" != "NO" ]; then $RUNNER make package; fi - sudo $RUNNER make install - if [[ "$ARCH" != *-android && "$ARCH" != html5 ]]; then pkg-config --static --libs raylib; diff --git a/appveyor.yml b/appveyor.yml index 6452a089f..f48486b03 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -39,7 +39,7 @@ before_build: - cd build build_script: - - cmake -G %GENERATOR% -DSTATIC=ON -DSHARED=ON -DBUILD_EXAMPLES=%examples% -DBUILD_GAMES=%examples% .. + - cmake -G %GENERATOR% -DSTATIC=ON -DSHARED=ON -DBUILD_EXAMPLES=%examples% -DBUILD_GAMES=%examples% -DINCLUDE_EVERYTHING=ON .. - cmake --build . --target install after_build: diff --git a/cmake/utils.cmake b/cmake/utils.cmake index 417384ade..ed1111de2 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -3,8 +3,10 @@ cmake_minimum_required(VERSION 2.8.0) add_definitions("-DRAYLIB_CMAKE=1") -# Linking for OS X -framework options -# Will do nothing on other OSes +if (${USE_OPENAL_BACKEND}) + find_library(OPENAL_LIBRARY OpenAL) +endif() + if(${PLATFORM} MATCHES "Android") find_library(OPENGL_LIBRARY OpenGL) set(LIBS_PRIVATE m log android EGL GLESv2 OpenSLES atomic c) @@ -31,6 +33,8 @@ else() set(LIBS_PRIVATE m pthread ${OPENGL_LIBRARIES} ${OSS_LIBRARY}) endif() +set(LIBS_PRIVATE ${LIBS_PRIVATE} ${OPENAL_LIBRARY}) + if(${PLATFORM} MATCHES "Desktop") if(USE_EXTERNAL_GLFW STREQUAL "ON") find_package(glfw3 3.2.1 REQUIRED) diff --git a/src/CMakeOptions.txt b/src/CMakeOptions.txt index a9cd43546..55c6c8e15 100644 --- a/src/CMakeOptions.txt +++ b/src/CMakeOptions.txt @@ -23,6 +23,9 @@ if(UNIX AND NOT APPLE) option(USE_WAYLAND "Use Wayland for window creation" OFF) endif() +option(INCLUDE_EVERYTHING "Include everything disabled by default (for CI usage" OFF) +set(OFF ${INCLUDE_EVERYTHING} CACHE INTERNAL "Replace any OFF by default with \${OFF} to have it covered by this option") + # core.c option(SUPPORT_BUSY_WAIT_LOOP "Use busy wait loop for timing sync instead of a high-resolution timer" ON) @@ -48,13 +51,13 @@ option(SUPPORT_FILEFORMAT_DDS "Support loading DDS as textures" ON) option(SUPPORT_FILEFORMAT_HDR "Support loading HDR as textures" ON) option(SUPPORT_FILEFORMAT_KTX "Support loading KTX as textures" ON) option(SUPPORT_FILEFORMAT_ASTC "Support loading ASTC as textures" ON) -option(SUPPORT_FILEFORMAT_BMP "Support loading BMP as textures" OFF) -option(SUPPORT_FILEFORMAT_TGA "Support loading TGA as textures" OFF) -option(SUPPORT_FILEFORMAT_JPG "Support loading JPG as textures" OFF) -option(SUPPORT_FILEFORMAT_GIF "Support loading GIF as textures" OFF) -option(SUPPORT_FILEFORMAT_PSD "Support loading PSD as textures" OFF) -option(SUPPORT_FILEFORMAT_PKM "Support loading PKM as textures" OFF) -option(SUPPORT_FILEFORMAT_PVR "Support loading PVR as textures" OFF) +option(SUPPORT_FILEFORMAT_BMP "Support loading BMP as textures" ${OFF}) +option(SUPPORT_FILEFORMAT_TGA "Support loading TGA as textures" ${OFF}) +option(SUPPORT_FILEFORMAT_JPG "Support loading JPG as textures" ${OFF}) +option(SUPPORT_FILEFORMAT_GIF "Support loading GIF as textures" ${OFF}) +option(SUPPORT_FILEFORMAT_PSD "Support loading PSD as textures" ${OFF}) +option(SUPPORT_FILEFORMAT_PKM "Support loading PKM as textures" ${OFF}) +option(SUPPORT_FILEFORMAT_PVR "Support loading PVR as textures" ${OFF}) # models.c option(SUPPORT_FILEFORMAT_OBJ "Support loading OBJ file format" ON) @@ -70,7 +73,7 @@ option(SUPPORT_FILEFORMAT_FLAC "Support loading FLAC for sound" OFF) # utils.c option(SUPPORT_SAVE_PNG "Support saving image data in PNG file format" ON) -option(SUPPORT_SAVE_BMP "Support saving image data in BMP file format" OFF) +option(SUPPORT_SAVE_BMP "Support saving image data in BMP file format" ${OFF}) option(SUPPORT_TRACELOG "Show TraceLog() output messages. NOTE: By default LOG_DEBUG traces not shown" ON) option(SUPPORT_FILEFORMAT_FNT "Support loading fonts in FNT format" ON)