ecl-android

ecl-android

ECL Android Integration

Name Last Update
.settings Loading commit data...
assets/lisp/etc Loading commit data...
jni Loading commit data...
res Loading commit data...
src/org/lisp/ecl Loading commit data...
.gitignore Loading commit data...
.project Loading commit data...
AndroidManifest.xml Loading commit data...
LICENSE Loading commit data...
README.org Loading commit data...
ant.properties Loading commit data...
build.xml Loading commit data...
proguard-project.txt Loading commit data...
project.properties Loading commit data...

Status [v. 0.0.2]

Features

  • Full Common Lisp REPL via SWANK
  • Networking
  • ASDF
  • Quicklisp (use function #’get-quicklisp to replace slow bytecompiled gunzip with a precompiled one)
  • Basic EVAL from menu (no debugger nor variables * ** ***)
  • Can read precompiled modules from FAS and SO files

Issues

  • Swank happens to disconnect sometimes
  • Lack of libssl.so causes cl+ssl fail to load
  • bytecmp produces slower code then gcc
  • Android service serving ECL might be more roboust
  • No true toplevel (only swank)

Planned

  • Write documentation covering internals and API for the other applications
  • Add convenient framework for precompilation and templates for android-studio
  • Add in-app framework for managing modules via touch (graphical QL client?)
  • Integration with SL4A
  • Adding proper ADSF configuration file

Building

The following instructions are just a base for the future draft. Instructions how to build ECL library are covered in its INSTALL file.

You need to set your PATH so it contains android binary (from android-sdk) and ndk-build (android-ndk). For instance:

export PATH=/opt/android-sdk/platform-tools:/opt/android-ndk-r9b/:$PATH

Now you can build our application:

# update the project (sets sdk path and the other android "magic")
android update project -t android-10 -p .
# create symlinks (sets ECL directories). For instance:
ln -s /usr/local/ecl-android ecl-android
ln -s ecl-android/lib/ecl-16.1.0 ecl-libdir
# build the shared objects
ndk-build
# customize the assets directory (etc/user.lisp and home/)
# build and install the application
ant debug install

Footnotes

[fn:1] If your host platform is darwin, then the host compiler should be built with the Apple’s GCC (not the GCC from Macports). Using the MacPort command:

sudo port select --set gcc none

Hint provided by Pascal J. Bourguignon.