Android: Build rules

This sets up Gradle / CMake rules for Android build.
This commit is contained in:
kichikuou
2019-12-31 11:30:09 +09:00
parent 5d38f0c4e9
commit d38c946fd7
4 changed files with 55 additions and 26 deletions
+4
View File
@@ -0,0 +1,4 @@
out
android/.gradle
android/app/.externalNativeBuild
android/app/build
+13 -13
View File
@@ -18,15 +18,11 @@ android {
versionCode 1
versionName "1.0"
externalNativeBuild {
ndkBuild {
arguments "APP_PLATFORM=android-16"
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
cmake {
arguments "-DANDROID_APP_PLATFORM=android-16", "-DANDROID_STL=c++_static"
// abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
abiFilters 'arm64-v8a'
}
// cmake {
// arguments "-DANDROID_APP_PLATFORM=android-16", "-DANDROID_STL=c++_static"
// // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
// abiFilters 'arm64-v8a'
// }
}
}
buildTypes {
@@ -40,12 +36,12 @@ android {
jniLibs.srcDir 'libs'
}
externalNativeBuild {
ndkBuild {
path 'jni/Android.mk'
cmake {
// system3 requires CMake >=3.13, so SDK-bundled CMake
// (3.6 or 3.10.2) cannot be used.
version getInstalledCmakeVersion()
path 'jni/CMakeLists.txt'
}
// cmake {
// path 'jni/CMakeLists.txt'
// }
}
}
@@ -69,3 +65,7 @@ android {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
}
String getInstalledCmakeVersion() {
('cmake --version'.execute().text =~ /cmake version ([0-9.]+)/)[0][1]
}
+27 -11
View File
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.6)
cmake_minimum_required(VERSION 3.13)
project(GAME)
@@ -6,15 +6,31 @@ project(GAME)
# include(AndroidNdkModules)
# android_ndk_import_module_cpufeatures()
include(FetchContent)
# TODO: Use SDL2 2.0.11 once released
FetchContent_Declare(
SDL
URL https://hg.libsdl.org/SDL/archive/a5f93b21dfe0.tar.gz # rev 13383
URL_HASH SHA1=a7e9696f7ef8af7c4b89671b096c38d1a4cbf90c
)
# TODO: Use SDL2_ttf 2.0.16 once released
FetchContent_Declare(
SDL_ttf
URL https://hg.libsdl.org/SDL_ttf/archive/d56d67db41d8.tar.gz # rev 420
URL_HASH SHA1=143089a2b2973a5baeee0914af43608cfe8e1d87
)
# SDL sources are in a subfolder named "SDL"
add_subdirectory(SDL)
# Compilation of companion libraries
#add_subdirectory(SDL_image)
#add_subdirectory(SDL_mixer)
#add_subdirectory(SDL_ttf)
# Your game and its CMakeLists.txt are in a subfolder named "src"
add_subdirectory(src)
# Compilation of SDL and companion libraries
FetchContent_GetProperties(SDL)
if(NOT sdl_POPULATED)
FetchContent_Populate(SDL)
add_subdirectory(${sdl_SOURCE_DIR} ${sdl_BINARY_DIR})
endif()
FetchContent_GetProperties(SDL_ttf)
if(NOT sdl_ttf_POPULATED)
FetchContent_Populate(SDL_ttf)
add_subdirectory(${sdl_ttf_SOURCE_DIR} ${sdl_ttf_BINARY_DIR})
endif()
# The main CMakeLists.txt of system3
add_subdirectory(../../../src src)
+11 -2
View File
@@ -59,12 +59,21 @@ target_compile_definitions(common INTERFACE
target_include_directories(common INTERFACE . sys)
target_sources(common INTERFACE ${SRC_COMMON} ${SRC_PLATFORM} ${SRC_MAKO})
add_executable(system3)
if (ANDROID)
add_library(system3 SHARED)
else()
add_executable(system3)
endif()
target_sources(system3 PRIVATE sys/nact_sys3.cpp ${RES3} sys/ags_bmp.cpp sys/ags_pms.cpp)
target_compile_definitions(system3 PRIVATE _SYSTEM3)
target_link_libraries(system3 PRIVATE common)
if (NOT EMSCRIPTEN)
if (ANDROID)
target_link_libraries(system3 PRIVATE SDL2 SDL2_ttf)
elseif (NOT EMSCRIPTEN)
add_executable(system1)
target_sources(system1 PRIVATE sys/nact_sys1.cpp ${RES1} sys/ags_gl3.cpp sys/ags_gm3.cpp sys/ags_vsp2l.cpp)