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