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