summaryrefslogtreecommitdiff
path: root/build/android/Makefile
diff options
context:
space:
mode:
authorest31 <MTest31@outlook.com>2015-07-29 11:54:27 +0200
committerest31 <MTest31@outlook.com>2015-07-29 15:59:06 +0200
commiteb3aac20c879b9532cd3b678efb2126adcd07af7 (patch)
tree93ebffb360dcc45fdd687519cd054926c14cc743 /build/android/Makefile
parentf97c2702a2fee9496059169448ce97ed2b7da9b2 (diff)
downloadminetest-eb3aac20c879b9532cd3b678efb2126adcd07af7.tar.gz
minetest-eb3aac20c879b9532cd3b678efb2126adcd07af7.tar.bz2
minetest-eb3aac20c879b9532cd3b678efb2126adcd07af7.zip
Android: fix horrible libiconv build
Before, our libiconv build was a joke. We first called configure for our own build host system, then called make, before we executed a Android.mk script we provided as patch. The first "native make" always failed, and the LIBICONV_LIB file setting in our Makefile didn't match the built one, resulting in an always-rebuild of iconv. This commit cleans up this total mess, removes the double-build, and the Android.mk, and properly calls ./configure with the according target platform, and uses a built toolchain. As we have to deal with the android bug "NDK: Support for prebuild libs with full sonames" https://code.google.com/p/android/issues/detail?id=55868 as the 2013 patch https://lists.gnu.org/archive/html/libtool-patches/2013-06/msg00002.html by Google's David Turner wasn't inside the 2011 libtool, we pass -avoid-version to libtool. Thanks to the proper build, wide_to_utf8 works for android now, removing us of the need to disable it.
Diffstat (limited to 'build/android/Makefile')
-rw-r--r--build/android/Makefile73
1 files changed, 38 insertions, 35 deletions
diff --git a/build/android/Makefile b/build/android/Makefile
index b87199541..295ddf620 100644
--- a/build/android/Makefile
+++ b/build/android/Makefile
@@ -133,7 +133,7 @@ FREETYPE_URL_GIT = https://github.com/cdave1/freetype2-android
ICONV_VERSION = 1.14
ICONV_DIR = $(ROOT)/deps/libiconv/
-ICONV_LIB = $(ICONV_DIR)/iconv.so
+ICONV_LIB = $(ICONV_DIR)/lib/.libs/libiconv.so
ICONV_TIMESTAMP = $(ICONV_DIR)timestamp
ICONV_TIMESTAMP_INT = $(ROOT)/deps/iconv_timestamp
ICONV_URL_HTTP = http://ftp.gnu.org/pub/gnu/libiconv/libiconv-$(ICONV_VERSION).tar.gz
@@ -445,52 +445,55 @@ $(ICONV_TIMESTAMP) : iconv_download
fi
iconv_download :
- @if [ ! -d ${ICONV_DIR} ] ; then \
- echo "iconv sources missing, downloading..."; \
- mkdir -p ${ROOT}/deps; \
- cd ${ROOT}/deps; \
- wget ${ICONV_URL_HTTP} || exit 1; \
- tar -xzf libiconv-${ICONV_VERSION}.tar.gz || exit 1; \
- rm libiconv-${ICONV_VERSION}.tar.gz; \
- ln -s libiconv-${ICONV_VERSION} libiconv; \
- cd ${ICONV_DIR}; \
- patch -p1 < ${ROOT}/libiconv_android.patch; \
- patch -p1 < ${ROOT}/libiconv_android_mk.patch; \
- patch -p1 < ${ROOT}/libiconv_stdio.patch; \
- cd jni; \
- ln -s .. src; \
+ @if [ ! -d ${ICONV_DIR} ] ; then \
+ echo "iconv sources missing, downloading..."; \
+ mkdir -p ${ROOT}/deps; \
+ cd ${ROOT}/deps; \
+ wget ${ICONV_URL_HTTP} || exit 1; \
+ tar -xzf libiconv-${ICONV_VERSION}.tar.gz || exit 1; \
+ rm libiconv-${ICONV_VERSION}.tar.gz; \
+ ln -s libiconv-${ICONV_VERSION} libiconv; \
+ cd ${ICONV_DIR}; \
+ patch -p1 < ${ROOT}/libiconv_android.patch; \
+ patch -p1 < ${ROOT}/libiconv_stdio.patch; \
fi
iconv : $(ICONV_LIB)
$(ICONV_LIB) : $(ICONV_TIMESTAMP)
@REFRESH=0; \
- if [ ! -e ${ICONV_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
+ if [ ! -e ${ICONV_TIMESTAMP_INT} ] ; then \
+ REFRESH=1; \
fi; \
- if [ ! -e ${ICONV_LIB} ] ; then \
- REFRESH=1; \
+ if [ ! -e ${ICONV_LIB} ] ; then \
+ REFRESH=1; \
fi; \
- if [ ${ICONV_TIMESTAMP} -nt ${ICONV_TIMESTAMP_INT} ] ; then \
- REFRESH=1; \
+ if [ ${ICONV_TIMESTAMP} -nt ${ICONV_TIMESTAMP_INT} ] ; then \
+ REFRESH=1; \
fi; \
if [ $$REFRESH -ne 0 ] ; then \
- mkdir -p ${ICONV_DIR}; \
+ mkdir -p ${ICONV_DIR}; \
export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK}; \
- echo "changed timestamp for iconv detected building..."; \
- cd ${ICONV_DIR}; \
- ./configure; \
- make; \
- export NDK_PROJECT_PATH=${ICONV_DIR}; \
- ndk-build NDEBUG=${NDEBUG} NDK_MODULE_PATH=${NDK_MODULE_PATH} \
- APP_PLATFORM=${APP_PLATFORM} APP_ABI=${TARGET_ABI} \
- TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}" \
- TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}" \
- TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1; \
- touch ${ICONV_TIMESTAMP}; \
- touch ${ICONV_TIMESTAMP_INT}; \
+ echo "changed timestamp for iconv detected building..."; \
+ cd ${ICONV_DIR}; \
+ \
+ export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-iconv; \
+ ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \
+ --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \
+ --install-dir=$${TOOLCHAIN}; \
+ export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \
+ export CC=${CROSS_PREFIX}gcc; \
+ export CXX=${CROSS_PREFIX}g++; \
+ export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \
+ ./configure --host=${TARGET_HOST} || exit 1; \
+ sed -i 's/LIBICONV_VERSION_INFO) /LIBICONV_VERSION_INFO) -avoid-version /g' lib/Makefile; \
+ grep "iconv_LDFLAGS" src/Makefile; \
+ $(MAKE) -s || exit 1; \
+ touch ${ICONV_TIMESTAMP}; \
+ touch ${ICONV_TIMESTAMP_INT}; \
+ rm -rf ${TOOLCHAIN}; \
else \
- echo "nothing to be done for iconv"; \
+ echo "nothing to be done for iconv"; \
fi
clean_iconv :