diff options
32 files changed, 482 insertions, 343 deletions
diff --git a/Makefile.fetch b/Makefile.fetch index 1191a82a83dc..5958db10db09 100644 --- a/Makefile.fetch +++ b/Makefile.fetch @@ -135,6 +135,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR) $(call fetch_Optional,HUNSPELL,HUNSPELL_TARBALL) \ $(call fetch_Optional,HYPHEN,HYPHEN_TARBALL) \ $(call fetch_Optional,ICU,ICU_TARBALL) \ + $(call fetch_Optional,ICU,ICU_DATA_TARBALL) \ $(call fetch_Optional,JFREEREPORT,JFREEREPORT_FLOW_ENGINE_TARBALL) \ $(call fetch_Optional,JFREEREPORT,JFREEREPORT_FLUTE_TARBALL) \ $(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBBASE_TARBALL) \ diff --git a/config_host.mk.in b/config_host.mk.in index 480e42fde112..6f2280d83d72 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -263,6 +263,7 @@ export ICU_MINOR=@ICU_MINOR@ export ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=@ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER@ export ICU_RECLASSIFIED_HEBREW_LETTER=@ICU_RECLASSIFIED_HEBREW_LETTER@ export ICU_RECLASSIFIED_PREPEND_SET_EMPTY=@ICU_RECLASSIFIED_PREPEND_SET_EMPTY@ +export ICU_UCHAR_TYPE=@ICU_UCHAR_TYPE@ export INTROSPECTION_SCANNER=@INTROSPECTION_SCANNER@ export ILIB=@ILIB@ export INSTALLDIR=@INSTALLDIR@ diff --git a/configure.ac b/configure.ac index ca5d0cd6b0b7..beb41ddc7d1b 100644 --- a/configure.ac +++ b/configure.ac @@ -9014,7 +9014,7 @@ SYSTEM_GENBRK= SYSTEM_GENCCODE= SYSTEM_GENCMN= -ICU_MAJOR=58 +ICU_MAJOR=59 ICU_MINOR=1 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE" ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE" @@ -9102,6 +9102,15 @@ else ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common" ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib" fi +if test "$ICU_MAJOR" -ge "59"; then + # As of ICU 59 it defaults to typedef char16_t UChar; which is available + # with -std=c++11 but not all external libraries can be built with that, + # for those use a bit-compatible typedef uint16_t UChar; see + # icu/source/common/unicode/umachine.h + ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t" +else + ICU_UCHAR_TYPE="" +fi AC_SUBST(SYSTEM_ICU) AC_SUBST(SYSTEM_GENBRK) AC_SUBST(SYSTEM_GENCCODE) @@ -9113,6 +9122,7 @@ AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER) AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER) AC_SUBST(ICU_CFLAGS) AC_SUBST(ICU_LIBS) +AC_SUBST(ICU_UCHAR_TYPE) dnl ================================================================== dnl Breakpad diff --git a/download.lst b/download.lst index 7f9658d85512..1361055c90b9 100644 --- a/download.lst +++ b/download.lst @@ -89,8 +89,10 @@ export HUNSPELL_SHA256SUM := 512e7d2ee69dad0b35ca011076405e56e0f10963a02d4859dbc export HUNSPELL_TARBALL := 047c3feb121261b76dc16cdb62f54483-hunspell-1.6.0.tar.gz export HYPHEN_SHA256SUM := 304636d4eccd81a14b6914d07b84c79ebb815288c76fe027b9ebff6ff24d5705 export HYPHEN_TARBALL := 5ade6ae2a99bc1e9e57031ca88d36dad-hyphen-2.8.8.tar.gz -export ICU_SHA256SUM := 0eb46ba3746a9c2092c8ad347a29b1a1b4941144772d13a88667a7b11ea30309 -export ICU_TARBALL := 1901302aaff1c1633ef81862663d2917-icu4c-58_1-src.tgz +export ICU_SHA256SUM := 7132fdaf9379429d004005217f10e00b7d2319d0fea22bdfddef8991c45b75fe +export ICU_TARBALL := icu4c-59_1-src.tgz +export ICU_DATA_SHA256SUM := 38a84c1289c32a96924ff286a2f33edc97671b4cc90e8c99708553a6b5a9e70a +export ICU_DATA_TARBALL := icu4c-59_1-data.zip export JFREEREPORT_FLOW_ENGINE_SHA256SUM := 233f66e8d25c5dd971716d4200203a612a407649686ef3b52075d04b4c9df0dd export JFREEREPORT_FLOW_ENGINE_TARBALL := ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip export JFREEREPORT_FLUTE_SHA256SUM := 1b5b24f7bc543c0362b667692f78db8bab4ed6dafc6172f104d0bd3757d8a133 diff --git a/external/firebird/ExternalProject_firebird.mk b/external/firebird/ExternalProject_firebird.mk index 361fffc86c64..988a24b5ed74 100644 --- a/external/firebird/ExternalProject_firebird.mk +++ b/external/firebird/ExternalProject_firebird.mk @@ -66,6 +66,7 @@ $(call gb_ExternalProject_get_state_target,firebird,build): -I$(call gb_UnpackedTarball_get_dir,icu)/source/i18n \ -I$(call gb_UnpackedTarball_get_dir,icu)/source/common \ ) \ + $(ICU_UCHAR_TYPE) \ $(if $(SYSTEM_LIBTOMMATH),$(LIBTOMMATH_CFLAGS), \ -L$(call gb_UnpackedTarball_get_dir,libtommath) \ ) \ diff --git a/external/harfbuzz/ExternalProject_harfbuzz.mk b/external/harfbuzz/ExternalProject_harfbuzz.mk index 53490abc2eaa..070c58ea80a7 100644 --- a/external/harfbuzz/ExternalProject_harfbuzz.mk +++ b/external/harfbuzz/ExternalProject_harfbuzz.mk @@ -47,7 +47,9 @@ $(call gb_ExternalProject_get_state_target,harfbuzz,build) : $(gb_COMPILERNOOPTFLAGS) $(gb_DEBUG_CFLAGS) \ $(gb_DEBUG_CXXFLAGS), \ $(gb_COMPILEROPTFLAGS)) \ - $(CXXFLAGS) $(if $(filter LINUX,$(OS)),-fvisibility=hidden)' \ + $(CXXFLAGS) \ + $(ICU_UCHAR_TYPE) \ + $(if $(filter LINUX,$(OS)),-fvisibility=hidden)' \ && (cd $(EXTERNAL_WORKDIR)/src && $(MAKE) lib) \ ) diff --git a/external/icu/UnpackedTarball_icu.mk b/external/icu/UnpackedTarball_icu.mk index fae37f5dd922..992001186d5f 100644 --- a/external/icu/UnpackedTarball_icu.mk +++ b/external/icu/UnpackedTarball_icu.mk @@ -11,22 +11,31 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,icu)) $(eval $(call gb_UnpackedTarball_set_tarball,icu,$(ICU_TARBALL))) +# Data zip contains data/... and needs to end up in icu/source/data/... +# Some files are overwritten with identical content. +# -a to convert line endings from CrLf to LF (hopefully no binary identified as +# text ...) so existing patches still apply and can be generated. +$(eval $(call gb_UnpackedTarball_set_pre_action,icu,\ + unzip -q -a -d source -o $(gb_UnpackedTarget_TARFILE_LOCATION)/$(ICU_DATA_TARBALL) \ +)) + $(eval $(call gb_UnpackedTarball_add_patches,icu,\ - external/icu/icu4c-build.patch \ - external/icu/icu4c-aix.patch \ - external/icu/icu4c-warnings.patch \ - external/icu/icu4c-macosx.patch \ - external/icu/icu4c-solarisgcc.patch \ - external/icu/icu4c-mkdir.patch \ - external/icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch \ - external/icu/icu-ubsan.patch.0 \ + external/icu/icu4c-build.patch.1 \ + external/icu/icu4c-aix.patch.1 \ + external/icu/icu4c-warnings.patch.1 \ + external/icu/icu4c-macosx.patch.1 \ + external/icu/icu4c-solarisgcc.patch.1 \ + external/icu/icu4c-mkdir.patch.1 \ + external/icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch.1 \ + external/icu/icu4c-ubsan.patch.1 \ external/icu/icu4c-icu11100.patch.1 \ - external/icu/icu4c-scriptrun.patch \ - external/icu/rtti.patch.0 \ - external/icu/clang-cl.patch.0 \ - $(if $(filter-out ANDROID,$(OS)),external/icu/icu4c-icudata-stdlibs.diff) \ - external/icu/khmerbreakengine.patch \ - external/icu/icu4c-changeset-39671.patch.1 \ + external/icu/icu4c-scriptrun.patch.1 \ + external/icu/icu4c-rtti.patch.1 \ + external/icu/icu4c-clang-cl.patch.1 \ + $(if $(filter-out ANDROID,$(OS)),external/icu/icu4c-icudata-stdlibs.patch.1) \ + external/icu/icu4c-khmerbreakengine.patch.1 \ + external/icu/icu4c-59-werror-undef.patch.1 \ + external/icu/icu4c-59-werror-shadow.patch.1 \ )) $(eval $(call gb_UnpackedTarball_add_file,icu,source/data/brkitr/khmerdict.dict,external/icu/khmerdict.dict)) diff --git a/external/icu/icu4c-59-werror-shadow.patch.1 b/external/icu/icu4c-59-werror-shadow.patch.1 new file mode 100644 index 000000000000..8d09e44025e3 --- /dev/null +++ b/external/icu/icu4c-59-werror-shadow.patch.1 @@ -0,0 +1,74 @@ +diff -ur icu.org/source/common/unicode/char16ptr.h icu/source/common/unicode/char16ptr.h +--- icu.org/source/common/unicode/char16ptr.h 2017-03-29 06:44:37.000000000 +0200 ++++ icu/source/common/unicode/char16ptr.h 2017-04-24 11:56:47.707572355 +0200 +@@ -107,14 +107,14 @@ + + #ifdef U_ALIASING_BARRIER + +-Char16Ptr::Char16Ptr(char16_t *p) : p(p) {} ++Char16Ptr::Char16Ptr(char16_t *p_) : p(p_) {} + #if !U_CHAR16_IS_TYPEDEF +-Char16Ptr::Char16Ptr(uint16_t *p) : p(cast(p)) {} ++Char16Ptr::Char16Ptr(uint16_t *p_) : p(cast(p_)) {} + #endif + #if U_SIZEOF_WCHAR_T==2 +-Char16Ptr::Char16Ptr(wchar_t *p) : p(cast(p)) {} ++Char16Ptr::Char16Ptr(wchar_t *p_) : p(cast(p_)) {} + #endif +-Char16Ptr::Char16Ptr(std::nullptr_t p) : p(p) {} ++Char16Ptr::Char16Ptr(std::nullptr_t p_) : p(p_) {} + Char16Ptr::~Char16Ptr() { + U_ALIASING_BARRIER(p); + } +@@ -215,14 +215,14 @@ + + #ifdef U_ALIASING_BARRIER + +-ConstChar16Ptr::ConstChar16Ptr(const char16_t *p) : p(p) {} ++ConstChar16Ptr::ConstChar16Ptr(const char16_t *p_) : p(p_) {} + #if !U_CHAR16_IS_TYPEDEF +-ConstChar16Ptr::ConstChar16Ptr(const uint16_t *p) : p(cast(p)) {} ++ConstChar16Ptr::ConstChar16Ptr(const uint16_t *p_) : p(cast(p_)) {} + #endif + #if U_SIZEOF_WCHAR_T==2 +-ConstChar16Ptr::ConstChar16Ptr(const wchar_t *p) : p(cast(p)) {} ++ConstChar16Ptr::ConstChar16Ptr(const wchar_t *p_) : p(cast(p_)) {} + #endif +-ConstChar16Ptr::ConstChar16Ptr(const std::nullptr_t p) : p(p) {} ++ConstChar16Ptr::ConstChar16Ptr(const std::nullptr_t p_) : p(p_) {} + ConstChar16Ptr::~ConstChar16Ptr() { + U_ALIASING_BARRIER(p); + } +diff -ur icu.org/source/common/unicode/unistr.h icu/source/common/unicode/unistr.h +--- icu.org/source/common/unicode/unistr.h 2017-03-29 06:44:37.000000000 +0200 ++++ icu/source/common/unicode/unistr.h 2017-04-24 11:59:51.782076511 +0200 +@@ -3080,11 +3080,11 @@ + * uint16_t * constructor. + * Delegates to UnicodeString(const char16_t *, int32_t). + * @param text UTF-16 string +- * @param length string length ++ * @param length_ string length + * @draft ICU 59 + */ +- UnicodeString(const uint16_t *text, int32_t length) : +- UnicodeString(ConstChar16Ptr(text), length) {} ++ UnicodeString(const uint16_t *text, int32_t length_) : ++ UnicodeString(ConstChar16Ptr(text), length_) {} + #endif + + /* +@@ -3097,11 +3097,11 @@ + * (Only defined if U_SIZEOF_WCHAR_T==2.) + * Delegates to UnicodeString(const char16_t *, int32_t). + * @param text NUL-terminated UTF-16 string +- * @param length string length ++ * @param length_ string length + * @draft ICU 59 + */ +- UnicodeString(const wchar_t *text, int32_t length) : +- UnicodeString(ConstChar16Ptr(text), length) {} ++ UnicodeString(const wchar_t *text, int32_t length_) : ++ UnicodeString(ConstChar16Ptr(text), length_) {} + #endif + + /* diff --git a/external/icu/icu4c-59-werror-undef.patch.1 b/external/icu/icu4c-59-werror-undef.patch.1 new file mode 100644 index 000000000000..196d78984a18 --- /dev/null +++ b/external/icu/icu4c-59-werror-undef.patch.1 @@ -0,0 +1,12 @@ +diff -ur icu.org/source/common/unicode/uvernum.h icu/source/common/unicode/uvernum.h +--- icu.org/source/common/unicode/uvernum.h 2017-03-21 02:03:49.000000000 +0100 ++++ icu/source/common/unicode/uvernum.h 2017-04-21 23:44:55.123597927 +0200 +@@ -125,7 +125,7 @@ + * This value will change in the subsequent releases of ICU + * @stable ICU 2.6 + */ +-#if U_PLATFORM_HAS_WINUWP_API == 0 ++#if !defined(U_PLATFORM_HAS_WINUWP_API) || (U_PLATFORM_HAS_WINUWP_API == 0) + #define U_ICU_VERSION_SHORT "59" + #else + // U_DISABLE_RENAMING does not impact dat file name diff --git a/external/icu/icu4c-aix.patch b/external/icu/icu4c-aix.patch.1 index f4a449f9b423..77982163b965 100644 --- a/external/icu/icu4c-aix.patch +++ b/external/icu/icu4c-aix.patch.1 @@ -1,6 +1,7 @@ ---- misc/icu/source/config/mh-aix-gcc 2010-06-24 20:58:16.000000000 -0500 -+++ misc/build/icu/source/config/mh-aix-gcc 2013-10-31 20:34:16.607982310 +0700 -@@ -13,84 +13,29 @@ +diff -ur icu.org/source/config/mh-aix-gcc icu/source/config/mh-aix-gcc +--- icu.org/source/config/mh-aix-gcc 2016-06-15 20:58:17.000000000 +0200 ++++ icu/source/config/mh-aix-gcc 2017-04-21 21:58:49.731432198 +0200 +@@ -18,84 +18,29 @@ GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS) GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS) @@ -97,7 +98,7 @@ ## Compilation rules %.$(STATIC_O): $(srcdir)/%.c -@@ -118,10 +63,10 @@ +@@ -123,10 +68,10 @@ [ -s $@ ] || rm -f $@' ## Versioned libraries rules @@ -112,9 +113,10 @@ ## BIR - bind with internal references [so app data and icu data doesn't collide] ---- misc/icu/source/tools/pkgdata/pkgdata.cpp 2013-04-06 20:56:00.935656635 +0100 -+++ misc/build/icu/source/tools/pkgdata/pkgdata.cpp 2013-10-31 20:38:10.623984554 +0700 -@@ -902,7 +902,7 @@ +diff -ur icu.org/source/tools/pkgdata/pkgdata.cpp icu/source/tools/pkgdata/pkgdata.cpp +--- icu.org/source/tools/pkgdata/pkgdata.cpp 2017-03-21 02:03:49.000000000 +0100 ++++ icu/source/tools/pkgdata/pkgdata.cpp 2017-04-21 21:58:49.732432195 +0200 +@@ -934,7 +934,7 @@ uprv_strcat(pkgDataFlags[SO_EXT], "."); uprv_strcat(pkgDataFlags[SO_EXT], pkgDataFlags[A_EXT]); @@ -123,7 +125,7 @@ sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s", libFileNames[LIB_FILE], FILE_EXTENSION_SEP, -@@ -1375,15 +1375,6 @@ +@@ -1407,15 +1407,6 @@ pkgDataFlags[LDICUDTFLAGS], targetDir, libFileNames[LIB_FILE_CYGWIN_VERSION], diff --git a/external/icu/icu4c-android.patch b/external/icu/icu4c-android.patch.1 index 0b320a8cad81..c62cf54e5936 100644 --- a/external/icu/icu4c-android.patch +++ b/external/icu/icu4c-android.patch.1 @@ -1,6 +1,19 @@ ---- misc/icu/source/config/mh-linux 2013-10-05 03:50:00.000000000 +0700 -+++ misc/build/icu/source/config/mh-linux 2013-11-10 17:11:46.856222557 +0700 -@@ -25,7 +25,7 @@ +diff -ur icu.org/source/common/unicode/platform.h icu/source/common/unicode/platform.h +--- icu.org/source/common/unicode/platform.h 2017-03-22 20:06:26.000000000 +0100 ++++ icu/source/common/unicode/platform.h 2017-04-21 22:32:31.656693147 +0200 +@@ -818,7 +818,7 @@ + #elif defined(U_STATIC_IMPLEMENTATION) + # define U_EXPORT + #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 2016-06-15 20:58:17.000000000 +0200 ++++ icu/source/config/mh-linux 2017-04-21 22:32:31.653693154 +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. @@ -9,9 +22,10 @@ #SH# # We can't depend on MIDDLE_SO_TARGET being set. #SH# LD_SONAME= ---- misc/icu/source/configure 2013-10-05 03:54:58.000000000 +0700 -+++ misc/build/icu/source/configure 2013-11-10 17:19:19.200218763 +0700 -@@ -4872,7 +4872,7 @@ +diff -ur icu.org/source/configure icu/source/configure +--- icu.org/source/configure 2017-04-07 09:40:30.000000000 +0200 ++++ icu/source/configure 2017-04-21 22:32:31.656693147 +0200 +@@ -5134,7 +5134,7 @@ else icu_cv_host_frag=mh-linux-va fi ;; @@ -20,7 +34,7 @@ i[34567]86-*-cygwin) if test "$GCC" = yes; then icu_cv_host_frag=mh-cygwin -@@ -6032,6 +6032,10 @@ +@@ -6358,6 +6358,10 @@ # Check to see if genccode can generate simple assembly. GENCCODE_ASSEMBLY= case "${host}" in @@ -31,7 +45,7 @@ *-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 -@@ -7104,6 +7108,10 @@ +@@ -7445,6 +7449,10 @@ # wchar_t can be used CHECK_UTF16_STRING_RESULT="available" ;; @@ -42,16 +56,3 @@ *) ;; esac - ---- misc/icu/source/common/unicode/platform.h 2013-10-05 03:49:10.000000000 +0700 -+++ misc/build/icu/source/common/unicode/platform.h 2013-11-10 17:22:27.160217186 +0700 -@@ -703,7 +703,7 @@ - #elif defined(U_STATIC_IMPLEMENTATION) - # define U_EXPORT - #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 --git a/external/icu/icu4c-build.patch b/external/icu/icu4c-build.patch.1 index 103e9aea5b64..6d9ade608cb5 100644 --- a/external/icu/icu4c-build.patch +++ b/external/icu/icu4c-build.patch.1 @@ -1,48 +1,7 @@ ---- misc/icu/source/tools/toolutil/pkg_genc.h -+++ misc/build/icu/source/tools/toolutil/pkg_genc.h -@@ -58,7 +58,7 @@ - #endif - - #define LARGE_BUFFER_MAX_SIZE 2048 --#define SMALL_BUFFER_MAX_SIZE 512 -+#define SMALL_BUFFER_MAX_SIZE 2048 - #define SMALL_BUFFER_FLAG_NAMES 32 - #define BUFFER_PADDING_SIZE 20 - ---- misc/icu/source/tools/toolutil/pkg_genc.c -+++ misc/build/icu/source/tools/toolutil/pkg_genc.c -@@ -152,6 +152,28 @@ - - ".long ","",HEX_0X - }, -+ {"gcc-android-arm", -+ "\t.arch armv5te\n" -+ "\t.fpu softvfp\n" -+ "\t.eabi_attribute 20, 1\n" -+ "\t.eabi_attribute 21, 1\n" -+ "\t.eabi_attribute 23, 3\n" -+ "\t.eabi_attribute 24, 1\n" -+ "\t.eabi_attribute 25, 1\n" -+ "\t.eabi_attribute 26, 2\n" -+ "\t.eabi_attribute 30, 6\n" -+ "\t.eabi_attribute 18, 4\n" -+ "\t.file \"%s.s\"\n" -+ "\t.global %s\n" -+ "\t.section .rodata\n" -+ "\t.align 2\n" -+ "\t.type %s, %%object\n" -+ "%s:\n", -+ -+ "\t.word ", -+ "\t.section .note.GNU-stack,\"\",%%progbits\n", -+ HEX_0X -+ }, - /* 16 bytes alignment. */ - /* http://docs.oracle.com/cd/E19641-01/802-1947/802-1947.pdf */ - {"sun", ---- misc/icu/source/config/mh-darwin 2010-09-29 20:37:36.000000000 +0200 -+++ misc/build/icu/source/config/mh-darwin 2011-03-15 10:56:26.653056004 +0100 -@@ -28,11 +28,7 @@ +diff -ur icu.org/source/config/mh-darwin icu/source/config/mh-darwin +--- icu.org/source/config/mh-darwin 2016-06-15 20:58:17.000000000 +0200 ++++ icu/source/config/mh-darwin 2017-04-21 21:30:23.584568210 +0200 +@@ -30,11 +30,7 @@ SHLIB.cc= $(CXX) -dynamiclib -dynamic $(CXXFLAGS) $(LDFLAGS) $(LD_SOOPTIONS) ## Compiler switches to embed a library name and version information @@ -55,7 +14,7 @@ ## Compiler switch to embed a runtime search path LD_RPATH= -@@ -48,10 +44,6 @@ +@@ -50,10 +46,6 @@ ## Non-shared intermediate object suffix STATIC_O = ao @@ -66,7 +25,7 @@ ## Compilation and dependency rules %.$(STATIC_O): $(srcdir)/%.c $(call SILENT_COMPILE,$(strip $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS)) -MMD -MT "$*.d $*.o $*.$(STATIC_O)" -o $@ $<) -@@ -65,16 +57,10 @@ +@@ -67,16 +59,10 @@ ## Versioned libraries rules @@ -86,3 +45,47 @@ ## Remove shared library 's' STATIC_PREFIX_WHEN_USED = +diff -ur icu.org/source/tools/toolutil/pkg_genc.cpp icu/source/tools/toolutil/pkg_genc.cpp +--- icu.org/source/tools/toolutil/pkg_genc.cpp 2017-04-13 11:46:02.000000000 +0200 ++++ icu/source/tools/toolutil/pkg_genc.cpp 2017-04-21 21:30:23.583568212 +0200 +@@ -160,6 +160,28 @@ + + ".long ","",HEX_0X + }, ++ {"gcc-android-arm", ++ "\t.arch armv5te\n" ++ "\t.fpu softvfp\n" ++ "\t.eabi_attribute 20, 1\n" ++ "\t.eabi_attribute 21, 1\n" ++ "\t.eabi_attribute 23, 3\n" ++ "\t.eabi_attribute 24, 1\n" ++ "\t.eabi_attribute 25, 1\n" ++ "\t.eabi_attribute 26, 2\n" ++ "\t.eabi_attribute 30, 6\n" ++ "\t.eabi_attribute 18, 4\n" ++ "\t.file \"%s.s\"\n" ++ "\t.global %s\n" ++ "\t.section .rodata\n" ++ "\t.align 2\n" ++ "\t.type %s, %%object\n" ++ "%s:\n", ++ ++ "\t.word ", ++ "\t.section .note.GNU-stack,\"\",%%progbits\n", ++ HEX_0X ++ }, + /* 16 bytes alignment. */ + /* http://docs.oracle.com/cd/E19641-01/802-1947/802-1947.pdf */ + {"sun", +diff -ur icu.org/source/tools/toolutil/pkg_genc.h icu/source/tools/toolutil/pkg_genc.h +--- icu.org/source/tools/toolutil/pkg_genc.h 2017-01-20 01:20:31.000000000 +0100 ++++ icu/source/tools/toolutil/pkg_genc.h 2017-04-21 21:30:23.582568215 +0200 +@@ -60,7 +60,7 @@ + #endif + + #define LARGE_BUFFER_MAX_SIZE 2048 +-#define SMALL_BUFFER_MAX_SIZE 512 ++#define SMALL_BUFFER_MAX_SIZE 2048 + #define SMALL_BUFFER_FLAG_NAMES 32 + #define BUFFER_PADDING_SIZE 20 + diff --git a/external/icu/clang-cl.patch.0 b/external/icu/icu4c-clang-cl.patch.1 index 4df5d0f56c83..9e287710a463 100644 --- a/external/icu/clang-cl.patch.0 +++ b/external/icu/icu4c-clang-cl.patch.1 @@ -1,19 +1,21 @@ ---- source/config/mh-cygwin-msvc -+++ source/config/mh-cygwin-msvc -@@ -51,8 +51,8 @@ +diff -ur icu.org/source/config/mh-cygwin-msvc icu/source/config/mh-cygwin-msvc +--- icu.org/source/config/mh-cygwin-msvc 2017-01-23 01:38:28.000000000 +0100 ++++ icu/source/config/mh-cygwin-msvc 2017-04-21 23:07:28.482892025 +0200 +@@ -55,8 +55,8 @@ LDFLAGS+=-nologo # Commands to compile -COMPILE.c= $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c -+COMPILE.c= true && $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c -COMPILE.cc= $(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c ++COMPILE.c= true && $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c +COMPILE.cc= true && $(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c # Commands to link LINK.c= LINK.EXE -subsystem:console $(LDFLAGS) ---- source/runConfigureICU -+++ source/runConfigureICU -@@ -259,8 +259,8 @@ +diff -ur icu.org/source/runConfigureICU icu/source/runConfigureICU +--- icu.org/source/runConfigureICU 2017-01-23 01:38:28.000000000 +0100 ++++ icu/source/runConfigureICU 2017-04-21 23:07:28.482892025 +0200 +@@ -261,8 +261,8 @@ Cygwin/MSVC) THE_OS="Windows with Cygwin" THE_COMP="Microsoft Visual C++" diff --git a/external/icu/icu4c-icu11100.patch.1 b/external/icu/icu4c-icu11100.patch.1 index 18bfe4f1c9c2..2f0e390961c1 100644 --- a/external/icu/icu4c-icu11100.patch.1 +++ b/external/icu/icu4c-icu11100.patch.1 @@ -1,6 +1,7 @@ ---- icu/source/common/ubidi.c.orig 2014-08-09 20:54:39.338833533 +0100 -+++ icu/source/common/ubidi.c 2014-08-09 20:55:48.625469055 +0100 -@@ -2096,6 +2096,14 @@ +diff -ur icu.org/source/common/ubidi.cpp icu/source/common/ubidi.cpp +--- icu.org/source/common/ubidi.cpp 2017-03-07 23:57:46.000000000 +0100 ++++ icu/source/common/ubidi.cpp 2017-04-21 22:55:11.352659142 +0200 +@@ -2125,6 +2125,14 @@ return DirProp_ON; } @@ -15,7 +16,7 @@ static void resolveImplicitLevels(UBiDi *pBiDi, int32_t start, int32_t limit, -@@ -2239,7 +2247,7 @@ +@@ -2271,7 +2279,7 @@ /* look for the last char not a BN or LRE/RLE/LRO/RLO/PDF */ for(i=limit-1; i>start&&(DIRPROP_FLAG(dirProps[i])&MASK_BN_EXPLICIT); i--); dirProp=dirProps[i]; diff --git a/external/icu/icu4c-icudata-stdlibs.diff b/external/icu/icu4c-icudata-stdlibs.patch.1 index 16bea7b4a995..c8d66c6ed06f 100644 --- a/external/icu/icu4c-icudata-stdlibs.diff +++ b/external/icu/icu4c-icudata-stdlibs.patch.1 @@ -1,8 +1,7 @@ -Index: icu-52~m1/source/config/mh-linux -=================================================================== ---- build/icu-52~m1.orig/source/config/mh-linux 2013-09-14 18:53:23.284040467 -0400 -+++ build/icu-52~m1/source/config/mh-linux 2013-09-14 18:53:23.284040467 -0400 -@@ -21,7 +21,9 @@ +diff -ur icu.org/source/config/mh-linux icu/source/config/mh-linux +--- icu.org/source/config/mh-linux 2017-04-21 23:09:57.588533707 +0200 ++++ icu/source/config/mh-linux 2017-04-21 23:11:38.075292226 +0200 +@@ -27,7 +27,9 @@ RPATHLDFLAGS=${LD_RPATH_PRE}'$$ORIGIN' ## These are the library specific LDFLAGS diff --git a/external/icu/khmerbreakengine.patch b/external/icu/icu4c-khmerbreakengine.patch.1 index 8f81f315da3e..74f60f866257 100644 --- a/external/icu/khmerbreakengine.patch +++ b/external/icu/icu4c-khmerbreakengine.patch.1 @@ -1,8 +1,7 @@ -diff --git a/source/common/dictbe.cpp b/source/common/dictbe.cpp -index f1c874d..3ad1b3f 100644 ---- misc/icu/source/common/dictbe.cpp -+++ build/icu/source/common/dictbe.cpp -@@ -27,8 +27,17 @@ U_NAMESPACE_BEGIN +diff -ur icu.org/source/common/dictbe.cpp icu/source/common/dictbe.cpp +--- icu.org/source/common/dictbe.cpp 2017-01-20 01:20:31.000000000 +0100 ++++ icu/source/common/dictbe.cpp 2017-04-21 23:14:23.845894374 +0200 +@@ -29,8 +29,17 @@ ****************************************************************** */ @@ -21,7 +20,7 @@ index f1c874d..3ad1b3f 100644 } DictionaryBreakEngine::~DictionaryBreakEngine() { -@@ -90,7 +99,7 @@ DictionaryBreakEngine::findBreaks( UText *text, +@@ -92,7 +101,7 @@ result = divideUpDictionaryRange(text, rangeStart, rangeEnd, foundBreaks); utext_setNativeIndex(text, current); } @@ -30,7 +29,7 @@ index f1c874d..3ad1b3f 100644 return result; } -@@ -101,6 +110,169 @@ DictionaryBreakEngine::setCharacters( const UnicodeSet &set ) { +@@ -103,6 +112,169 @@ fSet.compact(); } @@ -200,7 +199,7 @@ index f1c874d..3ad1b3f 100644 /* ****************************************************************** * PossibleWord -@@ -128,35 +302,35 @@ private: +@@ -130,35 +302,35 @@ public: PossibleWord() : count(0), prefix(0), offset(-1), mark(0), current(0) {}; ~PossibleWord() {}; @@ -245,7 +244,7 @@ index f1c874d..3ad1b3f 100644 // Dictionary leaves text after longest prefix, not longest word. Back up. if (count <= 0) { utext_setNativeIndex(text, start); -@@ -828,51 +1002,28 @@ foundBest: +@@ -830,51 +1002,28 @@ * KhmerBreakEngine */ @@ -308,14 +307,22 @@ index f1c874d..3ad1b3f 100644 } KhmerBreakEngine::~KhmerBreakEngine() { -@@ -884,180 +1036,204 @@ KhmerBreakEngine::divideUpDictionaryRange( UText *text, +@@ -886,180 +1035,204 @@ int32_t rangeStart, int32_t rangeEnd, UStack &foundBreaks ) const { - if ((rangeEnd - rangeStart) < KHMER_MIN_WORD_SPAN) { - return 0; // Not enough characters for two words +- } +- +- uint32_t wordsFound = 0; +- int32_t cpWordLength = 0; +- int32_t cuWordLength = 0; +- int32_t current; + uint32_t wordsFound = foundBreaks.size(); -+ UErrorCode status = U_ZERO_ERROR; + UErrorCode status = U_ZERO_ERROR; +- PossibleWord words[KHMER_LOOKAHEAD]; +- + int32_t before = 0; + int32_t after = 0; + int32_t finalBefore = 0; @@ -331,7 +338,7 @@ index f1c874d..3ad1b3f 100644 + --scanStart; + startZwsp = scanBeforeStart(text, scanStart, breakStart); + } -+ utext_setNativeIndex(text, rangeStart); + utext_setNativeIndex(text, rangeStart); + scanFwdClusters(text, rangeEnd, initAfter); + bool endZwsp = scanAfterEnd(text, utext_nativeLength(text), scanEnd, breakEnd); + utext_setNativeIndex(text, rangeEnd - 1); @@ -342,14 +349,8 @@ index f1c874d..3ad1b3f 100644 + if (breakEnd || fTypes < UBRK_LINE) + foundBreaks.push(rangeEnd, status); + return foundBreaks.size() - wordsFound; - } - -- uint32_t wordsFound = 0; -- int32_t cpWordLength = 0; -- int32_t cuWordLength = 0; -- int32_t current; -- UErrorCode status = U_ZERO_ERROR; -- PossibleWord words[KHMER_LOOKAHEAD]; ++ } ++ + scanStart = rangeStart; + scanWJ(text, scanStart, rangeEnd, before, after); + if (startZwsp || initAfter >= before) { @@ -361,43 +362,20 @@ index f1c874d..3ad1b3f 100644 + if (endZwsp && before > finalBefore) + before = finalBefore; - utext_setNativeIndex(text, rangeStart); -+ int32_t numCodePts = rangeEnd - rangeStart; -+ // bestSnlp[i] is the snlp of the best segmentation of the first i -+ // code points in the range to be matched. -+ UVector32 bestSnlp(numCodePts + 1, status); -+ bestSnlp.addElement(0, status); -+ for(int32_t i = 1; i <= numCodePts; i++) { -+ bestSnlp.addElement(kuint32max, status); -+ } - - while (U_SUCCESS(status) && (current = (int32_t)utext_getNativeIndex(text)) < rangeEnd) { - cuWordLength = 0; - cpWordLength = 0; -+ // prev[i] is the index of the last code point in the previous word in -+ // the best segmentation of the first i characters. Note negative implies -+ // that the code point is part of an unknown word. -+ UVector32 prev(numCodePts + 1, status); -+ for(int32_t i = 0; i <= numCodePts; i++) { -+ prev.addElement(kuint32max, status); -+ } - +- - // Look for candidate words at the current position - int32_t candidates = words[wordsFound%KHMER_LOOKAHEAD].candidates(text, fDictionary, rangeEnd); -+ const int32_t maxWordSize = 20; -+ UVector32 values(maxWordSize, status); -+ values.setSize(maxWordSize); -+ UVector32 lengths(maxWordSize, status); -+ lengths.setSize(maxWordSize); - +- - // If we found exactly one, use that - if (candidates == 1) { - cuWordLength = words[wordsFound % KHMER_LOOKAHEAD].acceptMarked(text); - cpWordLength = words[wordsFound % KHMER_LOOKAHEAD].markedCPLength(); - wordsFound += 1; - } -+ // Dynamic programming to find the best segmentation. - +- - // If there was more than one, see which one can take us forward the most words - else if (candidates > 1) { - // If we're already at the end of the range, we're done @@ -412,25 +390,12 @@ index f1c874d..3ad1b3f 100644 - words[wordsFound % KHMER_LOOKAHEAD].markCurrent(); - wordsMatched = 2; - } -+ // In outer loop, i is the code point index, -+ // ix is the corresponding string (code unit) index. -+ // They differ when the string contains supplementary characters. -+ int32_t ix = rangeStart; -+ for (int32_t i = 0; i < numCodePts; ++i, utext_setNativeIndex(text, ++ix)) { -+ if ((uint32_t)bestSnlp.elementAti(i) == kuint32max) { -+ continue; -+ } - +- - // If we're already at the end of the range, we're done - if ((int32_t)utext_getNativeIndex(text) >= rangeEnd) { - goto foundBest; - } -+ int32_t count; -+ count = fDictionary->matches(text, numCodePts - i, maxWordSize, -+ NULL, lengths.getBuffer(), values.getBuffer(), NULL, &fIgnoreSet, 2); -+ // Note: lengths is filled with code point lengths -+ // The NULL parameter is the ignored code unit lengths. - +- - // See if any of the possible second words is followed by a third word - do { - // If we find a third word, stop right away @@ -441,6 +406,47 @@ index f1c874d..3ad1b3f 100644 - } - while (words[(wordsFound + 1) % KHMER_LOOKAHEAD].backUp(text)); - } ++ utext_setNativeIndex(text, rangeStart); ++ int32_t numCodePts = rangeEnd - rangeStart; ++ // bestSnlp[i] is the snlp of the best segmentation of the first i ++ // code points in the range to be matched. ++ UVector32 bestSnlp(numCodePts + 1, status); ++ bestSnlp.addElement(0, status); ++ for(int32_t i = 1; i <= numCodePts; i++) { ++ bestSnlp.addElement(kuint32max, status); ++ } ++ ++ // prev[i] is the index of the last code point in the previous word in ++ // the best segmentation of the first i characters. Note negative implies ++ // that the code point is part of an unknown word. ++ UVector32 prev(numCodePts + 1, status); ++ for(int32_t i = 0; i <= numCodePts; i++) { ++ prev.addElement(kuint32max, status); ++ } ++ ++ const int32_t maxWordSize = 20; ++ UVector32 values(maxWordSize, status); ++ values.setSize(maxWordSize); ++ UVector32 lengths(maxWordSize, status); ++ lengths.setSize(maxWordSize); ++ ++ // Dynamic programming to find the best segmentation. ++ ++ // In outer loop, i is the code point index, ++ // ix is the corresponding string (code unit) index. ++ // They differ when the string contains supplementary characters. ++ int32_t ix = rangeStart; ++ for (int32_t i = 0; i < numCodePts; ++i, utext_setNativeIndex(text, ++ix)) { ++ if ((uint32_t)bestSnlp.elementAti(i) == kuint32max) { ++ continue; ++ } ++ ++ int32_t count; ++ count = fDictionary->matches(text, numCodePts - i, maxWordSize, ++ NULL, lengths.getBuffer(), values.getBuffer(), NULL, &fIgnoreSet, 2); ++ // Note: lengths is filled with code point lengths ++ // The NULL parameter is the ignored code unit lengths. ++ + for (int32_t j = 0; j < count; j++) { + int32_t ln = lengths.elementAti(j); + if (ln + i >= numCodePts) @@ -522,17 +528,27 @@ index f1c874d..3ad1b3f 100644 - if (cuWordLength <= 0) { - wordsFound += 1; - } +- +- // Update the length with the passed-over characters +- cuWordLength += chars; +- } +- else { +- // Back up to where we were for next iteration +- utext_setNativeIndex(text, current+cuWordLength); + } while (fMarkSet.contains(c) || fIgnoreSet.contains(c)); + values.setElementAt(BADSNLP, count); + lengths.setElementAt(utext_getNativeIndex(text) - currix, count++); + } else { + values.setElementAt(BADSNLP, count); + lengths.setElementAt(1, count++); -+ } -+ } + } + } -- // Update the length with the passed-over characters -- cuWordLength += chars; +- // Never stop before a combining mark. +- int32_t currPos; +- while ((currPos = (int32_t)utext_getNativeIndex(text)) < rangeEnd && fMarkSet.contains(utext_current32(text))) { +- utext_next32(text); +- cuWordLength += (int32_t)utext_getNativeIndex(text) - currPos; + for (int32_t j = 0; j < count; j++) { + uint32_t v = values.elementAti(j); + int32_t newSnlp = bestSnlp.elementAti(i) + v; @@ -543,10 +559,7 @@ index f1c874d..3ad1b3f 100644 + ++ln; + utext_next32(text); + c = utext_current32(text); - } -- else { -- // Back up to where we were for next iteration -- utext_setNativeIndex(text, current+cuWordLength); ++ } + int32_t ln_j_i = ln + i; // yes really i! + if (newSnlp < bestSnlp.elementAti(ln_j_i)) { + if (v == BADSNLP) { @@ -559,37 +572,9 @@ index f1c874d..3ad1b3f 100644 + else + prev.setElementAt(i, ln_j_i); + bestSnlp.setElementAt(newSnlp, ln_j_i); - } - } -+ } -+ // Start pushing the optimal offset index into t_boundary (t for tentative). -+ // prev[numCodePts] is guaranteed to be meaningful. -+ // We'll first push in the reverse order, i.e., -+ // t_boundary[0] = numCodePts, and afterwards do a swap. -+ UVector32 t_boundary(numCodePts+1, status); - -- // Never stop before a combining mark. -- int32_t currPos; -- while ((currPos = (int32_t)utext_getNativeIndex(text)) < rangeEnd && fMarkSet.contains(utext_current32(text))) { -- utext_next32(text); -- cuWordLength += (int32_t)utext_getNativeIndex(text) - currPos; -+ int32_t numBreaks = 0; -+ // No segmentation found, set boundary to end of range -+ while (numCodePts >= 0 && (uint32_t)bestSnlp.elementAti(numCodePts) == kuint32max) { -+ --numCodePts; -+ } -+ if (numCodePts < 0) { -+ t_boundary.addElement(numCodePts, status); -+ numBreaks++; -+ } else { -+ for (int32_t i = numCodePts; (uint32_t)i != kuint32max; i = prev.elementAti(i)) { -+ if (i < 0) i = -i; -+ t_boundary.addElement(i, status); -+ numBreaks++; ++ } } -+ U_ASSERT(prev.elementAti(t_boundary.elementAti(numBreaks - 1)) == 0); -+ } - +- - // Look ahead for possible suffixes if a dictionary word does not follow. - // We do this in code rather than using a rule so that the heuristic - // resynch continues to function. For example, one of the suffix characters @@ -631,6 +616,30 @@ index f1c874d..3ad1b3f 100644 - // Did we find a word on this iteration? If so, push it on the break stack - if (cuWordLength > 0) { - foundBreaks.push((current+cuWordLength), status); ++ } ++ // Start pushing the optimal offset index into t_boundary (t for tentative). ++ // prev[numCodePts] is guaranteed to be meaningful. ++ // We'll first push in the reverse order, i.e., ++ // t_boundary[0] = numCodePts, and afterwards do a swap. ++ UVector32 t_boundary(numCodePts+1, status); ++ ++ int32_t numBreaks = 0; ++ // No segmentation found, set boundary to end of range ++ while (numCodePts >= 0 && (uint32_t)bestSnlp.elementAti(numCodePts) == kuint32max) { ++ --numCodePts; ++ } ++ if (numCodePts < 0) { ++ t_boundary.addElement(numCodePts, status); ++ numBreaks++; ++ } else { ++ for (int32_t i = numCodePts; (uint32_t)i != kuint32max; i = prev.elementAti(i)) { ++ if (i < 0) i = -i; ++ t_boundary.addElement(i, status); ++ numBreaks++; ++ } ++ U_ASSERT(prev.elementAti(t_boundary.elementAti(numBreaks - 1)) == 0); ++ } ++ + // Now that we're done, convert positions in t_boundary[] (indices in + // the normalized input string) back to indices in the original input UText + // while reversing t_boundary and pushing values to foundBreaks. @@ -659,11 +668,10 @@ index f1c874d..3ad1b3f 100644 } #if !UCONFIG_NO_NORMALIZATION -diff --git a/source/common/dictbe.h b/source/common/dictbe.h -index d3488cd..26caa75 100644 ---- misc/icu/source/common/dictbe.h -+++ build/icu/source/common/dictbe.h -@@ -32,6 +32,15 @@ class Normalizer2; +diff -ur icu.org/source/common/dictbe.h icu/source/common/dictbe.h +--- icu.org/source/common/dictbe.h 2017-01-20 01:20:31.000000000 +0100 ++++ icu/source/common/dictbe.h 2017-04-21 23:14:23.845894374 +0200 +@@ -34,6 +34,15 @@ */ class DictionaryBreakEngine : public LanguageBreakEngine { private: @@ -679,7 +687,7 @@ index d3488cd..26caa75 100644 /** * The set of characters handled by this engine * @internal -@@ -46,11 +55,63 @@ class DictionaryBreakEngine : public LanguageBreakEngine { +@@ -48,11 +57,63 @@ uint32_t fTypes; @@ -746,7 +754,7 @@ index d3488cd..26caa75 100644 public: -@@ -81,7 +142,7 @@ class DictionaryBreakEngine : public LanguageBreakEngine { +@@ -83,7 +144,7 @@ * <p>Find any breaks within a run in the supplied text.</p> * * @param text A UText representing the text. The iterator is left at @@ -755,7 +763,7 @@ index d3488cd..26caa75 100644 * that starts from the first (or last) character in the range. * @param startPos The start of the run within the supplied text. * @param endPos The end of the run within the supplied text. -@@ -243,118 +304,120 @@ class LaoBreakEngine : public DictionaryBreakEngine { +@@ -245,118 +306,120 @@ }; @@ -988,11 +996,10 @@ index d3488cd..26caa75 100644 #if !UCONFIG_NO_NORMALIZATION /******************************************************************* -diff --git a/source/common/dictionarydata.cpp b/source/common/dictionarydata.cpp -index cb594c6..82f2e77 100644 ---- misc/icu/source/common/dictionarydata.cpp -+++ build/icu/source/common/dictionarydata.cpp -@@ -42,7 +42,7 @@ int32_t UCharsDictionaryMatcher::getType() const { +diff -ur icu.org/source/common/dictionarydata.cpp icu/source/common/dictionarydata.cpp +--- icu.org/source/common/dictionarydata.cpp 2017-01-20 01:20:31.000000000 +0100 ++++ icu/source/common/dictionarydata.cpp 2017-04-21 23:14:23.846894372 +0200 +@@ -44,7 +44,7 @@ int32_t UCharsDictionaryMatcher::matches(UText *text, int32_t maxLength, int32_t limit, int32_t *lengths, int32_t *cpLengths, int32_t *values, @@ -1001,7 +1008,7 @@ index cb594c6..82f2e77 100644 UCharsTrie uct(characters); int32_t startingTextIndex = (int32_t)utext_getNativeIndex(text); -@@ -53,7 +53,13 @@ int32_t UCharsDictionaryMatcher::matches(UText *text, int32_t maxLength, int32_t +@@ -55,7 +55,13 @@ UStringTrieResult result = (codePointsMatched == 0) ? uct.first(c) : uct.next(c); int32_t lengthMatched = (int32_t)utext_getNativeIndex(text) - startingTextIndex; codePointsMatched += 1; @@ -1015,7 +1022,7 @@ index cb594c6..82f2e77 100644 if (wordCount < limit) { if (values != NULL) { values[wordCount] = uct.getValue(); -@@ -110,7 +116,7 @@ int32_t BytesDictionaryMatcher::getType() const { +@@ -112,7 +118,7 @@ int32_t BytesDictionaryMatcher::matches(UText *text, int32_t maxLength, int32_t limit, int32_t *lengths, int32_t *cpLengths, int32_t *values, @@ -1024,7 +1031,7 @@ index cb594c6..82f2e77 100644 BytesTrie bt(characters); int32_t startingTextIndex = (int32_t)utext_getNativeIndex(text); int32_t wordCount = 0; -@@ -120,7 +126,13 @@ int32_t BytesDictionaryMatcher::matches(UText *text, int32_t maxLength, int32_t +@@ -122,7 +128,13 @@ UStringTrieResult result = (codePointsMatched == 0) ? bt.first(transform(c)) : bt.next(transform(c)); int32_t lengthMatched = (int32_t)utext_getNativeIndex(text) - startingTextIndex; codePointsMatched += 1; @@ -1038,11 +1045,10 @@ index cb594c6..82f2e77 100644 if (wordCount < limit) { if (values != NULL) { values[wordCount] = bt.getValue(); -diff --git a/source/common/dictionarydata.h b/source/common/dictionarydata.h -index 0216ab0..ee9e571 100644 ---- misc/icu/source/common/dictionarydata.h -+++ build/icu/source/common/dictionarydata.h -@@ -19,6 +19,7 @@ +diff -ur icu.org/source/common/dictionarydata.h icu/source/common/dictionarydata.h +--- icu.org/source/common/dictionarydata.h 2017-01-20 01:20:31.000000000 +0100 ++++ icu/source/common/dictionarydata.h 2017-04-21 23:14:23.846894372 +0200 +@@ -21,6 +21,7 @@ #include "unicode/utext.h" #include "unicode/udata.h" #include "udataswp.h" @@ -1050,7 +1056,7 @@ index 0216ab0..ee9e571 100644 #include "unicode/uobject.h" #include "unicode/ustringtrie.h" -@@ -90,7 +91,7 @@ public: +@@ -92,7 +93,7 @@ */ virtual int32_t matches(UText *text, int32_t maxLength, int32_t limit, int32_t *lengths, int32_t *cpLengths, int32_t *values, @@ -1059,7 +1065,7 @@ index 0216ab0..ee9e571 100644 /** @return DictionaryData::TRIE_TYPE_XYZ */ virtual int32_t getType() const = 0; -@@ -105,7 +106,7 @@ public: +@@ -107,7 +108,7 @@ virtual ~UCharsDictionaryMatcher(); virtual int32_t matches(UText *text, int32_t maxLength, int32_t limit, int32_t *lengths, int32_t *cpLengths, int32_t *values, @@ -1068,7 +1074,7 @@ index 0216ab0..ee9e571 100644 virtual int32_t getType() const; private: const UChar *characters; -@@ -123,7 +124,7 @@ public: +@@ -125,7 +126,7 @@ virtual ~BytesDictionaryMatcher(); virtual int32_t matches(UText *text, int32_t maxLength, int32_t limit, int32_t *lengths, int32_t *cpLengths, int32_t *values, @@ -1077,11 +1083,10 @@ index 0216ab0..ee9e571 100644 virtual int32_t getType() const; private: UChar32 transform(UChar32 c) const; -diff --git a/source/data/Makefile.in b/source/data/Makefile.in -index 816c82d..c637d70 100644 ---- misc/icu/source/data/Makefile.in -+++ build/icu/source/data/Makefile.in -@@ -181,7 +181,7 @@ endif +diff -ur icu.org/source/data/Makefile.in icu/source/data/Makefile.in +--- icu.org/source/data/Makefile.in 2017-04-21 23:13:03.248087545 +0200 ++++ icu/source/data/Makefile.in 2017-04-21 23:14:23.846894372 +0200 +@@ -183,7 +183,7 @@ endif endif @@ -1090,9 +1095,9 @@ index 816c82d..c637d70 100644 ifneq ($(ENABLE_STATIC),) ifeq ($(PKGDATA_MODE),dll) $(PKGDATA_INVOKE) $(PKGDATA) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) -m static $(PKGDATA_VERSIONING) $(PKGDATA_LIST) -@@ -564,8 +564,14 @@ $(BRKBLDDIR)/burmesedict.dict: $(TOOLBINDIR)/gendict$(TOOLEXEEXT) $(DAT_FILES) +@@ -567,8 +567,14 @@ $(INVOKE) $(TOOLBINDIR)/gendict --bytes --transform offset-0x1000 -c -i $(BUILDDIR) $(DICTSRCDIR)/burmesedict.txt $(BRKBLDDIR)/burmesedict.dict - + # TODO: figure out why combining characters are here? -$(BRKBLDDIR)/khmerdict.dict: $(TOOLBINDIR)/gendict$(TOOLEXEEXT) $(DAT_FILES) - $(INVOKE) $(TOOLBINDIR)/gendict --bytes --transform offset-0x1780 -c -i $(BUILDDIR) $(DICTSRCDIR)/khmerdict.txt $(BRKBLDDIR)/khmerdict.dict @@ -1104,7 +1109,6 @@ index 816c82d..c637d70 100644 +$(MAINBUILDDIR)/khmerdict.stamp: $(BRKSRCDIR)/khmerdict.dict build-local + cp $< $(BRKBLDDIR) + echo "timestamp" > $@ - + #################################################### CFU # CFU FILES - diff --git a/external/icu/icu4c-macosx.patch b/external/icu/icu4c-macosx.patch.1 index 8f9f9a75507e..fee08eb05771 100644 --- a/external/icu/icu4c-macosx.patch +++ b/external/icu/icu4c-macosx.patch.1 @@ -1,6 +1,7 @@ ---- misc/icu/source/common/putil.cpp -+++ misc/build/icu/source/common/putil.cpp -@@ -1111,8 +1111,16 @@ +diff -ur icu.org/source/common/putil.cpp icu/source/common/putil.cpp +--- icu.org/source/common/putil.cpp 2017-04-10 16:22:16.000000000 +0200 ++++ icu/source/common/putil.cpp 2017-04-21 22:14:09.940217733 +0200 +@@ -1198,8 +1198,16 @@ static const time_t decemberSolstice=1198332540; /*2007-12-22 06:09 UT*/ /* This probing will tell us when daylight savings occurs. */ @@ -17,4 +18,3 @@ if(decemberSol.tm_isdst > 0) { daylightType = U_DAYLIGHT_DECEMBER; } else if(juneSol.tm_isdst > 0) { - diff --git a/external/icu/icu4c-mkdir.patch b/external/icu/icu4c-mkdir.patch.1 index 094ddd5abca4..3234f151b677 100644 --- a/external/icu/icu4c-mkdir.patch +++ b/external/icu/icu4c-mkdir.patch.1 @@ -1,6 +1,7 @@ ---- misc/icu/source/dataMakefile.in.sav 2012-04-05 22:49:20.000000000 +0200 -+++ build/icu/source/data/Makefile.in 2012-12-04 14:24:40.548026700 +0100 -@@ -363,6 +363,7 @@ +diff -ur icu.org/source/data/Makefile.in icu/source/data/Makefile.in +--- icu.org/source/data/Makefile.in 2016-06-15 20:58:17.000000000 +0200 ++++ icu/source/data/Makefile.in 2017-04-21 22:29:00.747158002 +0200 +@@ -367,6 +367,7 @@ ifeq ($(PKGDATA_MODE),dll) SO_VERSION_DATA = $(OUTTMPDIR)/icudata.res $(SO_VERSION_DATA) : $(MISCSRCDIR)/icudata.rc diff --git a/external/icu/icu4c-rpath.patch b/external/icu/icu4c-rpath.patch.1 index ba1a82595aea..debbab1a6e3d 100644 --- a/external/icu/icu4c-rpath.patch +++ b/external/icu/icu4c-rpath.patch.1 @@ -1,6 +1,21 @@ ---- misc/icu/source/data/pkgdataMakefile.in 2010-12-22 23:44:02.000000000 +0100 -+++ misc/build/icu/source/data/pkgdataMakefile.in 2011-01-03 17:52:44.000000000 +0100 -@@ -15,6 +15,9 @@ include $(top_builddir)/icudefs.mk +diff -ur icu.org/source/config/mh-linux icu/source/config/mh-linux +--- icu.org/source/config/mh-linux 2016-06-15 20:58:17.000000000 +0200 ++++ icu/source/config/mh-linux 2017-04-21 22:38:18.893927819 +0200 +@@ -22,6 +22,10 @@ + LD_RPATH= -Wl,-zorigin,-rpath,'$$'ORIGIN + LD_RPATH_PRE = -Wl,-rpath, + ++## Force RPATH=$ORIGIN to locate own dependencies w/o need for LD_LIBRARY_PATH: ++ENABLE_RPATH=YES ++RPATHLDFLAGS=${LD_RPATH_PRE}'$$ORIGIN' ++ + ## These are the library specific LDFLAGS + LDFLAGSICUDT=-nodefaultlibs -nostdlib + +diff -ur icu.org/source/data/pkgdataMakefile.in icu/source/data/pkgdataMakefile.in +--- icu.org/source/data/pkgdataMakefile.in 2016-06-15 20:58:17.000000000 +0200 ++++ icu/source/data/pkgdataMakefile.in 2017-04-21 22:38:18.892927822 +0200 +@@ -17,6 +17,9 @@ OUTPUTFILE=icupkg.inc MIDDLE_SO_TARGET= @@ -10,7 +25,7 @@ all : clean @echo GENCCODE_ASSEMBLY_TYPE=$(GENCCODE_ASSEMBLY) >> $(OUTPUTFILE) @echo SO=$(SO) >> $(OUTPUTFILE) -@@ -24,7 +27,7 @@ all : clean +@@ -26,7 +29,7 @@ @echo LIB_EXT_ORDER=$(FINAL_SO_TARGET) >> $(OUTPUTFILE) @echo COMPILE="$(COMPILE.c)" >> $(OUTPUTFILE) @echo LIBFLAGS="-I$(top_srcdir)/common -I$(top_builddir)/common $(SHAREDLIBCPPFLAGS) $(SHAREDLIBCFLAGS)" >> $(OUTPUTFILE) @@ -19,17 +34,3 @@ @echo LDICUDTFLAGS=$(LDFLAGSICUDT) >> $(OUTPUTFILE) @echo LD_SONAME=$(LD_SONAME) >> $(OUTPUTFILE) @echo RPATH_FLAGS=$(RPATH_FLAGS) >> $(OUTPUTFILE) ---- misc/icu/source/config/mh-linux 2010-09-29 20:37:36.000000000 +0200 -+++ misc/build/icu/source/config/mh-linux 2011-03-15 10:56:26.653056004 +0100 -@@ -20,6 +20,10 @@ - LD_RPATH= -Wl,-zorigin,-rpath,'$$'ORIGIN - LD_RPATH_PRE = -Wl,-rpath, - -+## Force RPATH=$ORIGIN to locate own dependencies w/o need for LD_LIBRARY_PATH: -+ENABLE_RPATH=YES -+RPATHLDFLAGS=${LD_RPATH_PRE}'$$ORIGIN' -+ - ## These are the library specific LDFLAGS - LDFLAGSICUDT=-nodefaultlibs -nostdlib - - diff --git a/external/icu/icu4c-rtti.patch.1 b/external/icu/icu4c-rtti.patch.1 new file mode 100644 index 000000000000..c058c7f3c87e --- /dev/null +++ b/external/icu/icu4c-rtti.patch.1 @@ -0,0 +1,12 @@ +diff -ur icu.org/source/config/mh-linux icu/source/config/mh-linux +--- icu.org/source/config/mh-linux 2017-04-21 23:01:23.257769703 +0200 ++++ icu/source/config/mh-linux 2017-04-21 23:03:23.166481552 +0200 +@@ -36,7 +36,7 @@ + #SH# LD_SONAME= + + ## Shared library options +-LD_SOOPTIONS= -Wl,-Bsymbolic ++LD_SOOPTIONS= -Wl,-Bsymbolic-functions + + ## Shared object suffix + SO = so diff --git a/external/icu/icu4c-scriptrun.patch b/external/icu/icu4c-scriptrun.patch.1 index e307811acaad..fe81d19c846e 100644 --- a/external/icu/icu4c-scriptrun.patch +++ b/external/icu/icu4c-scriptrun.patch.1 @@ -1,6 +1,7 @@ ---- misc/icu/source/extra/scrptrun/scrptrun.cpp -+++ misc/build/icu/source/extra/scrptrun/scrptrun.cpp -@@ -150,7 +150,11 @@ +diff -ur icu.org/source/extra/scrptrun/scrptrun.cpp icu/source/extra/scrptrun/scrptrun.cpp +--- icu.org/source/extra/scrptrun/scrptrun.cpp 2017-01-20 01:20:31.000000000 +0100 ++++ icu/source/extra/scrptrun/scrptrun.cpp 2017-04-21 22:59:31.708037770 +0200 +@@ -151,7 +151,11 @@ // characters above it on the stack will be poped. if (pairIndex >= 0) { if ((pairIndex & 1) == 0) { @@ -13,7 +14,7 @@ parenStack[parenSP].scriptCode = scriptCode; } else if (parenSP >= 0) { int32_t pi = pairIndex & ~1; -@@ -184,7 +188,14 @@ +@@ -185,7 +189,14 @@ // pop it from the stack if (pairIndex >= 0 && (pairIndex & 1) != 0 && parenSP >= 0) { parenSP -= 1; @@ -29,9 +30,10 @@ } } else { // if the run broke on a surrogate pair, ---- misc/icu/source/extra/scrptrun/scrptrun.h -+++ misc/build/icu/source/extra/scrptrun/scrptrun.h -@@ -17,6 +17,7 @@ +diff -ur icu.org/source/extra/scrptrun/scrptrun.h icu/source/extra/scrptrun/scrptrun.h +--- icu.org/source/extra/scrptrun/scrptrun.h 2017-01-20 01:20:31.000000000 +0100 ++++ icu/source/extra/scrptrun/scrptrun.h 2017-04-21 22:59:31.708037770 +0200 +@@ -19,6 +19,7 @@ #include "unicode/utypes.h" #include "unicode/uobject.h" #include "unicode/uscript.h" @@ -39,7 +41,7 @@ struct ScriptRecord { -@@ -79,7 +80,7 @@ +@@ -81,7 +82,7 @@ int32_t scriptEnd; UScriptCode scriptCode; @@ -48,7 +50,7 @@ int32_t parenSP; static int8_t highBit(int32_t value); -@@ -133,6 +134,7 @@ +@@ -135,6 +136,7 @@ scriptEnd = charStart; scriptCode = USCRIPT_INVALID_CODE; parenSP = -1; diff --git a/external/icu/icu4c-solarisgcc.patch b/external/icu/icu4c-solarisgcc.patch deleted file mode 100644 index a47d9b1e3506..000000000000 --- a/external/icu/icu4c-solarisgcc.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- build/icu.old/source/common/uposixdefs.h -+++ build/icu/source/common/uposixdefs.h -@@ -52,7 +52,7 @@ - * - * z/OS needs this definition for timeval and to get usleep. - */ --#if !defined(_XOPEN_SOURCE_EXTENDED) -+#if !defined(_XOPEN_SOURCE_EXTENDED) && (defined(__IBMC__) || defined(__IBMCPP__)) - # define _XOPEN_SOURCE_EXTENDED 1 - #endif - - diff --git a/external/icu/icu4c-solarisgcc.patch.1 b/external/icu/icu4c-solarisgcc.patch.1 new file mode 100644 index 000000000000..6000ed0cb9e2 --- /dev/null +++ b/external/icu/icu4c-solarisgcc.patch.1 @@ -0,0 +1,12 @@ +diff -ur icu.org/source/common/uposixdefs.h icu/source/common/uposixdefs.h +--- icu.org/source/common/uposixdefs.h 2017-03-09 03:12:45.000000000 +0100 ++++ icu/source/common/uposixdefs.h 2017-04-21 22:23:11.857926971 +0200 +@@ -54,7 +54,7 @@ + * + * z/OS needs this definition for timeval and to get usleep. + */ +-#if !defined(_XOPEN_SOURCE_EXTENDED) && defined(__TOS_MVS__) ++#if !defined(_XOPEN_SOURCE_EXTENDED) && (defined(__TOS_MVS__) || defined(__IBMC__) || defined(__IBMCPP__)) + # define _XOPEN_SOURCE_EXTENDED 1 + #endif + diff --git a/external/icu/icu-ubsan.patch.0 b/external/icu/icu4c-ubsan.patch.1 index f16503eeb4ac..56594005e9d0 100644 --- a/external/icu/icu-ubsan.patch.0 +++ b/external/icu/icu4c-ubsan.patch.1 @@ -1,6 +1,7 @@ ---- source/common/rbbidata.h -+++ source/common/rbbidata.h -@@ -113,7 +113,7 @@ +diff -ur icu.org/source/common/rbbidata.h icu/source/common/rbbidata.h +--- icu.org/source/common/rbbidata.h 2017-02-03 19:57:23.000000000 +0100 ++++ icu/source/common/rbbidata.h 2017-04-21 22:46:25.371651160 +0200 +@@ -115,7 +115,7 @@ /* StatusTable of the set of matching */ /* tags (rule status values) */ int16_t fReserved; @@ -9,7 +10,7 @@ /* This array does not have two elements */ /* Array Size is actually fData->fHeader->fCatCount */ /* CAUTION: see RBBITableBuilder::getTableSize() */ -@@ -126,7 +126,7 @@ +@@ -128,7 +128,7 @@ uint32_t fRowLen; /* Length of a state table row, in bytes. */ uint32_t fFlags; /* Option Flags for this state table */ uint32_t fReserved; /* reserved */ @@ -18,9 +19,10 @@ /* (making it char[] simplifies ugly address */ /* arithmetic for indexing variable length rows.) */ }; ---- source/common/rbbitblb.cpp -+++ source/common/rbbitblb.cpp -@@ -1067,15 +1067,15 @@ +diff -ur icu.org/source/common/rbbitblb.cpp icu/source/common/rbbitblb.cpp +--- icu.org/source/common/rbbitblb.cpp 2017-01-20 01:20:31.000000000 +0100 ++++ icu/source/common/rbbitblb.cpp 2017-04-21 22:46:25.373651159 +0200 +@@ -1095,15 +1095,15 @@ return 0; } @@ -40,7 +42,7 @@ size += numRows * rowSize; return size; } -@@ -1105,7 +1105,7 @@ +@@ -1133,7 +1133,7 @@ } table->fRowLen = sizeof(RBBIStateTableRow) + @@ -49,8 +51,9 @@ table->fNumStates = fDStates->size(); table->fFlags = 0; if (fRB->fLookAheadHardBreak) { ---- source/common/ubidiimp.h -+++ source/common/ubidiimp.h +diff -ur icu.org/source/common/ubidiimp.h icu/source/common/ubidiimp.h +--- icu.org/source/common/ubidiimp.h 2017-02-03 19:57:23.000000000 +0100 ++++ icu/source/common/ubidiimp.h 2017-04-21 22:46:25.374651159 +0200 @@ -198,8 +198,8 @@ /* in a Run, logicalStart will get this bit set if the run level is odd */ #define INDEX_ODD_BIT (1UL<<31) @@ -62,9 +65,10 @@ #define REMOVE_ODD_BIT(x) ((x)&=~INDEX_ODD_BIT) #define GET_INDEX(x) ((x)&~INDEX_ODD_BIT) ---- source/common/ucharstriebuilder.cpp -+++ source/common/ucharstriebuilder.cpp -@@ -285,7 +285,7 @@ +diff -ur icu.org/source/common/ucharstriebuilder.cpp icu/source/common/ucharstriebuilder.cpp +--- icu.org/source/common/ucharstriebuilder.cpp 2017-02-03 19:57:23.000000000 +0100 ++++ icu/source/common/ucharstriebuilder.cpp 2017-04-21 22:46:25.375651159 +0200 +@@ -287,7 +287,7 @@ UCharsTrieBuilder::UCTLinearMatchNode::UCTLinearMatchNode(const UChar *units, int32_t len, Node *nextNode) : LinearMatchNode(len, nextNode), s(units) { @@ -73,9 +77,10 @@ } UBool ---- source/common/ucmndata.c -+++ source/common/ucmndata.c -@@ -75,7 +75,7 @@ +diff -ur icu.org/source/common/ucmndata.cpp icu/source/common/ucmndata.cpp +--- icu.org/source/common/ucmndata.cpp 2017-03-08 16:34:47.000000000 +0100 ++++ icu/source/common/ucmndata.cpp 2017-04-21 22:46:25.376651159 +0200 +@@ -77,7 +77,7 @@ typedef struct { uint32_t count; uint32_t reserved; @@ -84,9 +89,10 @@ } PointerTOC; ---- source/common/ucmndata.h -+++ source/common/ucmndata.h -@@ -50,7 +50,7 @@ +diff -ur icu.org/source/common/ucmndata.h icu/source/common/ucmndata.h +--- icu.org/source/common/ucmndata.h 2017-01-20 01:20:31.000000000 +0100 ++++ icu/source/common/ucmndata.h 2017-04-21 22:46:25.377651159 +0200 +@@ -52,7 +52,7 @@ typedef struct { uint32_t count; @@ -95,9 +101,10 @@ } UDataOffsetTOC; /** ---- source/common/unicode/stringtriebuilder.h -+++ source/common/unicode/stringtriebuilder.h -@@ -269,7 +269,7 @@ +diff -ur icu.org/source/common/unicode/stringtriebuilder.h icu/source/common/unicode/stringtriebuilder.h +--- icu.org/source/common/unicode/stringtriebuilder.h 2017-03-10 23:01:34.000000000 +0100 ++++ icu/source/common/unicode/stringtriebuilder.h 2017-04-21 22:47:43.395634383 +0200 +@@ -276,7 +276,7 @@ void setValue(int32_t v) { hasValue=TRUE; value=v; @@ -106,7 +113,7 @@ } protected: UBool hasValue; -@@ -296,7 +296,7 @@ +@@ -307,7 +307,7 @@ class LinearMatchNode : public ValueNode { public: LinearMatchNode(int32_t len, Node *nextNode) @@ -115,7 +122,7 @@ length(len), next(nextNode) {} virtual UBool operator==(const Node &other) const; virtual int32_t markRightEdgesFirst(int32_t edgeNumber); -@@ -330,7 +330,7 @@ +@@ -342,7 +342,7 @@ equal[length]=NULL; values[length]=value; ++length; @@ -124,7 +131,7 @@ } // Adds a unit which leads to another match node. void add(int32_t c, Node *node) { -@@ -338,7 +338,7 @@ +@@ -350,7 +350,7 @@ equal[length]=node; values[length]=0; ++length; @@ -133,16 +140,16 @@ } protected: Node *equal[kMaxBranchLinearSubNodeLength]; // NULL means "has final value". -@@ -353,7 +353,7 @@ +@@ -365,7 +365,7 @@ class SplitBranchNode : public BranchNode { public: - SplitBranchNode(UChar middleUnit, Node *lessThanNode, Node *greaterOrEqualNode) + SplitBranchNode(char16_t middleUnit, Node *lessThanNode, Node *greaterOrEqualNode) - : BranchNode(((0x555555*37+middleUnit)*37+ + : BranchNode(((0x555555U*37+middleUnit)*37+ hashCode(lessThanNode))*37+hashCode(greaterOrEqualNode)), unit(middleUnit), lessThan(lessThanNode), greaterOrEqual(greaterOrEqualNode) {} virtual UBool operator==(const Node &other) const; -@@ -370,7 +370,7 @@ +@@ -382,7 +382,7 @@ class BranchHeadNode : public ValueNode { public: BranchHeadNode(int32_t len, Node *subNode) @@ -151,8 +158,9 @@ length(len), next(subNode) {} virtual UBool operator==(const Node &other) const; virtual int32_t markRightEdgesFirst(int32_t edgeNumber); ---- source/i18n/collationdatareader.cpp -+++ source/i18n/collationdatareader.cpp +diff -ur icu.org/source/i18n/collationdatareader.cpp icu/source/i18n/collationdatareader.cpp +--- icu.org/source/i18n/collationdatareader.cpp 2017-01-20 01:20:31.000000000 +0100 ++++ icu/source/i18n/collationdatareader.cpp 2017-04-21 22:46:25.380651158 +0200 @@ -419,6 +419,7 @@ tailoring.data, ts, fastLatinPrimaries, UPRV_LENGTHOF(fastLatinPrimaries)); if(options == ts.options && ts.variableTop != 0 && diff --git a/external/icu/icu4c-warnings.patch b/external/icu/icu4c-warnings.patch deleted file mode 100644 index 96608d7d1ef3..000000000000 --- a/external/icu/icu4c-warnings.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- misc/icu/source/common/unicode/utf16.h -+++ misc/build/icu/source/common/unicode/utf16.h -@@ -319,6 +319,7 @@ - (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \ - } else /* c>0x10ffff or not enough space */ { \ - (isError)=TRUE; \ -+ (void)(isError); \ - } \ - } - diff --git a/external/icu/icu4c-warnings.patch.1 b/external/icu/icu4c-warnings.patch.1 new file mode 100644 index 000000000000..3c39ba12ded7 --- /dev/null +++ b/external/icu/icu4c-warnings.patch.1 @@ -0,0 +1,11 @@ +diff -ur icu.org/source/common/unicode/utf16.h icu/source/common/unicode/utf16.h +--- icu.org/source/common/unicode/utf16.h 2017-02-03 19:57:23.000000000 +0100 ++++ icu/source/common/unicode/utf16.h 2017-04-21 22:05:57.414397617 +0200 +@@ -321,6 +321,7 @@ + (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \ + } else /* c>0x10ffff or not enough space */ { \ + (isError)=TRUE; \ ++ (void)(isError); \ + } \ + } + diff --git a/external/icu/rtti.patch.0 b/external/icu/rtti.patch.0 deleted file mode 100644 index 2af9622ec9ad..000000000000 --- a/external/icu/rtti.patch.0 +++ /dev/null @@ -1,11 +0,0 @@ ---- source/config/mh-linux -+++ source/config/mh-linux -@@ -35,7 +35,7 @@ - #SH# LD_SONAME= - - ## Shared library options --LD_SOOPTIONS= -Wl,-Bsymbolic -+LD_SOOPTIONS= -Wl,-Bsymbolic-functions - - ## Shared object suffix - SO = so diff --git a/external/libcdr/ExternalProject_libcdr.mk b/external/libcdr/ExternalProject_libcdr.mk index 86f93daf1b90..2cd41db242cd 100644 --- a/external/libcdr/ExternalProject_libcdr.mk +++ b/external/libcdr/ExternalProject_libcdr.mk @@ -36,7 +36,7 @@ $(call gb_ExternalProject_get_state_target,libcdr,build) : --disable-werror \ --disable-weffc \ $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \ - CXXFLAGS="$(CXXFLAGS) $(BOOST_CPPFLAGS) \ + CXXFLAGS="$(CXXFLAGS) $(ICU_UCHAR_TYPE) $(BOOST_CPPFLAGS) \ -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED" \ $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ && $(MAKE) \ diff --git a/external/libebook/ExternalProject_libebook.mk b/external/libebook/ExternalProject_libebook.mk index 45b15f2f5eb7..17065829014b 100644 --- a/external/libebook/ExternalProject_libebook.mk +++ b/external/libebook/ExternalProject_libebook.mk @@ -38,7 +38,7 @@ $(call gb_ExternalProject_get_state_target,libebook,build) : $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \ --disable-werror \ --disable-weffc \ - CXXFLAGS="$(CXXFLAGS) $(BOOST_CPPFLAGS) \ + CXXFLAGS="$(CXXFLAGS) $(ICU_UCHAR_TYPE) $(BOOST_CPPFLAGS) \ -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED" \ XML_CFLAGS="$(LIBXML_CFLAGS)" \ XML_LIBS="$(LIBXML_LIBS)" \ diff --git a/external/libfreehand/ExternalProject_libfreehand.mk b/external/libfreehand/ExternalProject_libfreehand.mk index 15a17072e872..f1bbacbb06e4 100644 --- a/external/libfreehand/ExternalProject_libfreehand.mk +++ b/external/libfreehand/ExternalProject_libfreehand.mk @@ -25,6 +25,7 @@ $(eval $(call gb_ExternalProject_use_externals,libfreehand,\ $(call gb_ExternalProject_get_state_target,libfreehand,build) : $(call gb_ExternalProject_run,build,\ export PKG_CONFIG="" \ + && export CXXFLAGS="$(CXXFLAGS) $(ICU_UCHAR_TYPE)" \ && MAKE=$(MAKE) ./configure \ --with-pic \ --enable-static \ diff --git a/external/libmspub/ExternalProject_libmspub.mk b/external/libmspub/ExternalProject_libmspub.mk index a168a62c636f..808d74b2f571 100644 --- a/external/libmspub/ExternalProject_libmspub.mk +++ b/external/libmspub/ExternalProject_libmspub.mk @@ -35,7 +35,7 @@ $(call gb_ExternalProject_get_state_target,libmspub,build) : --disable-werror \ --disable-weffc \ $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \ - CXXFLAGS="$(CXXFLAGS) $(BOOST_CPPFLAGS) \ + CXXFLAGS="$(CXXFLAGS) $(ICU_UCHAR_TYPE) $(BOOST_CPPFLAGS) \ -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED" \ $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ && $(MAKE) \ diff --git a/external/libvisio/ExternalProject_libvisio.mk b/external/libvisio/ExternalProject_libvisio.mk index 884fde820d00..2f212ceac249 100644 --- a/external/libvisio/ExternalProject_libvisio.mk +++ b/external/libvisio/ExternalProject_libvisio.mk @@ -35,7 +35,7 @@ $(call gb_ExternalProject_get_state_target,libvisio,build) : $(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \ --disable-werror \ $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \ - CXXFLAGS="$(CXXFLAGS) $(BOOST_CPPFLAGS)" \ + CXXFLAGS="$(CXXFLAGS) $(ICU_UCHAR_TYPE) $(BOOST_CPPFLAGS)" \ $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ && $(MAKE) \ ) |