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:
parent
7feed6c6f4
commit
35a6e91488
3 changed files with 21 additions and 26 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue