diff options
Diffstat (limited to 'intl/icu-patches')
-rw-r--r-- | intl/icu-patches/bug-1198952-workaround-make-3.82-bug.diff | 42 | ||||
-rw-r--r-- | intl/icu-patches/bug-1433303-minimize-subtags.diff | 45 | ||||
-rw-r--r-- | intl/icu-patches/bug-1534160-android-timezone.diff | 112 | ||||
-rw-r--r-- | intl/icu-patches/bug-1614941-dsb-hsb-dates.diff | 54 | ||||
-rw-r--r-- | intl/icu-patches/bug-1636984-alias-append-items-sink.diff | 33 | ||||
-rw-r--r-- | intl/icu-patches/bug-1636984-append-item-dayperiod-fractional-seconds.diff | 86 | ||||
-rw-r--r-- | intl/icu-patches/bug-1636984-display-name-fractional-seconds.diff | 39 | ||||
-rw-r--r-- | intl/icu-patches/bug-915735 | 28 | ||||
-rw-r--r-- | intl/icu-patches/suppress-warnings.diff | 80 |
9 files changed, 519 insertions, 0 deletions
diff --git a/intl/icu-patches/bug-1198952-workaround-make-3.82-bug.diff b/intl/icu-patches/bug-1198952-workaround-make-3.82-bug.diff new file mode 100644 index 0000000000..dc4f4e2692 --- /dev/null +++ b/intl/icu-patches/bug-1198952-workaround-make-3.82-bug.diff @@ -0,0 +1,42 @@ +diff --git a/intl/icu/source/Makefile.in b/intl/icu/source/Makefile.in +--- a/intl/icu/source/Makefile.in ++++ b/intl/icu/source/Makefile.in +@@ -134,32 +134,36 @@ endif + + LOCAL_SUBDIRS = $(SUBDIRS) + CLEAN_FIRST_SUBDIRS = $(TOOLS) + + $(LIBDIR) $(BINDIR): + -$(MKINSTALLDIRS) $@ + + ## Recursive targets ++## Strictly speaking, the $(MAKEOVERRIDES) is not necessary when recursing, but ++## there is a bug in GNU make 3.82 that throws away the original overrides in ++## favor of RECURSIVE=YES when the submake in the subdirectory restarts itself ++## after dependency files have been created. + all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive check-exhaustive-recursive: $(LIBDIR) $(BINDIR) + ifneq ($(NEED_ESCAPING),) + @echo "building tools/escapesrc (Needed for this platform with NEED_ESCAPING)" +- @(cd tools/escapesrc && $(MAKE) RECURSIVE=YES $$local_target) || exit ++ @(cd tools/escapesrc && $(MAKE) $(MAKEOVERRIDES) RECURSIVE=YES $$local_target) || exit + endif + @dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(LOCAL_SUBDIRS)'; for subdir in $$list; do \ + echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-local"; \ + else \ + local_target="$$target"; \ + fi; \ +- (cd $$subdir && $(MAKE) RECURSIVE=YES $$local_target) || exit; \ ++ (cd $$subdir && $(MAKE) $(MAKEOVERRIDES) RECURSIVE=YES $$local_target) || exit; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) "$$target-local" || exit; \ + fi + + clean-recursive-with-twist: + $(MAKE) clean-recursive LOCAL_SUBDIRS='$(CLEAN_FIRST_SUBDIRS) $(filter-out $(CLEAN_FIRST_SUBDIRS),$(LOCAL_SUBDIRS))' + diff --git a/intl/icu-patches/bug-1433303-minimize-subtags.diff b/intl/icu-patches/bug-1433303-minimize-subtags.diff new file mode 100644 index 0000000000..ed3d9861e0 --- /dev/null +++ b/intl/icu-patches/bug-1433303-minimize-subtags.diff @@ -0,0 +1,45 @@ +# Handle empty string results when calling createLikelySubtagsString() for _uloc_minimizeSubtags(). +# +# ICU bug: https://ssl.icu-project.org/trac/ticket/13786 + +diff --git a/intl/icu/source/common/loclikely.cpp b/intl/icu/source/common/loclikely.cpp +--- a/intl/icu/source/common/loclikely.cpp ++++ b/intl/icu/source/common/loclikely.cpp +@@ -1051,17 +1051,17 @@ _uloc_minimizeSubtags(const char* localeID, + 0, + sink, + err); + } + + if(U_FAILURE(*err)) { + goto error; + } +- else if (uprv_strnicmp( ++ else if (!tagBuffer.isEmpty() && uprv_strnicmp( + maximizedTagBuffer.data(), + tagBuffer.data(), + tagBuffer.length()) == 0) { + + createTagString( + lang, + langLength, + NULL, +@@ -1096,17 +1096,17 @@ _uloc_minimizeSubtags(const char* localeID, + 0, + sink, + err); + } + + if(U_FAILURE(*err)) { + goto error; + } +- else if (uprv_strnicmp( ++ else if (!tagBuffer.isEmpty() && uprv_strnicmp( + maximizedTagBuffer.data(), + tagBuffer.data(), + tagBuffer.length()) == 0) { + + createTagString( + lang, + langLength, + script, diff --git a/intl/icu-patches/bug-1534160-android-timezone.diff b/intl/icu-patches/bug-1534160-android-timezone.diff new file mode 100644 index 0000000000..e9c997e812 --- /dev/null +++ b/intl/icu-patches/bug-1534160-android-timezone.diff @@ -0,0 +1,112 @@ +commit 6099f062f5d0e79586149d9a8963525a59f89557 +Author: Makoto Kato <m_kato@ga2.so-net.ne.jp> +Date: Fri Nov 22 16:51:30 2019 +0900 + + ICU-11992 uprv_tzname doesn't return valid time zone on Android + +# ICU bug report: +# https://unicode-org.atlassian.net/browse/ICU-11992 +# +# Pull request: +# https://github.com/unicode-org/icu/pull/605 +# +# Commit: +# https://github.com/unicode-org/icu/commit/c9037ca8d3c0738f1a044dd845bdc0dc646f3e97.patch + +diff --git a/intl/icu/source/common/putil.cpp b/intl/icu/source/common/putil.cpp +--- a/intl/icu/source/common/putil.cpp ++++ b/intl/icu/source/common/putil.cpp +@@ -116,15 +116,19 @@ + # include <unistd.h> + # if U_PLATFORM == U_PF_SOLARIS + # ifndef _XPG4_2 + # define _XPG4_2 + # endif ++# elif U_PLATFORM == U_PF_ANDROID ++# include <sys/system_properties.h> ++# include <dlfcn.h> + # endif + #elif U_PLATFORM == U_PF_QNX + # include <sys/neutrino.h> + #endif + ++ + /* + * Only include langinfo.h if we have a way to get the codeset. If we later + * depend on more feature, we can test on U_HAVE_NL_LANGINFO. + * + */ +@@ -1041,13 +1045,57 @@ static char* searchForTZFile(const char* path, DefaultTZInfo* tzInfo) { + } + return result; + } + #endif + ++#if U_PLATFORM == U_PF_ANDROID ++typedef int(system_property_read_callback)(const prop_info* info, ++ void (*callback)(void* cookie, ++ const char* name, ++ const char* value, ++ uint32_t serial), ++ void* cookie); ++typedef int(system_property_get)(const char*, char*); ++ ++static char gAndroidTimeZone[PROP_VALUE_MAX] = { '\0' }; ++ ++static void u_property_read(void* cookie, const char* name, const char* value, ++ uint32_t serial) { ++ uprv_strcpy((char* )cookie, value); ++} ++#endif ++ + U_CAPI void U_EXPORT2 + uprv_tzname_clear_cache() + { ++#if U_PLATFORM == U_PF_ANDROID ++ /* Android's timezone is stored in system property. */ ++ gAndroidTimeZone[0] = '\0'; ++ void* libc = dlopen("libc.so", RTLD_NOLOAD); ++ if (libc) { ++ /* Android API 26+ has new API to get system property and old API ++ * (__system_property_get) is deprecated */ ++ system_property_read_callback* property_read_callback = ++ (system_property_read_callback*)dlsym( ++ libc, "__system_property_read_callback"); ++ if (property_read_callback) { ++ const prop_info* info = ++ __system_property_find("persist.sys.timezone"); ++ if (info) { ++ property_read_callback(info, &u_property_read, gAndroidTimeZone); ++ } ++ } else { ++ system_property_get* property_get = ++ (system_property_get*)dlsym(libc, "__system_property_get"); ++ if (property_get) { ++ property_get("persist.sys.timezone", gAndroidTimeZone); ++ } ++ } ++ dlclose(libc); ++ } ++#endif ++ + #if defined(CHECK_LOCALTIME_LINK) && !defined(DEBUG_SKIP_LOCALTIME_LINK) + gTimeZoneBufferPtr = NULL; + #endif + } + +@@ -1082,11 +1130,15 @@ uprv_tzname(int n) + } + #endif*/ + + /* This code can be temporarily disabled to test tzname resolution later on. */ + #ifndef DEBUG_TZNAME ++#if U_PLATFORM == U_PF_ANDROID ++ tzid = gAndroidTimeZone; ++#else + tzid = getenv("TZ"); ++#endif + if (tzid != NULL && isValidOlsonID(tzid) + #if U_PLATFORM == U_PF_SOLARIS + /* When TZ equals localtime on Solaris, check the /etc/localtime file. */ + && uprv_strcmp(tzid, TZ_ENV_CHECK) != 0 + #endif diff --git a/intl/icu-patches/bug-1614941-dsb-hsb-dates.diff b/intl/icu-patches/bug-1614941-dsb-hsb-dates.diff new file mode 100644 index 0000000000..cd3cdda8d3 --- /dev/null +++ b/intl/icu-patches/bug-1614941-dsb-hsb-dates.diff @@ -0,0 +1,54 @@ +diff --git a/intl/icu/source/data/locales/dsb.txt b/intl/icu/source/data/locales/dsb.txt +--- a/intl/icu/source/data/locales/dsb.txt ++++ b/intl/icu/source/data/locales/dsb.txt +@@ -351,7 +351,10 @@ dsb{ + MEd{"E, d.M."} + MMM{"LLL"} + MMMEd{"E, d. MMM"} ++ MMMMd{"d. MMMM"} + MMMd{"d. MMM"} ++ MMd{"d. MM"} ++ MMdd{"dd. MM"} + Md{"d.M."} + d{"d"} + h{"h a"} +@@ -361,9 +364,12 @@ dsb{ + y{"y"} + yM{"M.y"} + yMEd{"E, d.M.y"} ++ yMM{"MM y"} + yMMM{"MMM y"} + yMMMEd{"E, d. MMM y"} ++ yMMMM{"MMMM y"} + yMMMd{"d. MMM y"} ++ yMMdd{"dd. MM y"} + yMd{"d.M.y"} + yQQQ{"QQQ y"} + yQQQQ{"QQQQ y"} +diff --git a/intl/icu/source/data/locales/hsb.txt b/intl/icu/source/data/locales/hsb.txt +--- a/intl/icu/source/data/locales/hsb.txt ++++ b/intl/icu/source/data/locales/hsb.txt +@@ -351,7 +351,10 @@ hsb{ + MEd{"E, d.M."} + MMM{"LLL"} + MMMEd{"E, d. MMM"} ++ MMMMd{"d. MMMM"} + MMMd{"d. MMM"} ++ MMd{"d. MM"} ++ MMdd{"dd. MM"} + Md{"d.M."} + d{"d"} + h{"h a"} +@@ -361,9 +364,12 @@ hsb{ + y{"y"} + yM{"M.y"} + yMEd{"E, d.M.y"} ++ yMM{"MM y"} + yMMM{"MMM y"} + yMMMEd{"E, d. MMM y"} ++ yMMMM{"MMMM y"} + yMMMd{"d. MMM y"} ++ yMMdd{"dd. MM y"} + yMd{"d.M.y"} + yQQQ{"QQQ y"} + yQQQQ{"QQQQ y"} diff --git a/intl/icu-patches/bug-1636984-alias-append-items-sink.diff b/intl/icu-patches/bug-1636984-alias-append-items-sink.diff new file mode 100644 index 0000000000..61d6a36cb9 --- /dev/null +++ b/intl/icu-patches/bug-1636984-alias-append-items-sink.diff @@ -0,0 +1,33 @@ +# Handle "alias" entries in DateTimePatternGenerator::AppendItemNamesSink. +# +# ICU bug: https://unicode-org.atlassian.net/browse/ICU-20992 + +diff --git a/intl/icu/source/i18n/dtptngen.cpp b/intl/icu/source/i18n/dtptngen.cpp +--- a/intl/icu/source/i18n/dtptngen.cpp ++++ b/intl/icu/source/i18n/dtptngen.cpp +@@ -956,16 +956,25 @@ struct DateTimePatternGenerator::AppendI + virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/, + UErrorCode &errorCode) { + ResourceTable itemsTable = value.getTable(errorCode); + if (U_FAILURE(errorCode)) { return; } + for (int32_t i = 0; itemsTable.getKeyAndValue(i, key, value); ++i) { + UDateTimePGDisplayWidth width; + UDateTimePatternField field = dtpg.getFieldAndWidthIndices(key, &width); + if (field == UDATPG_FIELD_COUNT) { continue; } ++ ++ UResType type = value.getType(); ++ U_ASSERT(type == URES_TABLE || type == URES_ALIAS); ++ ++ // TODO: Implement support for alias types. ++ if (type == URES_ALIAS) { ++ continue; ++ } ++ + ResourceTable detailsTable = value.getTable(errorCode); + if (U_FAILURE(errorCode)) { return; } + for (int32_t j = 0; detailsTable.getKeyAndValue(j, key, value); ++j) { + if (uprv_strcmp(key, "dn") != 0) { continue; } + const UnicodeString& valueStr = value.getUnicodeString(errorCode); + if (dtpg.getFieldDisplayName(field,width).isEmpty() && !valueStr.isEmpty()) { + dtpg.setFieldDisplayName(field,width,valueStr); + } diff --git a/intl/icu-patches/bug-1636984-append-item-dayperiod-fractional-seconds.diff b/intl/icu-patches/bug-1636984-append-item-dayperiod-fractional-seconds.diff new file mode 100644 index 0000000000..32ba468950 --- /dev/null +++ b/intl/icu-patches/bug-1636984-append-item-dayperiod-fractional-seconds.diff @@ -0,0 +1,86 @@ +# Add <appendItem> entries for "DayPeriod" and "FractionalSeconds" to avoid the +# "├ ┤" parentheses from ICU and instead use the normal "( )" parentheses. +# +# CLDR bug: https://unicode-org.atlassian.net/browse/CLDR-13184 + +diff --git a/intl/icu/source/data/locales/root.txt b/intl/icu/source/data/locales/root.txt +--- a/intl/icu/source/data/locales/root.txt ++++ b/intl/icu/source/data/locales/root.txt +@@ -213,17 +213,19 @@ root{ + } + NoonMarker:alias{"/LOCALE/calendar/gregorian/NoonMarker"} + NoonMarkerNarrow:alias{"/LOCALE/calendar/gregorian/NoonMarkerNarrow"} + appendItems{ + Day{"{0} ({2}: {1})"} ++ DayPeriod{"{0} ({2}: {1})"} + Day-Of-Week{"{0} {1}"} + Era{"{1} {0}"} + Hour{"{0} ({2}: {1})"} + Minute{"{0} ({2}: {1})"} + Month{"{0} ({2}: {1})"} + Quarter{"{0} ({2}: {1})"} + Second{"{0} ({2}: {1})"} ++ FractionalSecond{"{0} ({2}: {1})"} + Timezone{"{0} {1}"} + Week{"{0} ({2}: {1})"} + Year{"{1} {0}"} + } + availableFormats{ +@@ -749,17 +751,19 @@ root{ + } + NoonMarker:alias{"/LOCALE/calendar/gregorian/NoonMarker"} + NoonMarkerNarrow:alias{"/LOCALE/calendar/gregorian/NoonMarkerNarrow"} + appendItems{ + Day{"{0} ({2}: {1})"} ++ DayPeriod{"{0} ({2}: {1})"} + Day-Of-Week{"{0} {1}"} + Era{"{1} {0}"} + Hour{"{0} ({2}: {1})"} + Minute{"{0} ({2}: {1})"} + Month{"{0} ({2}: {1})"} + Quarter{"{0} ({2}: {1})"} + Second{"{0} ({2}: {1})"} ++ FractionalSecond{"{0} ({2}: {1})"} + Timezone{"{0} {1}"} + Week{"{0} ({2}: {1})"} + Year{"{1} {0}"} + } + availableFormats{ +@@ -1018,17 +1022,19 @@ root{ + "{1} {0}", + "{1} {0}", + } + appendItems{ + Day{"{0} ({2}: {1})"} ++ DayPeriod{"{0} ({2}: {1})"} + Day-Of-Week{"{0} {1}"} + Era{"{1} {0}"} + Hour{"{0} ({2}: {1})"} + Minute{"{0} ({2}: {1})"} + Month{"{0} ({2}: {1})"} + Quarter{"{0} ({2}: {1})"} + Second{"{0} ({2}: {1})"} ++ FractionalSecond{"{0} ({2}: {1})"} + Timezone{"{0} {1}"} + Week{"{0} ({2}: {1})"} + Year{"{1} {0}"} + } + availableFormats{ +diff --git a/intl/icu/source/i18n/dtptngen.cpp b/intl/icu/source/i18n/dtptngen.cpp +--- a/intl/icu/source/i18n/dtptngen.cpp ++++ b/intl/icu/source/i18n/dtptngen.cpp +@@ -257,12 +257,12 @@ static const dtTypeElem dtTypes[] = { + {0, UDATPG_FIELD_COUNT, 0, 0, 0} , // last row of dtTypes[] + }; + + static const char* const CLDR_FIELD_APPEND[] = { + "Era", "Year", "Quarter", "Month", "Week", "*", "Day-Of-Week", +- "*", "*", "Day", "*", // The UDATPG_x_FIELD constants and these fields have a different order than in ICU4J +- "Hour", "Minute", "Second", "*", "Timezone" ++ "*", "*", "Day", "DayPeriod", // The UDATPG_x_FIELD constants and these fields have a different order than in ICU4J ++ "Hour", "Minute", "Second", "FractionalSecond", "Timezone" + }; + + static const char* const CLDR_FIELD_NAME[UDATPG_FIELD_COUNT] = { + "era", "year", "quarter", "month", "week", "weekOfMonth", "weekday", + "dayOfYear", "weekdayOfMonth", "day", "dayperiod", // The UDATPG_x_FIELD constants and these fields have a different order than in ICU4J diff --git a/intl/icu-patches/bug-1636984-display-name-fractional-seconds.diff b/intl/icu-patches/bug-1636984-display-name-fractional-seconds.diff new file mode 100644 index 0000000000..1e68a20b42 --- /dev/null +++ b/intl/icu-patches/bug-1636984-display-name-fractional-seconds.diff @@ -0,0 +1,39 @@ +# Give fractional seconds a more useful display name than "F14". +# +# CLDR bug: https://unicode-org.atlassian.net/browse/CLDR-13623 + +diff --git a/intl/icu/source/data/locales/root.txt b/intl/icu/source/data/locales/root.txt +--- a/intl/icu/source/data/locales/root.txt ++++ b/intl/icu/source/data/locales/root.txt +@@ -2527,10 +2527,15 @@ root{ + zone{ + dn{"Zone"} + } + zone-narrow:alias{"/LOCALE/fields/zone-short"} + zone-short:alias{"/LOCALE/fields/zone"} ++ fractionalSecond{ ++ dn{"Fractional Second"} ++ } ++ fractionalSecond-narrow:alias{"/LOCALE/fields/fractionalSecond-short"} ++ fractionalSecond-short:alias{"/LOCALE/fields/fractionalSecond"} + } + layout{ + characters{"left-to-right"} + lines{"top-to-bottom"} + } +diff --git a/intl/icu/source/i18n/dtptngen.cpp b/intl/icu/source/i18n/dtptngen.cpp +--- a/intl/icu/source/i18n/dtptngen.cpp ++++ b/intl/icu/source/i18n/dtptngen.cpp +@@ -264,11 +264,11 @@ static const char* const CLDR_FIELD_APPE + }; + + static const char* const CLDR_FIELD_NAME[UDATPG_FIELD_COUNT] = { + "era", "year", "quarter", "month", "week", "weekOfMonth", "weekday", + "dayOfYear", "weekdayOfMonth", "day", "dayperiod", // The UDATPG_x_FIELD constants and these fields have a different order than in ICU4J +- "hour", "minute", "second", "*", "zone" ++ "hour", "minute", "second", "fractionalSecond", "zone" + }; + + static const char* const CLDR_FIELD_WIDTH[] = { // [UDATPG_WIDTH_COUNT] + "", "-short", "-narrow" + }; diff --git a/intl/icu-patches/bug-915735 b/intl/icu-patches/bug-915735 new file mode 100644 index 0000000000..c713581f8e --- /dev/null +++ b/intl/icu-patches/bug-915735 @@ -0,0 +1,28 @@ +Bug 915735 - Fix linking the ICU libraries on Mac + +diff --git a/intl/icu/source/config/mh-darwin b/intl/icu/source/config/mh-darwin +--- a/intl/icu/source/config/mh-darwin ++++ b/intl/icu/source/config/mh-darwin +@@ -25,21 +25,17 @@ ARFLAGS += -c + COMPILE.c= $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -fno-common -c + COMPILE.cc= $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) -fno-common -c + + ## Commands to make a shared library + SHLIB.c= $(CC) -dynamiclib -dynamic $(CFLAGS) $(LDFLAGS) $(LD_SOOPTIONS) + SHLIB.cc= $(CXX) -dynamiclib -dynamic $(CXXFLAGS) $(LDFLAGS) $(LD_SOOPTIONS) + + ## Compiler switches to embed a library name and version information +-ifeq ($(ENABLE_RPATH),YES) +-LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(libdir)/$(notdir $(MIDDLE_SO_TARGET)) +-else +-LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(notdir $(MIDDLE_SO_TARGET)) $(PKGDATA_TRAILING_SPACE) +-endif ++LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name @executable_path/$(notdir $(MIDDLE_SO_TARGET)) $(PKGDATA_TRAILING_SPACE) + + ## Compiler switch to embed a runtime search path + LD_RPATH= + LD_RPATH_PRE= -Wl,-rpath, + + ## Environment variable to set a runtime search path + LDLIBRARYPATH_ENVVAR = DYLD_LIBRARY_PATH + diff --git a/intl/icu-patches/suppress-warnings.diff b/intl/icu-patches/suppress-warnings.diff new file mode 100644 index 0000000000..e124a1689d --- /dev/null +++ b/intl/icu-patches/suppress-warnings.diff @@ -0,0 +1,80 @@ +diff --git a/intl/icu/source/acinclude.m4 b/intl/icu/source/acinclude.m4 +--- a/intl/icu/source/acinclude.m4 ++++ b/intl/icu/source/acinclude.m4 +@@ -469,30 +469,36 @@ AC_DEFUN([AC_CHECK_STRICT_COMPILE], + *) + # Do not use -ansi. It limits us to C90, and it breaks some platforms. + # We use -std=c11 to disable the gnu99 defaults and its associated warnings + CFLAGS="$CFLAGS -std=c11" + ;; + esac + + CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings" ++ ++ # Suppress clang C warnings: ++ CFLAGS="$CFLAGS -Wno-sign-compare -Wno-unused" + else + case "${host}" in + *-*-cygwin) + if test "`$CC /help 2>&1 | head -c9`" = "Microsoft" + then + CFLAGS="$CFLAGS /W4" + fi ;; + *-*-mingw*) + CFLAGS="$CFLAGS -W4" ;; + esac + fi + if test "$GXX" = yes + then + CXXFLAGS="$CXXFLAGS -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long" ++ ++ # Suppress clang C++ warnings: ++ CXXFLAGS="$CXXFLAGS -Wno-unused -Wno-unused-parameter" + else + case "${host}" in + *-*-cygwin) + if test "`$CXX /help 2>&1 | head -c9`" = "Microsoft" + then + CXXFLAGS="$CXXFLAGS /W4" + fi ;; + *-*-mingw*) +diff --git a/intl/icu/source/configure b/intl/icu/source/configure +--- a/intl/icu/source/configure ++++ b/intl/icu/source/configure +@@ -4359,30 +4359,36 @@ fi + *) + # Do not use -ansi. It limits us to C90, and it breaks some platforms. + # We use -std=c11 to disable the gnu99 defaults and its associated warnings + CFLAGS="$CFLAGS -std=c11" + ;; + esac + + CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings" ++ ++ # Suppress clang C warnings: ++ CFLAGS="$CFLAGS -Wno-sign-compare -Wno-unused" + else + case "${host}" in + *-*-cygwin) + if test "`$CC /help 2>&1 | head -c9`" = "Microsoft" + then + CFLAGS="$CFLAGS /W4" + fi ;; + *-*-mingw*) + CFLAGS="$CFLAGS -W4" ;; + esac + fi + if test "$GXX" = yes + then + CXXFLAGS="$CXXFLAGS -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long" ++ ++ # Suppress clang C++ warnings: ++ CXXFLAGS="$CXXFLAGS -Wno-unused -Wno-unused-parameter" + else + case "${host}" in + *-*-cygwin) + if test "`$CXX /help 2>&1 | head -c9`" = "Microsoft" + then + CXXFLAGS="$CXXFLAGS /W4" + fi ;; + *-*-mingw*) |