From 1764d06e0d2129b578e0f9002ed4c6ee0e64f37e Mon Sep 17 00:00:00 2001 From: Jonny Paton Date: Sat, 31 Aug 2019 20:52:09 +0100 Subject: [PATCH] Android support and CI (#58) --- .travis.yml | 59 +++++++++++++++++++++++++++++++++++++- cmake/bgfx.cmake | 2 +- cmake/bx.cmake | 2 +- cmake/tools/shaderc.cmake | 4 ++- cmake/tools/texturec.cmake | 4 ++- 5 files changed, 66 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 178fce1..2262ec8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -85,8 +85,65 @@ matrix: before_script: - docker run -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash script: - - docker exec -it emscripten emconfigure cmake . -DBGFX_BUILD_TOOLS=OFF + - docker exec -it emscripten emconfigure cmake . -DBGFX_BUILD_TOOLS=OFF -DBGFX_AMALGAMATED=$AMALGAMATED -DBX_AMALGAMATED=$AMALGAMATED - docker exec -it emscripten emmake make + env: + - AMALGAMATED=OFF + + - name: "Emscripten Amalgamated" + os: linux + dist: xenial + language: node_js + services: + - docker + before_script: + - docker run -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash + script: + - docker exec -it emscripten emconfigure cmake . -DBGFX_BUILD_TOOLS=OFF -DBGFX_AMALGAMATED=$AMALGAMATED -DBX_AMALGAMATED=$AMALGAMATED + - docker exec -it emscripten emmake make + env: + - AMALGAMATED=OFF + + - name: "Android armeabi-v7a" + language: android + android: &androidComponents + components: + - tools + - platform-tools + - build-tools-26.0.1 + env: + - CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=Android -DBGFX_BUILD_TOOLS=OFF -DBGFX_BUILD_EXAMPLES=OFF -DCMAKE_ANDROID_NDK=$TRAVIS_BUILD_DIR/android-ndk-r18b -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26" + - AMALGAMATED=OFF + install: &androidInstall + - echo y | sdkmanager "cmake;3.10.2.4988404" + - echo y | sdkmanager "lldb;3.1" + - sudo ln -sf /usr/local/android-sdk/cmake/3.10.2.4988404/bin/cmake /usr/bin/cmake + - wget https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip + - unzip -qq android-ndk-r18b-linux-x86_64.zip + + - name: "Android armeabi-v7a Amalgamated" + language: android + android: *androidComponents + env: + - CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=Android -DBGFX_BUILD_TOOLS=OFF -DBGFX_BUILD_EXAMPLES=OFF -DCMAKE_ANDROID_NDK=$TRAVIS_BUILD_DIR/android-ndk-r18b -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26" + - AMALGAMATED=ON + install: *androidInstall + + - name: "Android x86" + language: android + android: *androidComponents + env: + - CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=Android -DBGFX_BUILD_TOOLS=OFF -DBGFX_BUILD_EXAMPLES=OFF -DCMAKE_ANDROID_NDK=$TRAVIS_BUILD_DIR/android-ndk-r18b -DCMAKE_ANDROID_ARCH_ABI=x86 -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26" + - AMALGAMATED=OFF + install: *androidInstall + + - name: "Android x86 Amalgamated" + language: android + android: *androidComponents + env: + - CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=Android -DBGFX_BUILD_TOOLS=OFF -DBGFX_BUILD_EXAMPLES=OFF -DCMAKE_ANDROID_NDK=$TRAVIS_BUILD_DIR/android-ndk-r18b -DCMAKE_ANDROID_ARCH_ABI=x86 -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26" + - AMALGAMATED=ON + install: *androidInstall script: - mkdir build && cd build diff --git a/cmake/bgfx.cmake b/cmake/bgfx.cmake index a7cc4b7..1215334 100755 --- a/cmake/bgfx.cmake +++ b/cmake/bgfx.cmake @@ -77,7 +77,7 @@ elseif( APPLE ) target_link_libraries( bgfx PUBLIC ${COCOA_LIBRARY} ${METAL_LIBRARY} ${QUARTZCORE_LIBRARY} ) endif() -if( UNIX AND NOT APPLE AND NOT EMSCRIPTEN ) +if( UNIX AND NOT APPLE AND NOT EMSCRIPTEN AND NOT ANDROID ) find_package(X11 REQUIRED) find_package(OpenGL REQUIRED) #The following commented libraries are linked by bx diff --git a/cmake/bx.cmake b/cmake/bx.cmake index c95508b..c3168fc 100644 --- a/cmake/bx.cmake +++ b/cmake/bx.cmake @@ -58,7 +58,7 @@ if(BGFX_CONFIG_DEBUG) endif() # Additional dependencies on Unix -if( UNIX AND NOT APPLE ) +if( UNIX AND NOT APPLE AND NOT ANDROID ) # Threads find_package( Threads ) target_link_libraries( bx ${CMAKE_THREAD_LIBS_INIT} dl ) diff --git a/cmake/tools/shaderc.cmake b/cmake/tools/shaderc.cmake index 319bb49..bd6779b 100644 --- a/cmake/tools/shaderc.cmake +++ b/cmake/tools/shaderc.cmake @@ -25,7 +25,9 @@ if( BGFX_CUSTOM_TARGETS ) add_dependencies( tools shaderc ) endif() -if (IOS) +if (ANDROID) + target_link_libraries( shaderc log ) +elseif (IOS) set_target_properties(shaderc PROPERTIES MACOSX_BUNDLE ON MACOSX_BUNDLE_GUI_IDENTIFIER shaderc) endif() diff --git a/cmake/tools/texturec.cmake b/cmake/tools/texturec.cmake index f5fd7b4..82fb18d 100644 --- a/cmake/tools/texturec.cmake +++ b/cmake/tools/texturec.cmake @@ -17,7 +17,9 @@ if( BGFX_CUSTOM_TARGETS ) add_dependencies( tools texturec ) endif() -if (IOS) +if (ANDROID) + target_link_libraries( texturec log ) +elseif (IOS) set_target_properties(texturec PROPERTIES MACOSX_BUNDLE ON MACOSX_BUNDLE_GUI_IDENTIFIER texturec) endif() \ No newline at end of file