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.
This commit is contained in:
Daniel Kochmański 2015-10-23 17:10:38 +02:00
parent 7feed6c6f4
commit 35a6e91488
3 changed files with 21 additions and 26 deletions

View file

@ -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)

View file

@ -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);

View file

@ -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");
}