From fe68809a34727d3b456169e20cd6dd063ea8d11a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kochma=C5=84ski?= Date: Thu, 24 Sep 2015 09:03:21 +0200 Subject: [PATCH] mobile: add android platform to the build scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows enables building of ECL for android platform. Based on work of Sylvain Ageneau. Signed-off-by: Daniel KochmaƄski --- src/aclocal.m4 | 23 ++++++++++++++++++++ src/c/tcp.d | 4 ++++ src/configure | 55 +++++++++++++++++++++++++++++++++++++++++++++++- src/configure.ac | 13 +++++++++++- 4 files changed, 93 insertions(+), 2 deletions(-) diff --git a/src/aclocal.m4 b/src/aclocal.m4 index 6a74edda8..c182878b8 100644 --- a/src/aclocal.m4 +++ b/src/aclocal.m4 @@ -253,6 +253,21 @@ clibs='' SONAME='' SONAME_LDFLAGS='' case "${host_os}" in + linux-androideabi) + thehost='android' + THREAD_CFLAGS='-D_THREAD_SAFE' +# THREAD_LIBS='-lpthread' + SHARED_LDFLAGS="-shared ${LDFLAGS}" + BUNDLE_LDFLAGS="-shared ${LDFLAGS}" + ECL_LDRPATH='-Wl,--rpath,~A' + clibs="-ldl" + # Maybe CFLAGS="-D_ISOC99_SOURCE ${CFLAGS}" ??? + CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DANDROID -DPLATFORM_ANDROID -DUSE_GET_STACKBASE_FOR_MAIN -DIGNORE_DYNAMIC_LOADING -DAO_REQUIRE_CAS ${CFLAGS}" + SONAME="${SHAREDPREFIX}ecl.${SHAREDEXT}.SOVERSION" + SONAME_LDFLAGS="-Wl,-soname,SONAME" + ECL_ADD_FEATURE([android]) + ;; + # libdir may have a dollar expression inside linux*) thehost='linux' @@ -432,6 +447,14 @@ case "${host_os}" in shared="no" ;; esac + +case "${host}" in + i686*-android*) + THREAD_LIBS='' + CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DANDROID -DPLATFORM_ANDROID -DUSE_GET_STACKBASE_FOR_MAIN -DIGNORE_DYNAMIC_LOADING -DNO_GETCONTEXT -DHAVE_GETTIMEOFDAY -DHAVE_SIGPROCMASK ${CFLAGS}" + ECL_ADD_FEATURE([android]) +esac + case "${host_cpu}" in alpha*) CFLAGS="${CFLAGS} -mieee";; diff --git a/src/c/tcp.d b/src/c/tcp.d index e6c74b430..7eb0774fa 100644 --- a/src/c/tcp.d +++ b/src/c/tcp.d @@ -23,7 +23,11 @@ #if defined(ECL_MS_WINDOWS_HOST) #include #else +#ifdef __ANDROID__ +#include +#else extern int errno; +#endif #include #include #include diff --git a/src/configure b/src/configure index db17c0ea1..1af77f82f 100755 --- a/src/configure +++ b/src/configure @@ -4872,6 +4872,23 @@ clibs='' SONAME='' SONAME_LDFLAGS='' case "${host_os}" in + linux-androideabi) + thehost='android' + THREAD_CFLAGS='-D_THREAD_SAFE' +# THREAD_LIBS='-lpthread' + SHARED_LDFLAGS="-shared ${LDFLAGS}" + BUNDLE_LDFLAGS="-shared ${LDFLAGS}" + ECL_LDRPATH='-Wl,--rpath,~A' + clibs="-ldl" + # Maybe CFLAGS="-D_ISOC99_SOURCE ${CFLAGS}" ??? + CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DANDROID -DPLATFORM_ANDROID -DUSE_GET_STACKBASE_FOR_MAIN -DIGNORE_DYNAMIC_LOADING -DAO_REQUIRE_CAS ${CFLAGS}" + SONAME="${SHAREDPREFIX}ecl.${SHAREDEXT}.SOVERSION" + SONAME_LDFLAGS="-Wl,-soname,SONAME" + +LSP_FEATURES="(cons :android ${LSP_FEATURES})" + + ;; + # libdir may have a dollar expression inside linux*) thehost='linux' @@ -5051,6 +5068,16 @@ case "${host_os}" in shared="no" ;; esac + +case "${host}" in + i686*-android*) + THREAD_LIBS='' + CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DANDROID -DPLATFORM_ANDROID -DUSE_GET_STACKBASE_FOR_MAIN -DIGNORE_DYNAMIC_LOADING -DNO_GETCONTEXT -DHAVE_GETTIMEOFDAY -DHAVE_SIGPROCMASK ${CFLAGS}" + +LSP_FEATURES="(cons :android ${LSP_FEATURES})" + +esac + case "${host_cpu}" in alpha*) CFLAGS="${CFLAGS} -mieee";; @@ -6905,7 +6932,7 @@ done for ac_header in sys/resource.h sys/utsname.h float.h pwd.h dlfcn.h link.h \ - mach-o/dyld.h ulimit.h dirent.h sys/ioctl.h sys/select.h \ + mach-o/dyld.h dirent.h sys/ioctl.h sys/select.h \ sys/wait.h semaphore.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -6921,6 +6948,24 @@ done +for ac_header in ulimit.h +do : + ac_fn_c_check_header_compile "$LINENO" "ulimit.h" "ac_cv_header_ulimit_h" "#ifdef HAVE_ULIMIT_H +# include +#endif + +" +if test "x$ac_cv_header_ulimit_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ULIMIT_H 1 +_ACEOF + +fi + +done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : @@ -9447,6 +9492,14 @@ else CLX_INFO="" fi +if test "${with_tcp}" = "builtin"; then + + +LSP_FEATURES="(cons :builtin-sockets ${LSP_FEATURES})" + + + with_tcp=yes +fi if test "${with_tcp}" = "yes"; then $as_echo "#define TCP 1" >>confdefs.h diff --git a/src/configure.ac b/src/configure.ac index 666105d05..792fd71c1 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -634,9 +634,16 @@ AC_CHECK_HEADERS( [fcntl.h limits.h netdb.h netinet/in.h] \ dnl !!! end autoscan AC_CHECK_HEADERS( [sys/resource.h sys/utsname.h float.h pwd.h dlfcn.h link.h] \ - [mach-o/dyld.h ulimit.h dirent.h sys/ioctl.h sys/select.h] \ + [mach-o/dyld.h dirent.h sys/ioctl.h sys/select.h] \ [sys/wait.h semaphore.h] ) + +AC_CHECK_HEADERS([ulimit.h], [], [], +[[#ifdef HAVE_ULIMIT_H +# include +#endif +]]) + dnl ===================================================================== dnl Checks for typedefs, structures, and compiler characteristics. @@ -802,6 +809,10 @@ else CLX_INFO="" fi +if test "${with_tcp}" = "builtin"; then + ECL_ADD_BUILTIN_MODULE([sockets]) + with_tcp=yes +fi if test "${with_tcp}" = "yes"; then AC_DEFINE(TCP, [1], [Network streams]) EXTRA_OBJS="${EXTRA_OBJS} tcp.${OBJEXT}"