diff -ur icu.org/source/common/unicode/platform.h icu/source/common/unicode/platform.h --- icu.org/source/common/unicode/platform.h 2019-10-03 13:16:41.000000000 +0200 +++ icu/source/common/unicode/platform.h 2019-10-29 22:58:26.881221287 +0100 @@ -818,7 +818,7 @@ UPRV_HAS_DECLSPEC_ATTRIBUTE(dllimport)) # define U_EXPORT __declspec(dllexport) #elif defined(__GNUC__) -# define U_EXPORT __attribute__((visibility("default"))) +# define U_EXPORT #elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \ || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550) # define U_EXPORT __global diff -ur icu.org/source/config/mh-linux icu/source/config/mh-linux --- icu.org/source/config/mh-linux 2018-09-29 02:34:41.000000000 +0200 +++ icu/source/config/mh-linux 2018-10-20 00:33:36.558130876 +0200 @@ -27,7 +27,7 @@ ## Compiler switch to embed a library name # The initial tab in the next line is to prevent icu-config from reading it. - LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET)) + #LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET)) #SH# # We can't depend on MIDDLE_SO_TARGET being set. #SH# LD_SONAME= diff -ur icu.org/source/configure icu/source/configure --- icu.org/source/configure 2018-10-02 00:39:56.000000000 +0200 +++ icu/source/configure 2018-10-20 00:33:36.559130874 +0200 @@ -5207,7 +5207,7 @@ else icu_cv_host_frag=mh-linux-va fi ;; -*-*-linux*|*-*-gnu|*-*-k*bsd*-gnu|*-*-kopensolaris*-gnu) icu_cv_host_frag=mh-linux ;; +*-*-linux*|*-*-gnu|*-*-k*bsd*-gnu|*-*-kopensolaris*-gnu|*-*-*-androideabi*) icu_cv_host_frag=mh-linux ;; i[34567]86-*-cygwin) if test "$GCC" = yes; then icu_cv_host_frag=mh-cygwin @@ -6400,6 +6400,10 @@ # Check to see if genccode can generate simple assembly. GENCCODE_ASSEMBLY= case "${host}" in +arm-*-linux-androideabi) + if test "$GCC" = yes; then + GENCCODE_ASSEMBLY="-a gcc-android-arm" + fi ;; *-linux*|*-kfreebsd*-gnu*|i*86-*-*bsd*|i*86-pc-gnu) if test "$GCC" = yes; then # We're using gcc, and the simple -a gcc command line works for genccode @@ -7499,6 +7503,10 @@ # wchar_t can be used CHECK_UTF16_STRING_RESULT="available" ;; +*-*-*-androideabi|mips-unknown-linux-android) + # no UTF-16 strings thanks, I think, this is to avoid the -std=c++0x which causes trouble with uint64_t + CHECK_UTF16_STRING_RESULT="nope" + ;; *) ;; esac diff -ur icu.org/source/i18n/decimfmt.cpp icu/source/i18n/decimfmt.cpp --- icu.org/source/i18n/decimfmt.cpp 2018-10-02 00:39:56.000000000 +0200 +++ icu/source/i18n/decimfmt.cpp 2018-10-20 00:33:36.560130873 +0200 @@ -9,6 +9,13 @@ // Helpful in toString methods and elsewhere. #define UNISTR_FROM_STRING_EXPLICIT +#ifdef __ANDROID__ +#ifndef ARM +#define ARM +#endif +#include +#endif + #include #include #include diff -ur icu.org/source/i18n/number_decimalquantity.cpp icu/source/i18n/number_decimalquantity.cpp --- icu.org/source/i18n/number_decimalquantity.cpp 2018-10-02 00:39:56.000000000 +0200 +++ icu/source/i18n/number_decimalquantity.cpp 2018-10-20 00:33:36.560130873 +0200 @@ -432,7 +432,7 @@ for (; i <= -22; i += 22) n /= 1e22; n /= DOUBLE_MULTIPLIERS[-i]; } - auto result = static_cast(std::round(n)); + auto result = static_cast(round(n)); if (result != 0) { _setToLong(result); scale -= fracLength;