summaryrefslogtreecommitdiff
path: root/android/jni
diff options
context:
space:
mode:
authorLassi Pulkkinen <lassi@pulk.fi>2024-10-31 03:11:21 +0200
committerLassi Pulkkinen <lassi@pulk.fi>2024-10-31 03:51:35 +0200
commitae44478b30d890fe0fb04022f44d474dcdcc3f9d (patch)
tree5f462459ae4b47d22114eed717d1382d08cf4dfe /android/jni
Initial commit (import old repo)HEADmain
Diffstat (limited to 'android/jni')
-rw-r--r--android/jni/CMakeLists.txt35
-rwxr-xr-xandroid/jni/as11
-rw-r--r--android/jni/dummy.c1
-rw-r--r--android/jni/main.c7
4 files changed, 54 insertions, 0 deletions
diff --git a/android/jni/CMakeLists.txt b/android/jni/CMakeLists.txt
new file mode 100644
index 0000000..e291b2d
--- /dev/null
+++ b/android/jni/CMakeLists.txt
@@ -0,0 +1,35 @@
+cmake_minimum_required(VERSION 3.6)
+
+project(HACRAFT)
+
+add_subdirectory(${SDL_ROOT} SDL)
+
+if(${ANDROID_ABI} STREQUAL arm64-v8a)
+ set(HARE_TARGET aarch64)
+elseif(${ANDROID_ABI} STREQUAL x86_64)
+ set(HARE_TARGET x86_64)
+endif()
+
+set(LIBMAIN_SO ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libmain.so)
+
+add_custom_target(compile_main
+ CC=${CMAKE_C_COMPILER} AS=${CMAKE_CURRENT_SOURCE_DIR}/as
+ LDFLAGS=--target=${CMAKE_C_COMPILER_TARGET}\ -shared\ ${CMAKE_CURRENT_SOURCE_DIR}/main.c
+ ASFLAGS=${CMAKE_C_COMPILER}\ ${CMAKE_C_COMPILER_TARGET}
+ HARECACHE=${CMAKE_CURRENT_BINARY_DIR}/hare
+ hare build -a ${HARE_TARGET} -T +android
+ -L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
+ -o ${LIBMAIN_SO}
+ -lc -lSDL2 -v
+ DEPENDS SDL2
+ BYPRODUCTS ${LIBMAIN_SO}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../..
+ USES_TERMINAL)
+
+add_library(main SHARED IMPORTED GLOBAL)
+set_target_properties(main PROPERTIES IMPORTED_LOCATION ${LIBMAIN_SO})
+add_dependencies(main compile_main)
+
+add_library(dummy SHARED)
+target_sources(dummy PRIVATE dummy.c)
+target_link_libraries(dummy main)
diff --git a/android/jni/as b/android/jni/as
new file mode 100755
index 0000000..00963ee
--- /dev/null
+++ b/android/jni/as
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+cc="$1"
+target="$2"
+out="$4"
+shift 4
+(
+ for f in "$@"; do
+ cat "$f"
+ done
+) | "$cc" --target="$target" -c -o "$out" -x assembler -
diff --git a/android/jni/dummy.c b/android/jni/dummy.c
new file mode 100644
index 0000000..698ef4b
--- /dev/null
+++ b/android/jni/dummy.c
@@ -0,0 +1 @@
+/* nothing to C here */
diff --git a/android/jni/main.c b/android/jni/main.c
new file mode 100644
index 0000000..606ef7f
--- /dev/null
+++ b/android/jni/main.c
@@ -0,0 +1,7 @@
+void android_main();
+
+int
+SDL_main(int argc, char **argv) {
+ android_main();
+ return 0;
+}