aboutsummaryrefslogtreecommitdiff
path: root/build/android
diff options
context:
space:
mode:
authorest31 <MTest31@outlook.com>2015-06-10 00:35:21 +0200
committerest31 <MTest31@outlook.com>2015-06-13 19:49:55 +0200
commit572990dcd3f43386860b5b14015ad722fb96ea83 (patch)
treef1f1f57b612aec58e226bf43ad1e2a78441cdc4f /build/android
parentaa13baa30a45b0f834c23bd5c0407895eb8ec0ee (diff)
downloadminetest-572990dcd3f43386860b5b14015ad722fb96ea83.tar.gz
minetest-572990dcd3f43386860b5b14015ad722fb96ea83.tar.bz2
minetest-572990dcd3f43386860b5b14015ad722fb96ea83.zip
Add utf-8 conversion utilities and re-add intlGUIEditBox
Diffstat (limited to 'build/android')
-rw-r--r--build/android/Makefile69
-rw-r--r--build/android/jni/Android.mk9
-rw-r--r--build/android/libiconv_android.patch39
-rw-r--r--build/android/libiconv_android_mk.patch51
-rw-r--r--build/android/libiconv_stdio.patch10
5 files changed, 175 insertions, 3 deletions
diff --git a/build/android/Makefile b/build/android/Makefile
index 1b33a4599..798d56037 100644
--- a/build/android/Makefile
+++ b/build/android/Makefile
@@ -131,6 +131,13 @@ FREETYPE_TIMESTAMP = $(FREETYPE_DIR)timestamp
FREETYPE_TIMESTAMP_INT = $(ROOT)/deps/freetype_timestamp
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_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
+
SQLITE3_FOLDER = sqlite-amalgamation-3080704
SQLITE3_URL = http://www.sqlite.org/2014/$(SQLITE3_FOLDER).zip
@@ -431,6 +438,64 @@ $(FREETYPE_LIB) : $(FREETYPE_TIMESTAMP)
clean_freetype :
$(RM) -rf ${FREETYPE_DIR}
+$(ICONV_TIMESTAMP) : iconv_download
+ @LAST_MODIF=$$(find ${ICONV_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
+ if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
+ touch ${ICONV_TIMESTAMP}; \
+ 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; \
+ fi
+
+iconv : $(ICONV_LIB)
+
+$(ICONV_LIB) : $(ICONV_TIMESTAMP)
+ @REFRESH=0; \
+ if [ ! -e ${ICONV_TIMESTAMP_INT} ] ; then \
+ REFRESH=1; \
+ fi; \
+ if [ ! -e ${ICONV_LIB} ] ; then \
+ REFRESH=1; \
+ fi; \
+ if [ ${ICONV_TIMESTAMP} -nt ${ICONV_TIMESTAMP_INT} ] ; then \
+ REFRESH=1; \
+ fi; \
+ if [ $$REFRESH -ne 0 ] ; then \
+ 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}; \
+ else \
+ echo "nothing to be done for iconv"; \
+ fi
+
+clean_iconv :
+ $(RM) -rf ${ICONV_DIR}
+
#Note: Texturehack patch is required for gpu's not supporting color format
# correctly. Known bad GPU:
# -geforce on emulator
@@ -736,7 +801,7 @@ assets : $(ASSETS_TIMESTAMP)
clean_assets :
@$(RM) -r assets
-apk: $(PATHCFGFILE) assets $(IRRLICHT_LIB) $(CURL_LIB) $(GMP_LIB) $(LEVELDB_TARGET) \
+apk: $(PATHCFGFILE) assets $(ICONV_LIB) $(IRRLICHT_LIB) $(CURL_LIB) $(GMP_LIB) $(LEVELDB_TARGET) \
$(OPENAL_LIB) $(OGG_LIB) prep_srcdir $(ROOT)/jni/src/android_version.h \
sqlite3_download
@export NDEBUG=$$NDEBUG; $(MAKE) manifest; \
@@ -778,7 +843,7 @@ envpaths :
clean_all :
@$(MAKE) clean_apk; \
- $(MAKE) clean_assets clean_irrlicht clean_leveldb clean_curl clean_openssl \
+ $(MAKE) clean_assets clean_iconv clean_irrlicht clean_leveldb clean_curl clean_openssl \
clean_openal clean_ogg clean_gmp clean_manifest; \
sleep 1; \
$(RM) -r gen libs obj deps bin Debug and_env
diff --git a/build/android/jni/Android.mk b/build/android/jni/Android.mk
index 2c574bc41..d62698ce4 100644
--- a/build/android/jni/Android.mk
+++ b/build/android/jni/Android.mk
@@ -25,6 +25,11 @@ LOCAL_SRC_FILES := deps/freetype2-android/Android/obj/local/$(TARGET_ARCH_ABI)/l
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
+LOCAL_MODULE := iconv
+LOCAL_SRC_FILES := deps/libiconv/obj/local/$(TARGET_ARCH_ABI)/libiconv.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
LOCAL_MODULE := openal
LOCAL_SRC_FILES := deps/openal-soft/libs/$(TARGET_LIBDIR)/libopenal.so
include $(PREBUILT_SHARED_LIBRARY)
@@ -97,6 +102,7 @@ LOCAL_C_INCLUDES := \
jni/src/json \
jni/src/cguittfont \
deps/irrlicht/include \
+ deps/libiconv/include \
deps/freetype2-android/include \
deps/curl/include \
deps/openal-soft/jni/OpenAL/include \
@@ -153,6 +159,7 @@ LOCAL_SRC_FILES := \
jni/src/httpfetch.cpp \
jni/src/hud.cpp \
jni/src/imagefilters.cpp \
+ jni/src/intlGUIEditBox.cpp \
jni/src/inventory.cpp \
jni/src/inventorymanager.cpp \
jni/src/itemdef.cpp \
@@ -346,7 +353,7 @@ LOCAL_SRC_FILES += \
LOCAL_SRC_FILES += jni/src/json/jsoncpp.cpp
LOCAL_SHARED_LIBRARIES := openal ogg vorbis gmp
-LOCAL_STATIC_LIBRARIES := Irrlicht freetype curl ssl crypto android_native_app_glue $(PROFILER_LIBS)
+LOCAL_STATIC_LIBRARIES := Irrlicht iconv freetype curl ssl crypto android_native_app_glue $(PROFILER_LIBS)
ifeq ($(HAVE_LEVELDB), 1)
LOCAL_STATIC_LIBRARIES += LevelDB
diff --git a/build/android/libiconv_android.patch b/build/android/libiconv_android.patch
new file mode 100644
index 000000000..4eca0a4ef
--- /dev/null
+++ b/build/android/libiconv_android.patch
@@ -0,0 +1,39 @@
+--- a/libcharset/lib/localcharset.c 2015-06-10 11:55:25.933870724 +0200
++++ b/libcharset/lib/localcharset.c 2015-06-10 11:55:39.578063493 +0200
+@@ -47,7 +47,7 @@
+
+ #if !defined WIN32_NATIVE
+ # include <unistd.h>
+-# if HAVE_LANGINFO_CODESET
++# if HAVE_LANGINFO_CODESET && !(defined __ANDROID__)
+ # include <langinfo.h>
+ # else
+ # if 0 /* see comment below */
+@@ -124,7 +124,7 @@ get_charset_aliases (void)
+ cp = charset_aliases;
+ if (cp == NULL)
+ {
+-#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
++#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__ || defined __ANDROID__)
+ const char *dir;
+ const char *base = "charset.alias";
+ char *file_name;
+@@ -338,6 +338,9 @@ get_charset_aliases (void)
+ "CP54936" "\0" "GB18030" "\0"
+ "CP65001" "\0" "UTF-8" "\0";
+ # endif
++# if defined __ANDROID__
++ cp = "*" "\0" "UTF-8" "\0";
++# endif
+ #endif
+
+ charset_aliases = cp;
+@@ -361,7 +364,7 @@ locale_charset (void)
+ const char *codeset;
+ const char *aliases;
+
+-#if !(defined WIN32_NATIVE || defined OS2)
++#if !(defined WIN32_NATIVE || defined OS2 || defined __ANDROID__)
+
+ # if HAVE_LANGINFO_CODESET
+
diff --git a/build/android/libiconv_android_mk.patch b/build/android/libiconv_android_mk.patch
new file mode 100644
index 000000000..9eb7a1915
--- /dev/null
+++ b/build/android/libiconv_android_mk.patch
@@ -0,0 +1,51 @@
+From fe27aae178d65b06d5f4104158343b0d2d33e3f0 Mon Sep 17 00:00:00 2001
+From: Pierre Zurek <pierrezurek@gmail.com>
+Date: Sat, 2 Apr 2011 23:11:57 +0200
+Subject: [PATCH] Added Android.mk.
+
+This makefile first executes the configure script, that will
+generate the config.h files necessary to build iconv.
+---
+ Android.mk | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+ create mode 100644 Android.mk
+
+diff --git a/jni/Android.mk b/jni/Android.mk
+new file mode 100644
+index 0000000..799b22d
+--- /dev/null
++++ b/jni/Android.mk
+@@ -0,0 +1,32 @@
++LOCAL_PATH := $(call my-dir)
++include $(CLEAR_VARS)
++
++LOCAL_ARM_MODE := arm
++
++LOCAL_SRC_FILES := src/lib/iconv.c \
++ src/libcharset/lib/localcharset.c \
++ src/lib/relocatable.c
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/src/include \
++ $(LOCAL_PATH)/src/libcharset \
++ $(LOCAL_PATH)/src/libcharset/include
++
++LOCAL_CFLAGS := \
++ -DLIBDIR="\"c\"" \
++ -D_ANDROID \
++ -DBUILDING_LIBCHARSET \
++ -DBUILDING_LIBICONV \
++ -DBUILDING_LIBICONV \
++ -DIN_LIBRARY
++
++LOCAL_MODULE:= iconv
++
++$(info Configuring iconv...)
++COMMAND := $(shell \
++ export PATH=$(TOOLCHAIN_INSTALL_DIR)/bin:$$PATH; \
++ cd $(LOCAL_PATH); \
++ make distclean; \
++ ./configure --host="arm-linux-androideabi")
++$(info iconv configured.)
++
++include $(BUILD_STATIC_LIBRARY)
++
diff --git a/build/android/libiconv_stdio.patch b/build/android/libiconv_stdio.patch
new file mode 100644
index 000000000..19cb6aa09
--- /dev/null
+++ b/build/android/libiconv_stdio.patch
@@ -0,0 +1,10 @@
+--- a/srclib/stdio.in.h 2011-08-07 15:42:06.000000000 +0200
++++ b/srclib/stdio.in.h 2015-06-10 09:27:58.129056262 +0200
+@@ -695,7 +696,8 @@ _GL_CXXALIASWARN (gets);
+ /* It is very rare that the developer ever has full control of stdin,
+ so any use of gets warrants an unconditional warning. Assume it is
+ always declared, since it is required by C89. */
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
++/*_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");*/
++#define gets(a) fgets( a, sizeof(*(a)), stdin)
+ #endif \ No newline at end of file