Skip to content

Commit

Permalink
Add utf-8 conversion utilities and re-add intlGUIEditBox
Browse files Browse the repository at this point in the history
  • Loading branch information
est31 committed Jun 13, 2015
1 parent aa13baa commit 572990d
Show file tree
Hide file tree
Showing 10 changed files with 1,966 additions and 4 deletions.
69 changes: 67 additions & 2 deletions build/android/Makefile
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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; \
Expand Down Expand Up @@ -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
Expand Down
9 changes: 8 additions & 1 deletion build/android/jni/Android.mk
Expand Up @@ -24,6 +24,11 @@ LOCAL_MODULE := freetype
LOCAL_SRC_FILES := deps/freetype2-android/Android/obj/local/$(TARGET_ARCH_ABI)/libfreetype2-static.a
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
Expand Down Expand Up @@ -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 \
Expand Down Expand Up @@ -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 \
Expand Down Expand Up @@ -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
Expand Down
39 changes: 39 additions & 0 deletions 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

51 changes: 51 additions & 0 deletions 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)
+
10 changes: 10 additions & 0 deletions 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
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Expand Up @@ -417,6 +417,7 @@ set(client_SRCS
guiVolumeChange.cpp
hud.cpp
imagefilters.cpp
intlGUIEditBox.cpp
keycode.cpp
localplayer.cpp
main.cpp
Expand Down

0 comments on commit 572990d

Please sign in to comment.