Re: [Chicken-users] Playing with build utilities for Android
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
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
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
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