From 35a6e91488987e4b1bfbd6935fe57aeccec97b91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kochma=C5=84ski?= Date: Fri, 23 Oct 2015 17:10:38 +0200 Subject: [PATCH] android/example: use ecl shared library Don't statically link with the ECL. Use libecl.so instead. Thanks to that we don't have to link explicitly with each module we want to use and the whole process is simpler. --- examples/android/jni/Android.mk | 21 ++++++---------- examples/android/jni/ecl_boot.c | 25 +++++++++---------- .../src/org/lisp/ecl/EmbeddedCommonLisp.java | 1 + 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/examples/android/jni/Android.mk b/examples/android/jni/Android.mk index 8abb519db..cf718daa1 100644 --- a/examples/android/jni/Android.mk +++ b/examples/android/jni/Android.mk @@ -15,6 +15,11 @@ BASE_PATH := $(call my-dir) include $(CLEAR_VARS) +ECL_HOME := ../ecl-android +LOCAL_MODULE := ecl_lib +LOCAL_PATH := $(BASE_PATH) +LOCAL_SRC_FILES := $(ECL_HOME)/lib/libecl.so +include $(PREBUILT_SHARED_LIBRARY) # ecl_android shared object include $(CLEAR_VARS) @@ -24,22 +29,12 @@ else PLATFORM := android endif -ECL_HOME := ecl-android/ -ECL_VER := $(shell basename $(ECL_HOME)/lib/ecl-* |cut -d "-" -f2) - +ECL_HOME := ecl-android LOCAL_MODULE := ecl_android LOCAL_PATH := $(BASE_PATH) LOCAL_SRC_FILES := org_lisp_ecl_EmbeddedCommonLisp.c ecl_boot.c LOCAL_CFLAGS += -I$(ECL_HOME)/include LOCAL_CFLAGS += -g -Wall -DANDROID -# LOCAL_SHARED_LIBRARIES := ecl -# LOCAL_STATIC_LIBRARIES := asdf sockets ecl-help -LOCAL_LDLIBS := -L$(ECL_HOME)/lib -LOCAL_LDLIBS += -L$(ECL_HOME)/lib/ecl-$(ECL_VER) -LOCAL_LDLIBS += -llog -LOCAL_LDLIBS += -lecl -leclgc -leclatomic -leclgmp -leclffi -LOCAL_LDLIBS += -lasdf -lsockets -lsb-bsd-sockets -lecl-help -lecl-cdb -lserve-event - -# LOCAL_STATIC_LIBRARIES := ecl eclatomic eclffi eclgc eclgmp - +LOCAL_SHARED_LIBRARIES := ecl_lib +LOCAL_LDLIBS += -llog # -lecl include $(BUILD_SHARED_LIBRARY) diff --git a/examples/android/jni/ecl_boot.c b/examples/android/jni/ecl_boot.c index ead376263..1cdf20a30 100644 --- a/examples/android/jni/ecl_boot.c +++ b/examples/android/jni/ecl_boot.c @@ -23,17 +23,15 @@ #define ECL_CPP_TAG #endif -extern ECL_CPP_TAG void init_lib_ASDF(); -extern ECL_CPP_TAG void init_lib_SOCKETS(); -extern ECL_CPP_TAG void init_lib_SB_BSD_SOCKETS(); -extern ECL_CPP_TAG void init_lib_SERVE_EVENT(); -extern ECL_CPP_TAG void init_lib_ECL_CDB(); -extern ECL_CPP_TAG void init_lib_ECL_HELP(); - +/* extern ECL_CPP_TAG void init_lib_ASDF(); */ +/* extern ECL_CPP_TAG void init_lib_SOCKETS(); */ +/* extern ECL_CPP_TAG void init_lib_SB_BSD_SOCKETS(); */ +/* extern ECL_CPP_TAG void init_lib_SERVE_EVENT(); */ +/* extern ECL_CPP_TAG void init_lib_ECL_CDB(); */ +/* extern ECL_CPP_TAG void init_lib_ECL_HELP() */; extern void loadLispFromAssets(char* fn); - int ecl_boot(const char *root_dir) { char *ecl = "ecl"; @@ -68,11 +66,12 @@ int ecl_boot(const char *root_dir) LOGI("installing bytecodes compiler\n"); si_safe_eval(3, c_string_to_object("(si:install-bytecodes-compiler)"), ECL_NIL, OBJNULL); - LOGI("initializing linked modules\n"); - ecl_init_module(NULL, init_lib_ECL_HELP); - ecl_init_module(NULL, init_lib_ASDF); - ecl_init_module(NULL, init_lib_SOCKETS); - ecl_init_module(NULL, init_lib_SERVE_EVENT); + + /* LOGI("initializing linked modules\n"); */ + /* ecl_init_module(NULL, init_lib_ECL_HELP); */ + /* ecl_init_module(NULL, init_lib_ASDF); */ + /* ecl_init_module(NULL, init_lib_SOCKETS); */ + /* ecl_init_module(NULL, init_lib_SERVE_EVENT); */ LOGI("writing some info to stdout\n"); si_safe_eval(3, c_string_to_object("(format t \"ECL_BOOT, features = ~A ~%\" *features*)"), Cnil, OBJNULL); diff --git a/examples/android/src/org/lisp/ecl/EmbeddedCommonLisp.java b/examples/android/src/org/lisp/ecl/EmbeddedCommonLisp.java index b9b1ce31c..924131702 100644 --- a/examples/android/src/org/lisp/ecl/EmbeddedCommonLisp.java +++ b/examples/android/src/org/lisp/ecl/EmbeddedCommonLisp.java @@ -13,6 +13,7 @@ public class EmbeddedCommonLisp { // public native String botExec(String string); static { + System.loadLibrary("ecl"); System.loadLibrary("ecl_android"); Log.w(TAG,"Done loading library"); }