From 383fe4aec67694761a179dafdac19fa5a760ee50 Mon Sep 17 00:00:00 2001 From: Miku AuahDark Date: Mon, 1 Nov 2021 17:50:36 +0800 Subject: [PATCH] Initial modular 3rd-party C libs system. --- love/build.gradle | 35 +++++++++++++++++++ love/src/jni/lua-modules/Android.mk | 1 + .../jni/lua-modules/lua-modules-readme.txt | 8 +++++ 3 files changed, 44 insertions(+) create mode 100644 love/src/jni/lua-modules/Android.mk create mode 100644 love/src/jni/lua-modules/lua-modules-readme.txt diff --git a/love/build.gradle b/love/build.gradle index 7e20f514..6dd096e4 100644 --- a/love/build.gradle +++ b/love/build.gradle @@ -28,6 +28,40 @@ android { } targetSdkVersion 30 } + + def retrieveAll3pModules = { -> + def modules = [] + + fileTree("src/jni/lua-modules").visit { FileVisitDetails details -> + if (details.isDirectory()) { + if (file(details.file.path + "/Android.mk").exists()) { + logger.lifecycle("3rd-party module: " + details.file.path) + + def javainfo = file(details.file.path + "/java.txt") + if (javainfo.exists()) { + def fstream = new FileInputStream(javainfo) + def infile = new BufferedReader(new InputStreamReader(fstream)) + def javapath = infile.readLine().replace("\\", "/") + def mpath = null + + if (javapath[0] != '/') { + mpath = details.file.path + "/" + javapath + } else { + mpath = details.file.path + javapath + } + + modules << mpath + + logger.lifecycle("Registered path " + mpath) + infile.close() + } + } + } + } + + return modules + } + buildTypes { release { minifyEnabled true @@ -57,6 +91,7 @@ android { java { srcDir 'src/jni/SDL2/android-project/app/src/main/java' srcDir 'src/main/java' + srcDirs += retrieveAll3pModules() } } playstore { diff --git a/love/src/jni/lua-modules/Android.mk b/love/src/jni/lua-modules/Android.mk new file mode 100644 index 00000000..5053e7d6 --- /dev/null +++ b/love/src/jni/lua-modules/Android.mk @@ -0,0 +1 @@ +include $(call all-subdir-makefiles) diff --git a/love/src/jni/lua-modules/lua-modules-readme.txt b/love/src/jni/lua-modules/lua-modules-readme.txt new file mode 100644 index 00000000..8e9925fa --- /dev/null +++ b/love/src/jni/lua-modules/lua-modules-readme.txt @@ -0,0 +1,8 @@ +This folder should contain external Lua C modules that will be shipped along with LOVE. One for each folder + +Each folder must contains: +* Android.mk describing how to build the external Lua C module. + The LOCAL_MODULE_FILENAME must be set accordingly as ndk-build appends "lib" prefix from LOCAL_MODULE by default. +* If your module interacts with Java-side, a file java.txt must contain where it should look Java source files. + Example, if you have src/java/your/package/name/MyFile.java, then you need to write "src/java" in java.txt. + If this file is absent, then your Java-side code will not be compiled along.