compiling ecl android on MacOSX

Daniel Kochmański daniel at turtleware.eu
Mon Feb 29 06:30:51 UTC 2016


Hello,

Did you follow the instructions in INSTALL file? First you have to build
the host ECL (32 bit), and after that the android one withe the provided
cross-config.

./configure ABI=32 CFLAGS="-m32 -g -O2" LDFLAGS="-m32 -g -O2" \
            --prefix=`pwd`/ecl-android-host \
            --disable-longdouble \
            --enable-libatomic=included

Etc. Building for 64 bit should be also possible with some tweaking of
cross config in src/util and configure options.

Mentioned instructions are available here:
https://gitlab.com/embeddable-common-lisp/ecl/blob/develop/INSTALL (and
in the source repository).

Does appstore accept lgpl apps? As far as I understand it doesn't allow
dynamic linkage and static linking will result in covering by lgpl also
your ios app..

If these remarks doesn't help please send more details about build
process you do, host gcc, config.log's, configure options, git commit
etc. I'll try to help then.

Please also note, that android support isn't official yet (I'm
publishing a new release today though 16.1.2, where it already is).

Best regards,
Daniel

PS. I've wrote yesterday from my phone, but I'm not sure if it send the
email properly, sorry for reposting if that's a case.

Pascal J. Bourguignon writes:

> Hello,
>
> We cannot compile ecl for android on MacOSX, because *nm* is used by gmp 
> configure instead of
> $PLATFORM_PREFIX/bin/arm-linux-androideabi-nm
>
> With NM=$PLATFORM_PREFIX/bin/arm-linux-androideabi-nm  in 
> ecl/src/configure:5630, it passes:
> checking how to define a 32-bit word... .long
> but I'm not sure it's correct to hard wire this NM in ecl/src/configure; 
> isn't it generated from
> autoconf?
>
> Well, configure passes, but then:
>
> ;;;   Invoking external command:
> ;;;   arm-linux-androideabi-gcc -I. -I/Users/pjb/src/android/ecl/build/ 
> -DECL_API -I/Users/pjb/src/android/ecl/build/c -D_GNU_SOURCE 
> -D_FILE_OFFSET_BITS=64 -DANDROID -DPLATFORM_ANDROID 
> -DUSE_GET_STACKBASE_FOR_MAIN -DIGNORE_DYNAMIC_LOADING -DAO_REQUIRE_CAS 
> -g -O2 -fPIC -D_THREAD_SAFE -Dandroid -I/Users/pjb/src/android/ecl/src/c 
> -c lsp/predlib.c -o lsp/predlib.o In file included from ./ecl/ecl.h:82:0,
>                   from ./ecl/ecl-cmp.h:29,
>                   from lsp/predlib.c:3:
> lsp/predlib.c: In function 'si_long_float_p':
> lsp/predlib.c:1067:42: error: 't_longfloat' undeclared (first use in 
> this function)
>     value0 = ecl_make_bool(type_of(v1x) == t_longfloat);
>                                            ^
> ./ecl/object.h:126:28: note: in definition of macro 'ecl_make_bool'
>   #define ecl_make_bool(x) ((x)? ECL_T : ECL_NIL)
>                              ^
> lsp/predlib.c:1067:42: note: each undeclared identifier is reported only 
> once for each function it appears in
>     value0 = ecl_make_bool(type_of(v1x) == t_longfloat);
>                                            ^
> ./ecl/object.h:126:28: note: in definition of macro 'ecl_make_bool'
>   #define ecl_make_bool(x) ((x)? ECL_T : ECL_NIL)
>                              ^
> lsp/predlib.c: In function 'cl_coerce':
> lsp/predlib.c:2194:14: warning: assignment makes pointer from integer 
> without a cast [enabled by default]
>         value0 = ecl_make_long_float(ecl_to_long_double(v12c__value));
>                ^
>
> It seems :long-float is put on *feature* when it should not.
>
>
>
>
>
> It should also be noted that Android is transitionning to 64-bit too, 
> (and iOS already only accepts applications in the AppStore only if they 
> include 64-bit binaries).
>
> https://source.android.com/source/64-bit-builds.html


-- 
Daniel Kochmański ;; aka jackdaniel | Poznań, Poland
TurtleWare - Daniel Kochmański      | www.turtleware.eu

"Be the change that you wish to see in the world." - Mahatma Gandhi



More information about the ecl-devel mailing list