mirror of
https://github.com/kichikuou/xsystem35-sdl2.git
synced 2026-09-22 22:48:08 +03:00
Android: Build rules
This sets up Gradle / CMake rules for Android build.
This commit is contained in:
+5
-2
@@ -1,2 +1,5 @@
|
||||
*~
|
||||
/out
|
||||
out
|
||||
android/.gradle
|
||||
android/app/.externalNativeBuild
|
||||
android/app/build
|
||||
android/build
|
||||
|
||||
+8
-2
@@ -39,6 +39,12 @@ if (EMSCRIPTEN)
|
||||
set(SDL2_FOUND 1)
|
||||
set(FREETYPE_FOUND 1)
|
||||
set(DEFAULT_FONT_PATH .)
|
||||
elseif (ANDROID)
|
||||
set(SDL2_FOUND 1)
|
||||
set(SDL2MIXER_FOUND 1)
|
||||
set(SDL2TTF_FOUND 1)
|
||||
set(DEFAULT_FONT_PATH .)
|
||||
find_library(ndk_zlib z)
|
||||
else()
|
||||
include(TestBigEndian)
|
||||
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
|
||||
@@ -153,7 +159,7 @@ if (EMSCRIPTEN)
|
||||
list(APPEND SRC_MIDI midi.emscripten.c)
|
||||
list(APPEND SUMMARY_MIDI "Emscripten")
|
||||
else()
|
||||
if (HAVE_SIGACTION)
|
||||
if (HAVE_SIGACTION AND NOT ANDROID)
|
||||
list(APPEND SRC_MIDI midi.rawmidi.c midifile.c)
|
||||
list(APPEND SUMMARY_MIDI "raw")
|
||||
set(MIDI_DEVICE "/dev/midi" CACHE STRING "midi device")
|
||||
@@ -182,7 +188,7 @@ endif()
|
||||
|
||||
# Joystick
|
||||
|
||||
if (EMSCRIPTEN)
|
||||
if (EMSCRIPTEN OR ANDROID)
|
||||
set(SRC_JOYSTICK joystick_dmy.c)
|
||||
elseif (SDL2_FOUND)
|
||||
set(SRC_JOYSTICK joystick_sdl.c)
|
||||
|
||||
+13
-13
@@ -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 {
|
||||
// xsystem35 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]
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.6)
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
project(GAME)
|
||||
|
||||
@@ -6,15 +6,44 @@ 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
|
||||
)
|
||||
# TODO: Use SDL2_mixer 2.0.5 once released
|
||||
FetchContent_Declare(
|
||||
SDL_mixer
|
||||
URL https://hg.libsdl.org/SDL_mixer/archive/d2686bcfcba2.tar.gz # rev 1127
|
||||
URL_HASH SHA1=4e62e29bd5628b262b3ffb6d5d29861c76a1500e
|
||||
)
|
||||
|
||||
# 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()
|
||||
FetchContent_GetProperties(SDL_mixer)
|
||||
if(NOT sdl_mixer_POPULATED)
|
||||
FetchContent_Populate(SDL_mixer)
|
||||
add_subdirectory(${sdl_mixer_SOURCE_DIR} ${sdl_mixer_BINARY_DIR})
|
||||
# TODO: Fix this in upstream
|
||||
target_include_directories(SDL2_mixer PUBLIC ${sdl_mixer_SOURCE_DIR}/include)
|
||||
endif()
|
||||
|
||||
# The main CMakeLists.txt of xsystem35
|
||||
add_subdirectory(../../.. xsystem35)
|
||||
|
||||
+11
-3
@@ -7,7 +7,11 @@ if (ENABLE_MODULES)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_executable(xsystem35)
|
||||
if (ANDROID)
|
||||
add_library(xsystem35 SHARED)
|
||||
else()
|
||||
add_executable(xsystem35)
|
||||
endif()
|
||||
|
||||
target_compile_options(xsystem35 PRIVATE -Wno-pointer-sign -Wno-invalid-source-encoding)
|
||||
|
||||
@@ -79,7 +83,11 @@ if (EMSCRIPTEN)
|
||||
"SHELL:-s EXPORTED_FUNCTIONS=\"['_main','_ags_setAntialiasedStringMode', '_ald_getdata', '_ald_freedata']\""
|
||||
"SHELL:-s EXTRA_EXPORTED_RUNTIME_METHODS=\"['getValue','getMemory','addRunDependency','removeRunDependency']\"")
|
||||
|
||||
else() # non-emscripten
|
||||
elseif (ANDROID)
|
||||
|
||||
target_link_libraries(xsystem35 PRIVATE SDL2 SDL2_ttf SDL2_mixer ${ndk_zlib})
|
||||
|
||||
else() # non-emscripten, non-android
|
||||
target_link_libraries(xsystem35 PRIVATE m ZLIB::ZLIB)
|
||||
if (X11_FOUND)
|
||||
target_include_directories(xsystem35 PRIVATE ${X11_INCLUDE_DIR})
|
||||
@@ -108,7 +116,7 @@ else() # non-emscripten
|
||||
endif()
|
||||
|
||||
# FIXME: set up dependency for xsystem35 on this
|
||||
if (ENABLE_SDL AND NOT EMSCRIPTEN)
|
||||
if (ENABLE_SDL AND NOT EMSCRIPTEN AND NOT ANDROID)
|
||||
add_custom_target(sdl_input.c
|
||||
COMMAND perl xsyskey.pl ${SDL2_INCLUDE_DIRS} > sdl_input.c
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
@@ -41,6 +41,10 @@
|
||||
# include <gtk/gtk.h>
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_SDL
|
||||
# include <SDL.h>
|
||||
#endif
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
#include <emscripten.h>
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user