[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] Playing with build utilities for Android

From: Kristian Lein-Mathisen
Subject: Re: [Chicken-users] Playing with build utilities for Android
Date: Fri, 3 Jan 2014 12:50:41 +0100

Thanks for your feedback, Peter.

On Fri, Jan 3, 2014 at 8:30 AM, Peter Bex <address@hidden> wrote:
On Fri, Jan 03, 2014 at 01:44:41AM +0100, Kristian Lein-Mathisen wrote:
> Hi folks,
> and happy new year to all!
> I have been playing around with some simple build utilities to get Chicken
> onto my Android phone (again!).

Hello Kristian,

Very cool!  Thanks for your continued work in this area.  Hopefuly we
can get a *convenient* Android build from all this.

Yes, it'd be great to have end up with a simple 3-step guide to get something up and running. I was able to run the official SDL2 android app with this. But since I am missing bindings for opengl-es and sdl2, I can't do much besides exiting the app "interactively". But I'm still excited about that repl in the otherwise empty game-loop.

> The fine work <> by Bevuta
> allows us to build a cross-chicken which can cross-compile eggs and the
> Chicken runtime.

But it's not a true cross-compiler, is it?  As I understood it, the
Android Makefile from Bevuta just cross-compiles CHICKEN itself,
completely, rather than providing a working csc on the host platform
which generates executables for the target platform.

If I understand your definition of true cross-compiler, then it is exactly what Bevuta gaves us: An android-csc and android-chicken-install which will compile scheme files and eggs for both the host (like x86) and the target (like arm). So getting eggs into your app is pretty easy, provided that your egg doesn't have native dependencies or something else that android-linux-armeabi doesn't like. I have successfully installed:

acorn     bitstring channel   clojurian
comparse  coops     glm       intarweb   irregex
json      lazy-seq  matchable medea      miscmacros
sendfile  spiffy    trie      uri-common uri-generic

But I haven't tried to produce an extensive list.

> This is great, but I always spend a lot of time going from
> there to getting a Chicken ecosystem running on my app, with eggs and a
> repl. So I've played around with automating parts of that and integrating
> it with ndk-build.

I was hoping someone would do something like that.  It's the natural
next step, and would simplify building for all these stupid different
supported architectures.

Yes, but note that I haven't gotten around to that yet. It's just "armeabi" for now, and we'll need 1 cross-chicken per such platform which isn't great. So this still requires (probably many) manual steps.

> What I've accomplished so far is basically fewer manual steps when starting
> a new Chicken app:
> - autodetect package name and android platform when building cross-chicken
> (no config-file editing which I always get wrong)
> - provide an ndk module for chicken that your jni/main.c can depend on
> - make the eggs and unit survive through installation (harder than you
> think!)

Have you considered simply filing a bugreport for the Android NDK?
I think the requirement that all .so files must be prefixed with 'lib'
is pretty bogus.  Hopefully if they do fix it this will be on the NDK
side, and it could be used even for older devices.

I did not think of that! I will post on their groups and see why it's doing that. Unfortunately, it's the on-device installer which doesn't extract non-prefixed files. The libraries are in the apk-file but don't end up under /data/data/package/lib like they should.


Thanks again!


reply via email to

[Prev in Thread] Current Thread [Next in Thread]