[Openmcl-devel] running on android

Gary Byers gb at clozure.com
Tue Sep 13 00:02:12 PDT 2011

There hasn't been any work done on the Android port since around the first
of the year.

AFAIK, it's not going to run in the Android Emulator, which emulates an ARMv5
(or did the last time that I checked, which I admit was quite a while ago.)
CCL on the ARM requires an ARMv7.  It tries to check for this on startup,
but (a) that check is possibly more recent than the the Android binaries and
(b) it's entirely possible that ARMv7-specific code runs before this check
is performed. (a) is actually pretty likely, now that I think of it.

My best guess/recollection is that the binaries in svn worked on the handful
of Android devices that I have here.  It requires 2.2 or later (for a fairly
obscure reason that I don't remember.)

I worked on it for a little while after those binaries were committed; those
changes are in the trunk (and probably 1.7) source, but I didn't commit
new binaries.  One change involved making the kernel into a shared library
("aarmcl.so"); "aarmcl" is a tiny C program that loads that library and calls
into it to load the image and get things started.  The general idea is that
a Java program would want to do essentially the same thing (in part; the details
would be different.)  That proof of concept ("it looks like Java and CCL could
stay out of each other's way") is about as far as I got towards integrating
Java and CCL on Android.  In 2.3 and later, a lot of the Android application-level
stuff is exposed to native code; there'd just need to be a little Java stub
to load that native code.  It's likely that there'd still need to be a lot
of interoperability between that native code and Java, and this would likely
involve the JNI (or whatever part of the JNI Android bothers to implement.)

The command-line CCL runs (in a terminal window or via "adb shell") on my phone.
A version bootstrapped on a Mac or Linux box could compile itself on the device
and seemed to run well.  (There have been a lot of improvements to the ARM CCL
port in the last several months, so that probably means "... run as well as it
did on ARM Linux.")  Cross-compiling (for the sake of bootstrapping) isn't any
more painful than it is for other platforms; I found transferring files via
"adb push" to be error-prone and awkward, and started to look into other ways
of doing that.

There's a lot of work to be done to actually turn CCL on Android into
something more fully usable (to make it a real Android application
capable of being used to develop real Android applications.)  Unless
having that work done is commercially important to someone somewhere,
it's likely that that work will just be done as a spare time project.

It's probably worth trying to put some (relatively small) amount of
spare-time effort into making it a little easier to build (to automate
cross compilation and the error-prone distribution process) and to try
to ensure that the stuff that's there is more up-to-date.  I'm not
really sure how interesting it is in its current state, but if its current
state was more actively maintained than it has been it'd probably look

On Mon, 12 Sep 2011, Brian Kropf wrote:

> --===============7148557641080560318==
> Content-Type: multipart/alternative; boundary=bcaec531507345b77504acc8166b
> --bcaec531507345b77504acc8166b
> Content-Type: text/plain; charset=ISO-8859-1
> I noticed that there is an android branch of ccl, is this branch functional?
>  Is there any instructions on building / running on android?  I've been
> looking for a decent common lisp for android for months now.
> My naive attempt failed miserably (segfault):
> 1. check out androidarm trunk
> 2. start emulator (android 2.2)
> 3. copy aarmcl and aarmcl.image to /data/tmp
> 4. chmod both files with 0777
> 5. attempt to start aarmcl, get segfault
> tx,
> -brian
> --bcaec531507345b77504acc8166b
> Content-Type: text/html; charset=ISO-8859-1
> Content-Transfer-Encoding: quoted-printable
> I noticed that there is an android branch of ccl, is this branch functional=
> ? =A0Is there any instructions on building / running on android? =A0I'v=
> e been looking for a decent common lisp for android for months now.<div><br=
> >
> </div><div>My naive attempt failed miserably (segfault):</div><div>1. check=
>  out androidarm trunk</div><div>2. start emulator (android 2.2)</div><div>3=
> . copy aarmcl and aarmcl.image to /data/tmp</div><div>4. chmod both files w=
> ith 0777</div>
> <div>5. attempt to start aarmcl, get segfault</div><div><br></div><div>tx,<=
> /div><div>-brian</div>
> --bcaec531507345b77504acc8166b--
> --===============7148557641080560318==
> Content-Type: text/plain; charset="us-ascii"
> MIME-Version: 1.0
> Content-Transfer-Encoding: 7bit
> Content-Disposition: inline
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
> --===============7148557641080560318==--

More information about the Openmcl-devel mailing list