summaryrefslogtreecommitdiff
path: root/external/icu/icu4c-android.patch.1
blob: b012b0c11cd2b994cdb2689793e7cae02156fa80 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
diff -ur icu.org/source/common/unicode/platform.h icu/source/common/unicode/platform.h
--- icu.org/source/common/unicode/platform.h	2018-10-02 00:39:56.000000000 +0200
+++ icu/source/common/unicode/platform.h	2018-10-20 00:36:24.598886605 +0200
@@ -789,7 +789,7 @@
 #elif defined(_MSC_VER) || (__has_declspec_attribute(dllexport) && __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 <android/compatibility.hxx>
+#endif
+
 #include <cmath>
 #include <cstdlib>
 #include <stdlib.h>
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<int64_t>(std::round(n));
+    auto result = static_cast<int64_t>(round(n));
     if (result != 0) {
         _setToLong(result);
         scale -= fracLength;