<div class="gmail_quote"><div class="gmail_quote">I am forwarding an excerpt of a message that was too large for the list due to the attachments. The attached tarball, which contains the NDK port (wow!) is temporarily found here</div>

<div class="gmail_quote">
    <a href="http://bit.ly/e8Wri1" target="_blank">http://bit.ly/e8Wri1</a></div><div class="gmail_quote"><br></div><div class="gmail_quote">I had no time to test this file -- must first find time to download the NDK and play with it --, but please interested people have a look and report back. My feeling is that some of the cross compiled features are not working properly. In particular some datatypes might be missing due to a mismatch between the available types in the host and in the cross-compiled builds.</div>


<div class="gmail_quote"><br></div><div class="gmail_quote">Best,</div><div class="gmail_quote"><br></div><div class="gmail_quote">Juanjo</div><div class="gmail_quote"><br>---------- Forwarded message ----------<br>From: Sylvain Ageneau <<a href="mailto:ageneau@gmail.com" target="_blank">ageneau@gmail.com</a>><br>


To: <a href="mailto:ecls-list@lists.sourceforge.net" target="_blank">ecls-list@lists.sourceforge.net</a><br>Date: Mon, 07 Feb 2011 22:53:09 -0300<br>Subject: Re: [Ecls-list] porting to android using NDK<br>Hello,<br>
<br>
I did some initial work porting ECL to android.<br>
<br>
I'm currently at the point where I'm having what seems to be the same<br>
problem that was reported here (stuck in an infinite loop in<br>
init_lib_LSP):<br>
<a href="http://www.mail-archive.com/ecls-list@lists.sourceforge.net/msg00744.html" target="_blank">http://www.mail-archive.com/ecls-list@lists.sourceforge.net/msg00744.html</a>.<br>
<br>
Apparently the responsible code is compiled from ./src/clos/builtin.lsp.<br>
See backtrace:<br>
<br>
#0  0x83829164 in si_memq (x=0x5ffd20, l=0x602e81)<br>
at /home/sylvain/src/ecl/src/c/list.d:875<br>
#1  0x8394b730 in si_subclassp (narg=1, V1=0x0, V2=0x5ffd20) at<br>
lsp/predlib.c:1694<br>
#2  0x83903034 in L53fast_subtypep (V1=0x5ffd38, V2=0x5ffd20) at<br>
clos/kernel.c:1348<br>
#3  0x83903318 in L54compare_specializers (V1=0x5ffd20, V2=0x5ffd38,<br>
V3=0x5ffd98) at clos/kernel.c:1404<br>
#4  0x83902da0 in L52compare_specializers_lists (V1=0x604a31,<br>
V2=0x6044f1, V3=0x607a09) at clos/kernel.c:1286<br>
#5  0x83902cd0 in L51compare_methods (V1=0x5ff6d8, V2=0x5ff4f8,<br>
V3=0x607a09, V4=0x1) at clos/kernel.c:1262<br>
#6  0x83902a90 in L50compute_applicable_methods (V1=0x5ff6f0,<br>
V2=0x607a21) at clos/kernel.c:1190<br>
#7  0x83852ba8 in dispatch2 (narg=2, x0=0x5ff6f0, x1=0x607a21)<br>
at /home/sylvain/src/ecl/src/c/cfun_dispatch.d:24<br>
#8  0x839772a0 in L15precompute_valid_initarg_keywords (V1=0x5ffd98) at<br>
clos/standard.c:580<br>
#9  0x83976348 in LC6make_instance (narg=0, V1=0x83a5787c) at<br>
clos/standard.c:275<br>
#10 0x8399c2a0 in APPLY (n=7, fn=0x839761a8 <LC6make_instance>,<br>
x=0x2ad004) at /home/sylvain/src/ecl/src/c/apply.d:32<br>
#11 0x8382a37c in ecl_apply_from_stack_frame (frame=0xbe9dd820,<br>
x=0x5ff5e8) at /home/sylvain/src/ecl/src/c/eval.d:54<br>
#12 0x8382a820 in cl_apply (narg=-2086832780, fun=0x83a50d2c,<br>
lastarg=0xbe9dd820) at /home/sylvain/src/ecl/src/c/eval.d:138<br>
#13 0x839d6288 in LC2__g4 (narg=6323321, V1=0x5ff5b8, V2=0xbe9dd820) at<br>
clos/combin.c:125<br>
#14 0x839d64d0 in LC4__g5 (narg=1, V1=0x83a576fc, V2=0x5b2) at<br>
clos/combin.c:159<br>
#15 0x8399c070 in APPLY (n=2, fn=0x839d63ac <LC4__g5>, x=0x42dd2008)<br>
at /home/sylvain/src/ecl/src/c/apply.d:27<br>
#16 0x8382a3a0 in ecl_apply_from_stack_frame (frame=0xbe9dd6e0,<br>
x=0x5ff0f0) at /home/sylvain/src/ecl/src/c/eval.d:56<br>
#17 0x8382a740 in cl_funcall (narg=1121787912, function=0x5ff5d0)<br>
at /home/sylvain/src/ecl/src/c/eval.d:129<br>
#18 0x8383a548 in _ecl_standard_dispatch (frame=0xbe9dd820, gf=0x5ff5d0)<br>
at /home/sylvain/src/ecl/src/c/gfun.d:394<br>
#19 0x8383a69c in generic_function_dispatch_vararg (narg=-2086307716)<br>
at /home/sylvain/src/ecl/src/c/gfun.d:408<br>
#20 0x839d05a8 in _ecl8LKa3G3mvicrW_T6rDuiz (flag=0x3) at<br>
clos/builtin.c:362<br>
#21 0x8384df70 in read_VV (block=0x59b740, entry_point=0x839d0390<br>
<_ecl8LKa3G3mvicrW_T6rDuiz>) at /home/sylvain/src/ecl/src/c/read.d:2295<br>
#22 0x838a6340 in init_lib_LSP (cblock=0x3) at eclinitIhhZid.c:119<br>
#23 0x8384df70 in read_VV (block=0x59bfc0, entry_point=0x838a5c90<br>
<init_lib_LSP>) at /home/sylvain/src/ecl/src/c/read.d:2295<br>
#24 0x8381d934 in cl_boot (argc=1, argv=0xbe9ddba8)<br>
at /home/sylvain/src/ecl/src/c/main.d:759<br>
#25 0x8381c734 in ecl_boot (root_dir=0x83a0e2e4 "/")<br>
at /home/sylvain/workspace/hello-jni/jni/ecl_boot.c:69<br>
#26 0x8381c63e in Java_com_example_hellojni_HelloJni_startECL<br>
(env=0xabe0, thiz=0x4051be80)<br>
at /home/sylvain/workspace/hello-jni/jni/hello-jni.c:62<br>
#27 0x81d17d38 in ?? ()<br>
<br>
<br>
Some notes about what I tried so far:<br>
* Started from a recent ecl git<br>
(e6d180e7df3cbc91be08bb2a3b9793c01468a679)<br>
* Replace boehm with a recent cvs version. 2 reasons for this:<br>
1. The version of boehm shipped with ecl has a problem finding the stack<br>
base which is fixed by using the USE_GET_STACKBASE_FOR_MAIN define that<br>
was added in more recent versions<br>
2. Latest boehm seems to have been adapted for android (see<br>
-DPLATFORM_ANDROID) --> apparently backported from monodroid<br>
* An ugly hack to load "ucd.dat" from the android assets (can't just<br>
fopen it because it's compressed in the package that's uploaded to the<br>
phone)<br>
* patch ecl + boehm (in attachment)<br>
* Used the configure_linux script to build the host ECL and<br>
configure_android to build the cross-compiled ECL<br>
* tried --enable-threads=no --> same problem as above<br>
* You can use the included "gdb_wrapper" script to debug ECL from emacs<br>
(you first need to connect using jdb and set an initial breakpoint in<br>
your .jdbrc, also comment out the line $GDBCLIENT -x `native_path<br>
$GDBSETUP` from the ndk-gdb script)<br>
* Instructions to cross-compile are basically the same as for the iPhone<br>
port. See the 2 scripts configure_linux and configure_android<br>
* Also attaching the sample android project I used. It basically just<br>
calls "cl_boot"<br>
<br>
Any help welcome :)<br>
<br>
Cheers,<br>
Sylvain<br>
<br></div><br><br clear="all"><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>



</div><br>