ecl-android

ecl-android

ECL Android Integration

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.