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

2014-01-03 Thread Kristian Lein-Mathisen
Thanks for your feedback, Peter.


On Fri, Jan 3, 2014 at 8:30 AM, Peter Bex peter@xs4all.nl 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 https://github.com/chicken-mobile/android-chicken 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  spiffytrie  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.

K.



 Thanks again!

 Cheers,
 Peter
 --
 http://www.more-magic.net

___
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users


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

2014-01-03 Thread Peter Bex
On Fri, Jan 03, 2014 at 12:50:41PM +0100, Kristian Lein-Mathisen wrote:
   The fine work https://github.com/chicken-mobile/android-chicken 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).

That sounds pretty good.  Did you try this with the Makefile I got from
Felix and which I sent to chicken-hackers?  I just got a csc when
doing that which was compiled only for the target platform, but perhaps
I performed the wrong steps to build it.

 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.

That's really cool!

  Have you considered simply filing a bugreport for the Android NDK?
 
 I did not think of that! I will post on their groups and see why it's doing
 that.

Keep me up to date, I'd be interested to hear how this pans out.

Cheers,
Peter
-- 
http://www.more-magic.net

___
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] Playing with build utilities for Android

2014-01-02 Thread Kristian Lein-Mathisen
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!).

The fine work https://github.com/chicken-mobile/android-chicken by Bevuta
allows us to build a cross-chicken which can cross-compile eggs and the
Chicken runtime. 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.

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!)

I'm basing my work on Bevuta's Makefile, and created a new branch here:

https://github.com/chicken-mobile/android-chicken/tree/chicken.mk

I've also scrapped together a gist that should reproduce what I've done so
far. This tries to continue what https://wiki.call-cc.org/embeddingdescribes:

https://gist.github.com/kristianlm/822

I though I'd announce it here in case it turns out to be useful! I'd also
love to hear about similar efforts.
K.
___
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users


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

2014-01-02 Thread Peter Bex
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.

 The fine work https://github.com/chicken-mobile/android-chicken 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.

 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.

 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.

Thanks again!

Cheers,
Peter
-- 
http://www.more-magic.net

___
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users