forked from Green-Sky/tomato
move cmake stuff to android subdir
This commit is contained in:
parent
ef4e0d0857
commit
9d6404d130
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -84,7 +84,7 @@ jobs:
|
|||||||
name: ${{ github.event.repository.name }}-android-arm64
|
name: ${{ github.event.repository.name }}-android-arm64
|
||||||
# TODO: do propper packing
|
# TODO: do propper packing
|
||||||
path: |
|
path: |
|
||||||
${{github.workspace}}/build/tomato.apk
|
${{github.workspace}}/build/android/tomato.apk
|
||||||
|
|
||||||
macos:
|
macos:
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
|
@ -74,100 +74,6 @@ add_subdirectory(./src)
|
|||||||
if (ANDROID AND TARGET SDL3::Jar)
|
if (ANDROID AND TARGET SDL3::Jar)
|
||||||
message("II building for ANDROID!!!")
|
message("II building for ANDROID!!!")
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${SDL3_SOURCE_DIR}/cmake/android")
|
add_subdirectory(android)
|
||||||
|
|
||||||
# here be dragons
|
|
||||||
|
|
||||||
find_package(SdlAndroid MODULE)
|
|
||||||
find_package(Java)
|
|
||||||
find_package(SdlAndroidPlatform MODULE)
|
|
||||||
# the existence of SDL3::Jar usually implies platform
|
|
||||||
if(SdlAndroid_FOUND)
|
|
||||||
include(SdlAndroidFunctions)
|
|
||||||
sdl_create_android_debug_keystore(tomato-debug-keystore)
|
|
||||||
sdl_android_compile_resources(tomato-resources RESFOLDER android/app/res)
|
|
||||||
|
|
||||||
|
|
||||||
set(ANDROID_MANIFEST_PACKAGE "org.libsdl.app.tomato")
|
|
||||||
#set(generated_manifest_path "${CMAKE_CURRENT_BINARY_DIR}/android/${TEST}-src/AndroidManifest.xml")
|
|
||||||
string(REPLACE "." "/" JAVA_PACKAGE_DIR "${ANDROID_MANIFEST_PACKAGE}")
|
|
||||||
#set(GENERATED_SRC_FOLDER "${CMAKE_CURRENT_BINARY_DIR}/android/${TEST}-src")
|
|
||||||
#set(GENERATED_RES_FOLDER "${GENERATED_SRC_FOLDER}/res")
|
|
||||||
#set(JAVA_PACKAGE_DIR "${GENERATED_SRC_FOLDER}/${JAVA_PACKAGE_DIR}")
|
|
||||||
set(JAVA_PACKAGE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android/app/java/${JAVA_PACKAGE_DIR}")
|
|
||||||
|
|
||||||
sdl_android_link_resources(tomato-apk-linked
|
|
||||||
MANIFEST "android/app/AndroidManifest.xml"
|
|
||||||
PACKAGE ${ANDROID_MANIFEST_PACKAGE}
|
|
||||||
RES_TARGETS tomato-resources
|
|
||||||
TARGET_SDK_VERSION 31
|
|
||||||
)
|
|
||||||
|
|
||||||
set(CMAKE_JAVA_COMPILE_FLAGS "-encoding;utf-8")
|
|
||||||
set(classes_path "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/tomato-java.dir/classes")
|
|
||||||
# Some CMake versions have a slow `cmake -E make_directory` implementation
|
|
||||||
if(NOT IS_DIRECTORY "${classes_path}")
|
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${classes_path}")
|
|
||||||
endif()
|
|
||||||
set(OUT_JAR "${CMAKE_CURRENT_BINARY_DIR}/tomato.jar")
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT "${OUT_JAR}"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E rm -rf "${classes_path}"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${classes_path}"
|
|
||||||
COMMAND ${Java_JAVAC_EXECUTABLE}
|
|
||||||
-source 1.8 -target 1.8
|
|
||||||
-bootclasspath "$<TARGET_PROPERTY:SDL3::Jar,JAR_FILE>"
|
|
||||||
"${JAVA_PACKAGE_DIR}/TomatoActivity.java"
|
|
||||||
$<TARGET_PROPERTY:tomato-apk-linked,JAVA_R>
|
|
||||||
-cp "$<TARGET_PROPERTY:SDL3::Jar,JAR_FILE>:${SDL_ANDROID_PLATFORM_ANDROID_JAR}"
|
|
||||||
-d "${classes_path}"
|
|
||||||
COMMAND ${Java_JAR_EXECUTABLE} cf "${OUT_JAR}" -C "${classes_path}" .
|
|
||||||
DEPENDS $<TARGET_PROPERTY:tomato-apk-linked,OUTPUTS> "$<TARGET_PROPERTY:SDL3::Jar,JAR_FILE>"
|
|
||||||
)
|
|
||||||
add_custom_target(tomato-jar DEPENDS "${OUT_JAR}")
|
|
||||||
add_dependencies(tomato-jar SDL3::Jar) # HACK: somehow their jar is not registered as an output
|
|
||||||
set_property(TARGET tomato-jar PROPERTY OUTPUT "${OUT_JAR}")
|
|
||||||
|
|
||||||
set(dexworkdir "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/tomato-dex.dir")
|
|
||||||
# Some CMake versions have a slow `cmake -E make_directory` implementation
|
|
||||||
if(NOT IS_DIRECTORY "${dexworkdir}")
|
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E make_directory "${dexworkdir}")
|
|
||||||
endif()
|
|
||||||
set(classes_dex_base_name "classes.dex")
|
|
||||||
set(classes_dex "${dexworkdir}/${classes_dex_base_name}")
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT "${classes_dex}"
|
|
||||||
COMMAND SdlAndroid::d8
|
|
||||||
$<TARGET_PROPERTY:tomato-jar,OUTPUT>
|
|
||||||
$<TARGET_PROPERTY:SDL3::Jar,JAR_FILE>
|
|
||||||
--lib "${SDL_ANDROID_PLATFORM_ANDROID_JAR}"
|
|
||||||
--output "${dexworkdir}"
|
|
||||||
DEPENDS $<TARGET_PROPERTY:tomato-jar,OUTPUT> $<TARGET_PROPERTY:SDL3::Jar,JAR_FILE>
|
|
||||||
)
|
|
||||||
add_custom_target(tomato-dex DEPENDS "${classes_dex}")
|
|
||||||
set_property(TARGET tomato-dex PROPERTY OUTPUT "${classes_dex}")
|
|
||||||
set_property(TARGET tomato-dex PROPERTY OUTPUT_BASE_NAME "${classes_dex_base_name}")
|
|
||||||
|
|
||||||
# file(GLOB RESOURCE_FILES *.bmp *.wav *.hex moose.dat utf8.txt)
|
|
||||||
|
|
||||||
sdl_add_to_apk_unaligned(tomato-unaligned-apk
|
|
||||||
APK_IN tomato-apk-linked
|
|
||||||
OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/intermediates"
|
|
||||||
#ASSETS ${RESOURCE_FILES}
|
|
||||||
#NATIVE_LIBS SDL3::SDL3-shared tomato
|
|
||||||
NATIVE_LIBS tomato
|
|
||||||
DEX tomato-dex
|
|
||||||
)
|
|
||||||
|
|
||||||
sdl_apk_align(tomato-aligned-apk tomato-unaligned-apk
|
|
||||||
OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/intermediates"
|
|
||||||
)
|
|
||||||
sdl_apk_sign(tomato-apk tomato-aligned-apk
|
|
||||||
KEYSTORE tomato-debug-keystore
|
|
||||||
)
|
|
||||||
|
|
||||||
else()
|
|
||||||
message("FF SdlAndroid module not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
100
android/CMakeLists.txt
Normal file
100
android/CMakeLists.txt
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.14...3.24 FATAL_ERROR)
|
||||||
|
|
||||||
|
project(tomato_android)
|
||||||
|
|
||||||
|
# here be dragons
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${SDL3_SOURCE_DIR}/cmake/android")
|
||||||
|
|
||||||
|
find_package(SdlAndroid MODULE)
|
||||||
|
find_package(Java)
|
||||||
|
find_package(SdlAndroidPlatform MODULE)
|
||||||
|
# the existence of SDL3::Jar usually implies platform
|
||||||
|
if(SdlAndroid_FOUND)
|
||||||
|
include(SdlAndroidFunctions)
|
||||||
|
sdl_create_android_debug_keystore(tomato-debug-keystore)
|
||||||
|
sdl_android_compile_resources(tomato-resources RESFOLDER app/res)
|
||||||
|
|
||||||
|
|
||||||
|
set(ANDROID_MANIFEST_PACKAGE "org.libsdl.app.tomato")
|
||||||
|
#set(generated_manifest_path "${CMAKE_CURRENT_BINARY_DIR}/android/${TEST}-src/AndroidManifest.xml")
|
||||||
|
string(REPLACE "." "/" JAVA_PACKAGE_DIR "${ANDROID_MANIFEST_PACKAGE}")
|
||||||
|
#set(GENERATED_SRC_FOLDER "${CMAKE_CURRENT_BINARY_DIR}/android/${TEST}-src")
|
||||||
|
#set(GENERATED_RES_FOLDER "${GENERATED_SRC_FOLDER}/res")
|
||||||
|
#set(JAVA_PACKAGE_DIR "${GENERATED_SRC_FOLDER}/${JAVA_PACKAGE_DIR}")
|
||||||
|
set(JAVA_PACKAGE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/app/java/${JAVA_PACKAGE_DIR}")
|
||||||
|
|
||||||
|
sdl_android_link_resources(tomato-apk-linked
|
||||||
|
MANIFEST "app/AndroidManifest.xml"
|
||||||
|
PACKAGE ${ANDROID_MANIFEST_PACKAGE}
|
||||||
|
RES_TARGETS tomato-resources
|
||||||
|
TARGET_SDK_VERSION 31
|
||||||
|
)
|
||||||
|
|
||||||
|
set(CMAKE_JAVA_COMPILE_FLAGS "-encoding;utf-8")
|
||||||
|
set(classes_path "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/tomato-java.dir/classes")
|
||||||
|
# Some CMake versions have a slow `cmake -E make_directory` implementation
|
||||||
|
if(NOT IS_DIRECTORY "${classes_path}")
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${classes_path}")
|
||||||
|
endif()
|
||||||
|
set(OUT_JAR "${CMAKE_CURRENT_BINARY_DIR}/tomato.jar")
|
||||||
|
# TODO: convert to cmake's add_jar
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT "${OUT_JAR}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E rm -rf "${classes_path}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory "${classes_path}"
|
||||||
|
COMMAND ${Java_JAVAC_EXECUTABLE}
|
||||||
|
-source 1.8 -target 1.8
|
||||||
|
-bootclasspath "$<TARGET_PROPERTY:SDL3::Jar,JAR_FILE>"
|
||||||
|
"${JAVA_PACKAGE_DIR}/TomatoActivity.java"
|
||||||
|
$<TARGET_PROPERTY:tomato-apk-linked,JAVA_R>
|
||||||
|
-cp "$<TARGET_PROPERTY:SDL3::Jar,JAR_FILE>:${SDL_ANDROID_PLATFORM_ANDROID_JAR}"
|
||||||
|
-d "${classes_path}"
|
||||||
|
COMMAND ${Java_JAR_EXECUTABLE} cf "${OUT_JAR}" -C "${classes_path}" .
|
||||||
|
DEPENDS $<TARGET_PROPERTY:tomato-apk-linked,OUTPUTS> "$<TARGET_PROPERTY:SDL3::Jar,JAR_FILE>"
|
||||||
|
)
|
||||||
|
add_custom_target(tomato-jar DEPENDS "${OUT_JAR}")
|
||||||
|
add_dependencies(tomato-jar SDL3::Jar) # HACK: somehow their jar is not registered as an output
|
||||||
|
set_property(TARGET tomato-jar PROPERTY OUTPUT "${OUT_JAR}")
|
||||||
|
|
||||||
|
set(dexworkdir "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/tomato-dex.dir")
|
||||||
|
# Some CMake versions have a slow `cmake -E make_directory` implementation
|
||||||
|
if(NOT IS_DIRECTORY "${dexworkdir}")
|
||||||
|
execute_process(COMMAND "${CMAKE_COMMAND}" -E make_directory "${dexworkdir}")
|
||||||
|
endif()
|
||||||
|
set(classes_dex_base_name "classes.dex")
|
||||||
|
set(classes_dex "${dexworkdir}/${classes_dex_base_name}")
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT "${classes_dex}"
|
||||||
|
COMMAND SdlAndroid::d8
|
||||||
|
$<TARGET_PROPERTY:tomato-jar,OUTPUT>
|
||||||
|
$<TARGET_PROPERTY:SDL3::Jar,JAR_FILE>
|
||||||
|
--lib "${SDL_ANDROID_PLATFORM_ANDROID_JAR}"
|
||||||
|
--output "${dexworkdir}"
|
||||||
|
DEPENDS $<TARGET_PROPERTY:tomato-jar,OUTPUT> $<TARGET_PROPERTY:SDL3::Jar,JAR_FILE>
|
||||||
|
)
|
||||||
|
add_custom_target(tomato-dex DEPENDS "${classes_dex}")
|
||||||
|
set_property(TARGET tomato-dex PROPERTY OUTPUT "${classes_dex}")
|
||||||
|
set_property(TARGET tomato-dex PROPERTY OUTPUT_BASE_NAME "${classes_dex_base_name}")
|
||||||
|
|
||||||
|
# file(GLOB RESOURCE_FILES *.bmp *.wav *.hex moose.dat utf8.txt)
|
||||||
|
|
||||||
|
sdl_add_to_apk_unaligned(tomato-unaligned-apk
|
||||||
|
APK_IN tomato-apk-linked
|
||||||
|
OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/intermediates"
|
||||||
|
#ASSETS ${RESOURCE_FILES}
|
||||||
|
#NATIVE_LIBS SDL3::SDL3-shared tomato
|
||||||
|
NATIVE_LIBS tomato
|
||||||
|
DEX tomato-dex
|
||||||
|
)
|
||||||
|
|
||||||
|
sdl_apk_align(tomato-aligned-apk tomato-unaligned-apk
|
||||||
|
OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/intermediates"
|
||||||
|
)
|
||||||
|
sdl_apk_sign(tomato-apk tomato-aligned-apk
|
||||||
|
KEYSTORE tomato-debug-keystore
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
message("EE SdlAndroid module not found")
|
||||||
|
endif()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user