--- a
+++ b/m4/android.m4
@@ -0,0 +1,124 @@
+dnl Copyright (C) 2010 IOhannes m zmรถlnig
+dnl This file is free software; IOhannes m zmรถlnig
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+# AM_CHECK_ANDROID (ACTION_IF_FOUND, ACTION_IF_NOT_FOUND, [ACTION_IF_FAILED])
+# enables the "--with-android" flag; 
+# if the androidSDK is detected, this will 
+#  - set the CC & CPP to the cross-compiler ( resp preprocessor)
+#  - as well as the apropriate CFLAGS, INCLUDES and LDFLAGS
+#  - these values can also be found in ANDROID_CC, ANDROID_CPP, 
+#    ANDROID_INCLUDES, ANDROID_ARCH, ANDROID_CFLAGS, ANDROID_LDFLAGS
+#  it will then call ACTION_IF_FOUND
+# elif ACTION_IF_FAILED is set and the androidSDK is not detected even though the user
+#  requested it (by specifying a path, or simply saying "--with-android=yes"), 
+#  then ACTION_IF_FAILED is called
+# else 
+#  ACTION_IF_NOT_FOUND is called
+#
+# TODO: only run checks when architecture is right (x-compiling)
+#        hc's code used "arm-linux"
+# --------------------------------------------------------------
+AC_DEFUN([PD_CHECK_ANDROID],
+[
+define([androidpath_default],[${HOME}/src/android/android-ndk-1.6_r1])
+define([androidversion_default],[android-4])
+
+AC_ARG_WITH([android], 
+	AS_HELP_STRING( [--with-android=</path/to/sdk>],
+			[specify path to Android SDK (only used when building for Android) [androidpath_default]]),
+    android_path=$withval)
+AC_ARG_WITH([androidversion], 
+	AS_HELP_STRING( [--with-androidversion=<sdk-version>],
+			[specify Android target version (only used when building for Android) [androidversion_default]]),
+    android_target_platform=$withval)
+
+
+case $host in
+	arm-linux)
+	;;
+	*)
+	AC_MSG_NOTICE([Android SDK only available for arm-linux hosts, skipping tests])
+	with_android="no"
+	;;
+esac
+
+
+if test "x${with_android}" != "xno" ; then
+ AC_MSG_CHECKING([android SDK])
+ 
+ if test "x${android_path}" = "xyes"; then
+   android_path=androidpath_default
+ fi
+ if test "x${android_target_platform}" = "x"; then
+   android_target_platform=androidversion_default
+ fi
+ 
+ android_target_arch_abi=arm
+ android_gcc_path="${android_path}/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin"
+ ANDROID_CPP="${android_gcc_path}/arm-eabi-cpp"
+ ANDROID_CC="${android_gcc_path}/arm-eabi-gcc"
+ ANDROID_LD="${android_gcc_path}/arm-eabi-ld"
+ ANDROID_SYSROOT="${android_path}/build/platforms/${android_target_platform}/arch-${android_target_arch_abi}"
+ 
+ if test -d "${ANDROID_SYSROOT}/usr/include" && 
+ 	test -x "${ANDROID_CC}" &&
+ 	test -x "${ANDROID_LD}" &&
+ 	test -x "${ANDROID_CPP}"; then
+  CPP="${ANDROID_CPP}"
+  CC="${ANDROID_CC}"
+  LD="${ANDROID_LD}"
+  android_target_libgcc=$(${ANDROID_CC} -print-libgcc-file-name)
+ 
+ #ah, i don't like all this...
+ 
+ #why do we have to specify _HAVE_UNISTD_H and HAVE_GL: can't we use autoconf tests?
+  ANDROID_DEFS="-DANDROID -D__linux__ -D_HAVE_UNISTD_H -DHAVE_LIBGL -D__BSD_VISIBLE=
+ 1"
+  ANDROID_INCLUDES="-I${ANDROID_SYSROOT}/usr/include"
+ 
+ # what broken compiler is this, if we have to specify all the architecture defines manually?
+  ANDROID_ARCH_CFLAGS="-march=armv5te -mtune=xscale -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__"
+ 
+ #shan't we test for these flags?
+  ANDROID_OPT_CFLAGS=" -msoft-float -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -mthumb -fno-strict-aliasing -finline-limit=64 -O2"
+ 
+  ANDROID_CFLAGS="${ANDROID_ARCH_CFLAGS} ${ANDROID_OPT_CFLAGS}"
+  ANDROID_LDFLAGS="-nostdlib -Wl,--no-undefined -Wl,-rpath-link=${ANDROID_SYSROOT}/usr/lib ${android_target_libgcc}"
+ 
+  INCLUDES="${INCLUDES} ${ANDROID_INCLUDES}"
+  CFLAGS="${CFLAGS} ${ANDROID_CFLAGS}"
+  LDFLAGS="${LDFLAGS} ${ANDROID_LDFLAGS}"
+ 
+ # workaround for rpl_malloc/rpl_realloc bug in autoconf when cross-compiling
+  ac_cv_func_malloc_0_nonnull=yes
+  ac_cv_func_realloc_0_nonnull=yes
+ 
+  AC_MSG_RESULT([yes])
+  [$1]
+ else
+  ANDROID_CPP=""
+  ANDROID_CC=""
+  ANDROID_LD=""
+  ANDROID_SYSROOT=""
+  
+  if test "x${with_android}" = "x"; then
+    with_android="no"
+  fi
+ 
+  AC_MSG_RESULT([no])
+  if test "x${with_android}" = "xno"; then
+   :
+   [$2]
+  else
+   :
+   ifelse([$3], , [$2], [$3])
+  fi
+ fi
+else
+# --without-android
+ [$2]
+fi
+undefine([androidpath_default])
+undefine([androidversion_default])
+])