From 9ec74c65ae44d2dfdad021c0a5f3c20a7410f003 Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Sun, 10 May 2015 20:26:31 +0000 Subject: [PATCH] icu: enable namespace renaming except for x86_gcc2. * also split patchset in two files, with one for gcc2 related changes. --- dev-libs/icu/icu-55.1.recipe | 13 +- dev-libs/icu/patches/icu-55.1.gcc2.patchset | 887 ++++++++++++++++++++ dev-libs/icu/patches/icu-55.1.patchset | 887 -------------------- 3 files changed, 898 insertions(+), 889 deletions(-) create mode 100644 dev-libs/icu/patches/icu-55.1.gcc2.patchset diff --git a/dev-libs/icu/icu-55.1.recipe b/dev-libs/icu/icu-55.1.recipe index 6ce586859..387fc2f25 100644 --- a/dev-libs/icu/icu-55.1.recipe +++ b/dev-libs/icu/icu-55.1.recipe @@ -8,7 +8,7 @@ SRC_URI_3="http://download.icu-project.org/files/icu4c/$portVersion/icu4c-55_1-d CHECKSUM_SHA256="e16b22cbefdd354bec114541f7849a12f8fc2015320ca5282ee4fd787571457b" CHECKSUM_SHA256_2="8b9f5008277f09e251e97dba7813f56168d691115bda90ade4638d72f296d531" CHECKSUM_SHA256_3="84ae6a6512b6f38b417497d05e4ed90d8fa7447b46db9905032354c8574b8f59" -REVISION="2" +REVISION="3" ARCHITECTURES="x86_gcc2 x86 x86_64 arm" SECONDARY_ARCHITECTURES="x86_gcc2 x86" @@ -47,6 +47,11 @@ BUILD_PREREQUIRES=" SOURCE_DIR="icu" PATCHES="icu-55.1.patchset" +if [ $effectiveTargetArchitecture = x86_gcc2 ]; then +PATCHES+=" + "icu-55.1.gcc2.patchset" + " +fi BUILD() { @@ -55,8 +60,12 @@ BUILD() unzip -oq ../../../sources-3/icu4c-*-data.zip rm -f data/in/icudt??l.dat autoconf + configureOption= + if [ $effectiveTargetArchitecture = x86_gcc2 ]; then + configureOption="--disable-renaming" + fi runConfigure ./configure \ - --disable-renaming --disable-samples --disable-extras + --disable-samples --disable-extras $configureOption make $jobArgs } diff --git a/dev-libs/icu/patches/icu-55.1.gcc2.patchset b/dev-libs/icu/patches/icu-55.1.gcc2.patchset new file mode 100644 index 000000000..6ea036171 --- /dev/null +++ b/dev-libs/icu/patches/icu-55.1.gcc2.patchset @@ -0,0 +1,887 @@ +From b545663a3d91c16233ce34181475d8fd84e47034 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sun, 19 Apr 2015 13:35:11 +0200 +Subject: gcc2 fixes for tools, tests, layout. + + +diff --git a/source/layout/LETableReference.h b/source/layout/LETableReference.h +index de51228..f55b762 100644 +--- a/source/layout/LETableReference.h ++++ b/source/layout/LETableReference.h +@@ -304,7 +304,11 @@ LE_TRACE_TR("INFO: new RTAO") + + le_uint32 getCount() const { return fCount; } + ++#if __GNUC__ == 2 ++ const T *getAlias() const { return LETableReference::getAlias(); } ++#else + using LETableReference::getAlias; ++#endif + + const T *getAlias(le_uint32 i, LEErrorCode &success) const { + return ((const T*)(((const char*)getAlias())+getOffsetFor(i, success))); +diff --git a/source/test/intltest/apicoll.cpp b/source/test/intltest/apicoll.cpp +index 31b16dd..3e2e4a8 100644 +--- a/source/test/intltest/apicoll.cpp ++++ b/source/test/intltest/apicoll.cpp +@@ -1971,7 +1971,22 @@ class TestCollator : public Collator + public: + virtual Collator* clone(void) const; + ++#if __GNUC__ == 2 ++ EComparisonResult compare (const UnicodeString& s1, const UnicodeString& s2) ++ const { ++ return Collator::compare(s1, s2); ++ } ++ EComparisonResult compare (const UnicodeString& s1, const UnicodeString& s2, ++ int32_t i) const { ++ return Collator::compare(s1, s2, i); ++ } ++ EComparisonResult compare (const UChar* s1, int32_t l1, const UChar* s2, ++ int32_t l2) const { ++ return Collator::compare(s1, l1, s2, l2); ++ } ++#else + using Collator::compare; ++#endif + + virtual UCollationResult compare(const UnicodeString& source, + const UnicodeString& target, +diff --git a/source/test/iotest/stream.cpp b/source/test/iotest/stream.cpp +index a821636..083b4ab 100644 +--- a/source/test/iotest/stream.cpp ++++ b/source/test/iotest/stream.cpp +@@ -131,7 +131,7 @@ static void U_CALLCONV TestStream(void) + #endif + UnicodeString ustr("string"); + +- outFormatStream << "1234567890" << setw(10) << left << ustr << " " << "0123456789"; ++ outFormatStream << "1234567890" << setw(10) << ios::left << ustr << " " << "0123456789"; + + #ifdef USE_SSTREAM + tempStr = outFormatStream.str(); +diff --git a/source/tools/toolutil/udbgutil.cpp b/source/tools/toolutil/udbgutil.cpp +index 911425c..cdd6683 100644 +--- a/source/tools/toolutil/udbgutil.cpp ++++ b/source/tools/toolutil/udbgutil.cpp +@@ -639,7 +639,9 @@ U_CAPI void udbg_knownIssue_close(void *ptr) { + #include + #include + #include ++#if __GNUC__ > 2 + #include ++#endif + #include + + class KnownIssues { +-- +2.2.2 + + +From 6cafed065f5d91859be09b8a219c1eaf5785d96d Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sun, 19 Apr 2015 13:35:47 +0200 +Subject: gcc2 fixes for sources/i18n + + +diff --git a/source/i18n/alphaindex.cpp b/source/i18n/alphaindex.cpp +index 9fa98b8..5535be2 100644 +--- a/source/i18n/alphaindex.cpp ++++ b/source/i18n/alphaindex.cpp +@@ -952,8 +952,8 @@ static int32_t U_CALLCONV + collatorComparator(const void *context, const void *left, const void *right) { + const UElement *leftElement = static_cast(left); + const UElement *rightElement = static_cast(right); +- const UnicodeString *leftString = static_cast(leftElement->pointer); +- const UnicodeString *rightString = static_cast(rightElement->pointer); ++ const UnicodeString *leftString = (const UnicodeString *)(leftElement->pointer); ++ const UnicodeString *rightString = (const UnicodeString *)(rightElement->pointer); + + if (leftString == rightString) { + // Catches case where both are NULL +@@ -977,8 +977,8 @@ static int32_t U_CALLCONV + recordCompareFn(const void *context, const void *left, const void *right) { + const UElement *leftElement = static_cast(left); + const UElement *rightElement = static_cast(right); +- const AlphabeticIndex::Record *leftRec = static_cast(leftElement->pointer); +- const AlphabeticIndex::Record *rightRec = static_cast(rightElement->pointer); ++ const AlphabeticIndex::Record *leftRec = (const AlphabeticIndex::Record *)(leftElement->pointer); ++ const AlphabeticIndex::Record *rightRec = (const AlphabeticIndex::Record *)(rightElement->pointer); + const Collator *col = static_cast(context); + UErrorCode errorCode = U_ZERO_ERROR; + return col->compare(leftRec->name_, rightRec->name_, errorCode); +diff --git a/source/i18n/currfmt.h b/source/i18n/currfmt.h +index b3f23e5..1495316 100644 +--- a/source/i18n/currfmt.h ++++ b/source/i18n/currfmt.h +@@ -58,7 +58,9 @@ class CurrencyFormat : public MeasureFormat { + virtual Format* clone() const; + + ++#if __GNUC__ > 2 + using MeasureFormat::format; ++#endif + + /** + * Override Format API. +diff --git a/source/i18n/digitlst.cpp b/source/i18n/digitlst.cpp +index 51738be..c003c4b 100644 +--- a/source/i18n/digitlst.cpp ++++ b/source/i18n/digitlst.cpp +@@ -38,7 +38,9 @@ + #include + #include + #include ++#if __GNUC__ > 2 + #include ++#endif + + // *************************************************************************** + // class DigitList +@@ -437,11 +439,15 @@ DigitList::getDouble() const + tDouble /= -1; + } + } else if (isInfinite()) { ++#if __GNUC__ <= 2 ++ tDouble = DBL_MAX; ++#else + if (std::numeric_limits::has_infinity) { + tDouble = std::numeric_limits::infinity(); + } else { + tDouble = std::numeric_limits::max(); + } ++#endif + if (!isPositive()) { + tDouble = -tDouble; //this was incorrectly "-fDouble" originally. + } +diff --git a/source/i18n/digitlst.h b/source/i18n/digitlst.h +index 7e98d2b..4a95d71 100644 +--- a/source/i18n/digitlst.h ++++ b/source/i18n/digitlst.h +@@ -413,7 +413,7 @@ private: + + public: + +-#if U_OVERRIDE_CXX_ALLOCATION ++#if U_OVERRIDE_CXX_ALLOCATION && __GNUC__ > 2 + using UMemory::operator new; + using UMemory::operator delete; + #else +diff --git a/source/i18n/msgfmt.cpp b/source/i18n/msgfmt.cpp +index 32d9bc7..e6ca5c1 100644 +--- a/source/i18n/msgfmt.cpp ++++ b/source/i18n/msgfmt.cpp +@@ -1484,6 +1484,7 @@ MessageFormat::parse(int32_t msgStart, + prevIndex=msgPattern.getPart(argLimit).getLimit(); + i=argLimit; + } ++ return NULL; + } + // ------------------------------------- + // Parses the source pattern and returns the Formattable objects array, +diff --git a/source/i18n/reldtfmt.h b/source/i18n/reldtfmt.h +index 67539e0..09f31e7 100644 +--- a/source/i18n/reldtfmt.h ++++ b/source/i18n/reldtfmt.h +@@ -81,7 +81,9 @@ public: + virtual UBool operator==(const Format& other) const; + + ++#if __GNUC__ > 2 + using DateFormat::format; ++#endif + + /** + * Format a date or time, which is the standard millis since 24:00 GMT, Jan +diff --git a/source/i18n/sortkey.cpp b/source/i18n/sortkey.cpp +index baf3254..838ea82 100644 +--- a/source/i18n/sortkey.cpp ++++ b/source/i18n/sortkey.cpp +@@ -172,7 +172,7 @@ Collator::EComparisonResult + CollationKey::compareTo(const CollationKey& target) const + { + UErrorCode errorCode = U_ZERO_ERROR; +- return static_cast(compareTo(target, errorCode)); ++ return (Collator::EComparisonResult)(compareTo(target, errorCode)); + } + + // Bitwise comparison for the collation keys. +diff --git a/source/i18n/unicode/choicfmt.h b/source/i18n/unicode/choicfmt.h +index cfd5206..d2b7f66 100644 +--- a/source/i18n/unicode/choicfmt.h ++++ b/source/i18n/unicode/choicfmt.h +@@ -355,7 +355,22 @@ public: + virtual const UnicodeString* getFormats(int32_t& count) const; + + ++#if __GNUC__ == 2 ++ virtual UnicodeString& format (double number, ++ icu::UnicodeString& appendTo) const { ++ return NumberFormat::format(number, appendTo); ++ } ++ UnicodeString& format(const Formattable& f, UnicodeString& s, ++ FieldPosition& p, UErrorCode& e) const { ++ return NumberFormat::format(f, s, p, e); ++ } ++ UnicodeString& format(const Formattable& f, UnicodeString& s, ++ UErrorCode& e) const { ++ return NumberFormat::format(f, s, e); ++ } ++#else + using NumberFormat::format; ++#endif + + /** + * Formats a double number using this object's choices. +@@ -421,7 +436,13 @@ public: + FieldPosition& pos, + UErrorCode& success) const; + ++#if __GNUC__ == 2 ++ void parse(UnicodeString& s, Formattable& f, UErrorCode& e) const { ++ NumberFormat::parse(s, f, e); ++ } ++#else + using NumberFormat::parse; ++#endif + + /** + * Looks for the longest match of any message string on the input text and, +diff --git a/source/i18n/unicode/compactdecimalformat.h b/source/i18n/unicode/compactdecimalformat.h +index bd8fdba..be2e580 100644 +--- a/source/i18n/unicode/compactdecimalformat.h ++++ b/source/i18n/unicode/compactdecimalformat.h +@@ -104,7 +104,13 @@ public: + virtual UBool operator==(const Format& other) const; + + ++#if __GNUC__ == 2 ++ UnicodeString& format(double n, UnicodeString& s) const { ++ return DecimalFormat::format(n, s); ++ } ++#else + using DecimalFormat::format; ++#endif + + /** + * Format a double or long number using base-10 representation. +diff --git a/source/i18n/unicode/datefmt.h b/source/i18n/unicode/datefmt.h +index 983f136..4531dc5 100644 +--- a/source/i18n/unicode/datefmt.h ++++ b/source/i18n/unicode/datefmt.h +@@ -221,7 +221,13 @@ public: + virtual UBool operator==(const Format&) const; + + ++#if __GNUC__ == 2 ++ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) const { ++ return Format::format(f, s, e); ++ } ++#else + using Format::format; ++#endif + + /** + * Format an object to produce a string. This method handles Formattable +diff --git a/source/i18n/unicode/decimfmt.h b/source/i18n/unicode/decimfmt.h +index 138855b..4ed2995 100644 +--- a/source/i18n/unicode/decimfmt.h ++++ b/source/i18n/unicode/decimfmt.h +@@ -918,7 +918,35 @@ public: + virtual UBool operator==(const Format& other) const; + + ++#if __GNUC__ == 2 ++ virtual UnicodeString& format (double number, ++ icu::UnicodeString& appendTo) const { ++ return NumberFormat::format(number, appendTo); ++ } ++ ++ virtual UnicodeString& format (double number, ++ icu::UnicodeString& appendTo, ++ UErrorCode& status) const { ++ return NumberFormat::format(number, appendTo, status); ++ } ++ ++ UnicodeString& format(const Formattable& f, UnicodeString& s, ++ FieldPositionIterator* i, UErrorCode& e) const { ++ return NumberFormat::format(f, s, i, e); ++ } ++ ++ UnicodeString& format(const Formattable& f, UnicodeString& s, ++ FieldPosition& p, UErrorCode& e) const { ++ return NumberFormat::format(f, s, p, e); ++ } ++ ++ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) ++ const { ++ return NumberFormat::format(f, s, e); ++ } ++#else + using NumberFormat::format; ++#endif + + /** + * Format a double or long number using base-10 representation. +@@ -1131,7 +1159,15 @@ public: + FieldPosition& pos, + UErrorCode& status) const; + ++#if __GNUC__ == 2 ++ void parse(const UnicodeString& text, ++ Formattable& result, ++ UErrorCode& status) const { ++ NumberFormat::parse(text, result, status); ++ } ++#else + using NumberFormat::parse; ++#endif + + /** + * Parse the given string using this object's choices. The method +diff --git a/source/i18n/unicode/dtitvfmt.h b/source/i18n/unicode/dtitvfmt.h +index fb27eec..8fefb9e 100644 +--- a/source/i18n/unicode/dtitvfmt.h ++++ b/source/i18n/unicode/dtitvfmt.h +@@ -373,7 +373,9 @@ public: + UBool operator!=(const Format& other) const; + + ++#if __GNUC__ > 2 + using Format::format; ++#endif + + /** + * Format an object to produce a string. This method handles Formattable +diff --git a/source/i18n/unicode/measfmt.h b/source/i18n/unicode/measfmt.h +index 61a1e86..0a272a8 100644 +--- a/source/i18n/unicode/measfmt.h ++++ b/source/i18n/unicode/measfmt.h +@@ -92,8 +92,25 @@ class DateFormat; + */ + class U_I18N_API MeasureFormat : public Format { + public: ++#if __GNUC__ == 2 ++ void parseObject (const UnicodeString& s, Formattable& f, UErrorCode& e) ++ const { ++ Format::parseObject(s, f, e); ++ } ++ ++ UnicodeString& format(const Formattable& f, UnicodeString& s, ++ FieldPositionIterator* i, UErrorCode& e) const { ++ return Format::format(f, s, i, e); ++ } ++ ++ UnicodeString& format(const Formattable& f, UnicodeString& s, ++ UErrorCode& e) const { ++ return Format::format(f, s, e); ++ } ++#else + using Format::parseObject; + using Format::format; ++#endif + + /** + * Constructor. +diff --git a/source/i18n/unicode/msgfmt.h b/source/i18n/unicode/msgfmt.h +index 5de91e4..8f9f995 100644 +--- a/source/i18n/unicode/msgfmt.h ++++ b/source/i18n/unicode/msgfmt.h +@@ -622,7 +622,17 @@ public: + virtual const Format** getFormats(int32_t& count) const; + + ++#if __GNUC__ == 2 ++ UnicodeString& format(const Formattable& f, UnicodeString& s, ++ FieldPositionIterator* i, UErrorCode& e) const { ++ return Format::format(f, s, i, e); ++ } ++ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) { ++ return Format::format(f, s, e); ++ } ++#else + using Format::format; ++#endif + + /** + * Formats the given array of arguments into a user-readable string. +@@ -884,6 +894,9 @@ private: + PluralRules* rules; + UPluralType type; + }; ++#if __GNUC__ == 2 ++ friend class PluralSelectorProvider; ++#endif + + /** + * A MessageFormat formats an array of arguments. Each argument +diff --git a/source/i18n/unicode/numfmt.h b/source/i18n/unicode/numfmt.h +index 164c657..4b03222 100644 +--- a/source/i18n/unicode/numfmt.h ++++ b/source/i18n/unicode/numfmt.h +@@ -235,7 +235,15 @@ public: + virtual UBool operator==(const Format& other) const; + + ++#if __GNUC__ == 2 ++ virtual UnicodeString& format (const Formattable& obj, ++ UnicodeString& appendTo, ++ UErrorCode & status) const { ++ return Format::format(obj, appendTo, status); ++ } ++#else + using Format::format; ++#endif + + /** + * Format an object to produce a string. This method handles +diff --git a/source/i18n/unicode/plurfmt.h b/source/i18n/unicode/plurfmt.h +index f7099d8..bedaf01 100644 +--- a/source/i18n/unicode/plurfmt.h ++++ b/source/i18n/unicode/plurfmt.h +@@ -313,7 +313,14 @@ public: + void applyPattern(const UnicodeString& pattern, UErrorCode& status); + + ++#if __GNUC__ == 2 ++ UnicodeString& format(const Formattable& f, UnicodeString& s, ++ FieldPositionIterator* i, UErrorCode& e) const { ++ return Format::format(f, s, i, e); ++ } ++#else + using Format::format; ++#endif + + /** + * Formats a plural message for a given number. +diff --git a/source/i18n/unicode/rbnf.h b/source/i18n/unicode/rbnf.h +index 7058c96..d0ad947 100644 +--- a/source/i18n/unicode/rbnf.h ++++ b/source/i18n/unicode/rbnf.h +@@ -741,7 +741,23 @@ public: + const Locale& locale = Locale::getDefault()); + + ++#if __GNUC__ == 2 ++ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) ++ const { ++ return NumberFormat::format(f, s, e); ++ } ++ ++ UnicodeString& format(double n, UnicodeString& s) const { ++ return NumberFormat::format(n, s); ++ } ++ ++ UnicodeString& format(int64_t n, UnicodeString& s, FieldPosition& p, ++ UErrorCode& e) const { ++ return NumberFormat::format(n, s, p, e); ++ } ++#else + using NumberFormat::format; ++#endif + + /** + * Formats the specified 32-bit number using the default ruleset. +@@ -827,7 +843,13 @@ public: + FieldPosition& pos, + UErrorCode& status) const; + ++#if __GNUC__ == 2 ++ void parse(const UnicodeString& s, Formattable& f, UErrorCode& e) const { ++ return NumberFormat::parse(s, f, e); ++ } ++#else + using NumberFormat::parse; ++#endif + + /** + * Parses the specfied string, beginning at the specified position, according +diff --git a/source/i18n/unicode/selfmt.h b/source/i18n/unicode/selfmt.h +index 635144b..7247839 100644 +--- a/source/i18n/unicode/selfmt.h ++++ b/source/i18n/unicode/selfmt.h +@@ -219,7 +219,9 @@ public: + void applyPattern(const UnicodeString& pattern, UErrorCode& status); + + ++#if __GNUC__ > 2 + using Format::format; ++#endif + + /** + * Selects the phrase for the given keyword +@@ -340,9 +342,9 @@ public: + */ + virtual UClassID getDynamicClassID() const; + +-private: + friend class MessageFormat; + ++private: + SelectFormat(); // default constructor not implemented. + + /** +diff --git a/source/i18n/unicode/smpdtfmt.h b/source/i18n/unicode/smpdtfmt.h +index ccdaff4..69f70ec 100644 +--- a/source/i18n/unicode/smpdtfmt.h ++++ b/source/i18n/unicode/smpdtfmt.h +@@ -870,7 +870,27 @@ public: + virtual UBool operator==(const Format& other) const; + + ++#if __GNUC__ == 2 ++ UnicodeString& format(const Formattable& f, UnicodeString& s, ++ FieldPositionIterator* i, UErrorCode& e) const { ++ return DateFormat::format(f, s, i, e); ++ } ++ UnicodeString& format(const Formattable& f, UnicodeString& s, FieldPosition& p, ++ UErrorCode& e) const { ++ return DateFormat::format(f, s, p, e); ++ } ++ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) const { ++ return Format::format(f, s, e); ++ } ++ UnicodeString& format(const UDate& d, UnicodeString& s, FieldPosition& f) const { ++ return DateFormat::format(d, s, f); ++ } ++ UnicodeString& format(const UDate& d, UnicodeString& s) const { ++ return DateFormat::format(d, s); ++ } ++#else + using DateFormat::format; ++#endif + + /** + * Format a date or time, which is the standard millis since 24:00 GMT, Jan +@@ -915,7 +935,16 @@ public: + FieldPositionIterator* posIter, + UErrorCode& status) const; + ++#if __GNUC__ == 2 ++ UDate parse(const UnicodeString& s, UErrorCode& e) const { ++ return DateFormat::parse(s, e); ++ } ++ UDate parse (const UnicodeString& s, ParsePosition& p) const { ++ return DateFormat::parse(s, p); ++ } ++#else + using DateFormat::parse; ++#endif + + /** + * Parse a date/time string beginning at the given parse position. For +diff --git a/source/i18n/unicode/tblcoll.h b/source/i18n/unicode/tblcoll.h +index e56f189..2108699 100644 +--- a/source/i18n/unicode/tblcoll.h ++++ b/source/i18n/unicode/tblcoll.h +@@ -254,7 +254,22 @@ public: + const CharacterIterator& source) const; + + // Make deprecated versions of Collator::compare() visible. ++#if __GNUC__ == 2 ++ EComparisonResult compare(const UChar* source, int sourceLength, ++ const UChar* target, int targetLength) const { ++ return Collator::compare(source, sourceLength, target, targetLength); ++ } ++ EComparisonResult compare(const UnicodeString& s1, const UnicodeString& s2, ++ int i) const { ++ return Collator::compare(s1, s2, i); ++ } ++ EComparisonResult compare(const UnicodeString& s1, const UnicodeString& s2) ++ const { ++ return Collator::compare(s1, s2); ++ } ++#else + using Collator::compare; ++#endif + + /** + * The comparison function compares the character data stored in two +diff --git a/source/i18n/unicode/tzfmt.h b/source/i18n/unicode/tzfmt.h +index 24f0e49..969e08a 100644 +--- a/source/i18n/unicode/tzfmt.h ++++ b/source/i18n/unicode/tzfmt.h +@@ -520,7 +520,14 @@ public: + */ + UnicodeString& formatOffsetShortLocalizedGMT(int32_t offset, UnicodeString& result, UErrorCode& status) const; + ++#if __GNUC__ == 2 ++ UnicodeString& format(const Formattable& data, UnicodeString& string, ++ FieldPositionIterator* iterator, UErrorCode& error) const { ++ return Format::format(data, string, iterator, error); ++ } ++#else + using Format::format; ++#endif + + /** + * Returns the display name of the time zone at the given date for the style. +-- +2.2.2 + + +From 6fe3c3f205284dfb0a2c4d06717bb84cb61f0f66 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sun, 19 Apr 2015 13:36:37 +0200 +Subject: gcc2 fixes in source/common + + +diff --git a/source/common/unicode/bytestrie.h b/source/common/unicode/bytestrie.h +index 9c77827..367a0ae 100644 +--- a/source/common/unicode/bytestrie.h ++++ b/source/common/unicode/bytestrie.h +@@ -338,6 +338,9 @@ public: + // but the code looks more confusing that way.) + UVector32 *stack_; + }; ++#if __GNUC__ == 2 ++ friend class Iterator; ++#endif + + private: + friend class BytesTrieBuilder; +diff --git a/source/common/unicode/bytestriebuilder.h b/source/common/unicode/bytestriebuilder.h +index d00ab9b..afbf59b 100644 +--- a/source/common/unicode/bytestriebuilder.h ++++ b/source/common/unicode/bytestriebuilder.h +@@ -152,6 +152,9 @@ private: + private: + const char *s; + }; ++#if __GNUC__ == 2 ++ friend class BTLinearMatchNode; ++#endif + + virtual Node *createLinearMatchNode(int32_t i, int32_t byteIndex, int32_t length, + Node *nextNode) const; +diff --git a/source/common/unicode/platform.h b/source/common/unicode/platform.h +index 4829000..2411dd0 100644 +--- a/source/common/unicode/platform.h ++++ b/source/common/unicode/platform.h +@@ -708,7 +708,7 @@ + /* Use the predefined value. */ + #elif defined(U_STATIC_IMPLEMENTATION) + # define U_EXPORT +-#elif defined(__GNUC__) ++#elif defined(__GNUC__) && __GNUC__ > 2 + # define U_EXPORT __attribute__((visibility("default"))) + #elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \ + || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550) +diff --git a/source/common/unicode/stringtriebuilder.h b/source/common/unicode/stringtriebuilder.h +index 04447e5..21bab82 100644 +--- a/source/common/unicode/stringtriebuilder.h ++++ b/source/common/unicode/stringtriebuilder.h +@@ -379,6 +379,15 @@ protected: + int32_t length; + Node *next; // A branch sub-node. + }; ++#if __GNUC__ >= 2 ++ friend class FinalValueNode; ++ friend class ValueNode; ++ friend class IntermediateValueNode; ++ friend class BranchNode; ++ friend class ListBranchNode; ++ friend class SplitBranchNode; ++ friend class BranchHeadNode; ++#endif + #endif /* U_HIDE_INTERNAL_API */ + + /** @internal */ +diff --git a/source/common/unicode/ucharstrie.h b/source/common/unicode/ucharstrie.h +index 0575a97..9fe81c1 100644 +--- a/source/common/unicode/ucharstrie.h ++++ b/source/common/unicode/ucharstrie.h +@@ -356,6 +356,9 @@ public: + // but the code looks more confusing that way.) + UVector32 *stack_; + }; ++#if __GNUC__ == 2 ++ friend class Iterator; ++#endif + + private: + friend class UCharsTrieBuilder; +diff --git a/source/common/unicode/ucharstriebuilder.h b/source/common/unicode/ucharstriebuilder.h +index 35e353d..30f40d9 100644 +--- a/source/common/unicode/ucharstriebuilder.h ++++ b/source/common/unicode/ucharstriebuilder.h +@@ -156,6 +156,9 @@ private: + private: + const UChar *s; + }; ++#if __GNUC__ == 2 ++ friend class UCTLinearMatchNode; ++#endif + + virtual Node *createLinearMatchNode(int32_t i, int32_t unitIndex, int32_t length, + Node *nextNode) const; +-- +2.2.2 + + +From 1e79fa03b6cd114d4c7fb7c03251bc10a48897c2 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Thu, 2 Oct 2014 14:54:39 +0200 +Subject: Force definition of U_DISABLE_RENAMING + +We build ICU with this flag disabled, but somehow this isn't added tothe +header, and later on trying to build haiku without the flag would fail. +So we just change the default value to keep things simpler. + +diff --git a/source/common/unicode/uconfig.h b/source/common/unicode/uconfig.h +index f6223bb..7c67263 100644 +--- a/source/common/unicode/uconfig.h ++++ b/source/common/unicode/uconfig.h +@@ -87,7 +87,7 @@ + * @internal + */ + #ifndef U_DISABLE_RENAMING +-#define U_DISABLE_RENAMING 0 ++#define U_DISABLE_RENAMING 1 + #endif + + /** +-- +2.2.2 + + +From efa9ee8612ac7482e56fa2190ce1b1afd188e268 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Mon, 6 Oct 2014 13:28:09 +0200 +Subject: more gcc2 fixes for ICU 54. + + +diff --git a/source/common/norm2allmodes.h b/source/common/norm2allmodes.h +index 64c84a2..aca1e08 100644 +--- a/source/common/norm2allmodes.h ++++ b/source/common/norm2allmodes.h +@@ -193,7 +193,9 @@ private: + ReorderingBuffer &buffer, UErrorCode &errorCode) const { + impl.decompose(src, limit, &buffer, errorCode); + } ++#if __GNUC__ != 2 + using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. ++#endif + virtual void + normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize, + UnicodeString &safeMiddle, +@@ -204,7 +206,9 @@ private: + spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const { + return impl.decompose(src, limit, NULL, errorCode); + } ++#if __GNUC__ != 2 + using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. ++#endif + virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const { + return impl.isDecompYes(impl.getNorm16(c)) ? UNORM_YES : UNORM_NO; + } +@@ -225,7 +229,9 @@ private: + ReorderingBuffer &buffer, UErrorCode &errorCode) const { + impl.compose(src, limit, onlyContiguous, TRUE, buffer, errorCode); + } ++#if __GNUC__ != 2 + using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. ++#endif + virtual void + normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize, + UnicodeString &safeMiddle, +@@ -268,7 +274,9 @@ private: + spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &) const { + return impl.composeQuickCheck(src, limit, onlyContiguous, NULL); + } ++#if __GNUC__ != 2 + using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. ++#endif + virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const { + return impl.getCompQuickCheck(impl.getNorm16(c)); + } +@@ -296,7 +304,9 @@ private: + ReorderingBuffer &buffer, UErrorCode &errorCode) const { + impl.makeFCD(src, limit, &buffer, errorCode); + } ++#if __GNUC__ != 2 + using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. ++#endif + virtual void + normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize, + UnicodeString &safeMiddle, +@@ -307,7 +317,9 @@ private: + spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const { + return impl.makeFCD(src, limit, NULL, errorCode); + } ++#if __GNUC__ != 2 + using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. ++#endif + virtual UBool hasBoundaryBefore(UChar32 c) const { return impl.hasFCDBoundaryBefore(c); } + virtual UBool hasBoundaryAfter(UChar32 c) const { return impl.hasFCDBoundaryAfter(c); } + virtual UBool isInert(UChar32 c) const { return impl.isFCDInert(c); } +diff --git a/source/common/putilimp.h b/source/common/putilimp.h +index a3e361f..affb1a8 100644 +--- a/source/common/putilimp.h ++++ b/source/common/putilimp.h +@@ -113,7 +113,7 @@ typedef size_t uintptr_t; + + #if defined(U_TIMEZONE) || defined(U_HAVE_TIMEZONE) + /* Use the predefined value. */ +-#elif U_PLATFORM == U_PF_ANDROID ++#elif U_PLATFORM == U_PF_ANDROID || defined(__HAIKU__) + # define U_TIMEZONE timezone + #elif U_PLATFORM_IS_LINUX_BASED + # if defined(__UCLIBC__) +diff --git a/source/common/unicode/platform.h b/source/common/unicode/platform.h +index 2411dd0..61fdfe1 100644 +--- a/source/common/unicode/platform.h ++++ b/source/common/unicode/platform.h +@@ -159,7 +159,7 @@ + # else + # define U_PLATFORM U_PF_DARWIN + # endif +-#elif defined(BSD) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__MirBSD__) ++#elif defined(BSD) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__MirBSD__) || defined(__HAIKU__) + # define U_PLATFORM U_PF_BSD + #elif defined(sun) || defined(__sun) + /* Check defined(__SVR4) || defined(__svr4__) to distinguish Solaris from SunOS? */ +diff --git a/source/i18n/filteredbrk.cpp b/source/i18n/filteredbrk.cpp +index 7ecb004..e3b3802 100644 +--- a/source/i18n/filteredbrk.cpp ++++ b/source/i18n/filteredbrk.cpp +@@ -65,7 +65,13 @@ class U_I18N_API UStringSet : public UVector { + inline UBool contains(const UnicodeString& s) { + return contains((void*) &s); + } ++#if __GNUC__ == 2 ++ UBool contains(void* s) { ++ return UVector::contains(s); ++ } ++#else + using UVector::contains; ++#endif + /** + * Return the ith UnicodeString alias + */ +-- +2.2.2 + + +From d1ec5200e5938bab93750e171a58182ea76eebc1 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Thu, 26 Mar 2015 18:39:42 +0000 +Subject: gcc2 fixes for tztools. + + +diff --git a/source/tools/tzcode/private.h b/source/tools/tzcode/private.h +index 1a85c88..0ee3329 100644 +--- a/source/tools/tzcode/private.h ++++ b/source/tools/tzcode/private.h +@@ -120,7 +120,7 @@ + */ + #ifndef HAVE_STDINT_H + #define HAVE_STDINT_H \ +- (199901 <= __STDC_VERSION__ || \ ++ (defined(__HAIKU__) || 199901 <= __STDC_VERSION__ || \ + 2 < (__GLIBC__ + (0 < __GLIBC_MINOR__))) + #endif /* !defined HAVE_STDINT_H */ + +-- +2.2.2 + diff --git a/dev-libs/icu/patches/icu-55.1.patchset b/dev-libs/icu/patches/icu-55.1.patchset index 35942b6a7..87f8559fc 100644 --- a/dev-libs/icu/patches/icu-55.1.patchset +++ b/dev-libs/icu/patches/icu-55.1.patchset @@ -1,724 +1,3 @@ -From b545663a3d91c16233ce34181475d8fd84e47034 Mon Sep 17 00:00:00 2001 -From: Adrien Destugues -Date: Sun, 19 Apr 2015 13:35:11 +0200 -Subject: gcc2 fixes for tools, tests, layout. - - -diff --git a/source/layout/LETableReference.h b/source/layout/LETableReference.h -index de51228..f55b762 100644 ---- a/source/layout/LETableReference.h -+++ b/source/layout/LETableReference.h -@@ -304,7 +304,11 @@ LE_TRACE_TR("INFO: new RTAO") - - le_uint32 getCount() const { return fCount; } - -+#if __GNUC__ == 2 -+ const T *getAlias() const { return LETableReference::getAlias(); } -+#else - using LETableReference::getAlias; -+#endif - - const T *getAlias(le_uint32 i, LEErrorCode &success) const { - return ((const T*)(((const char*)getAlias())+getOffsetFor(i, success))); -diff --git a/source/test/intltest/apicoll.cpp b/source/test/intltest/apicoll.cpp -index 31b16dd..3e2e4a8 100644 ---- a/source/test/intltest/apicoll.cpp -+++ b/source/test/intltest/apicoll.cpp -@@ -1971,7 +1971,22 @@ class TestCollator : public Collator - public: - virtual Collator* clone(void) const; - -+#if __GNUC__ == 2 -+ EComparisonResult compare (const UnicodeString& s1, const UnicodeString& s2) -+ const { -+ return Collator::compare(s1, s2); -+ } -+ EComparisonResult compare (const UnicodeString& s1, const UnicodeString& s2, -+ int32_t i) const { -+ return Collator::compare(s1, s2, i); -+ } -+ EComparisonResult compare (const UChar* s1, int32_t l1, const UChar* s2, -+ int32_t l2) const { -+ return Collator::compare(s1, l1, s2, l2); -+ } -+#else - using Collator::compare; -+#endif - - virtual UCollationResult compare(const UnicodeString& source, - const UnicodeString& target, -diff --git a/source/test/iotest/stream.cpp b/source/test/iotest/stream.cpp -index a821636..083b4ab 100644 ---- a/source/test/iotest/stream.cpp -+++ b/source/test/iotest/stream.cpp -@@ -131,7 +131,7 @@ static void U_CALLCONV TestStream(void) - #endif - UnicodeString ustr("string"); - -- outFormatStream << "1234567890" << setw(10) << left << ustr << " " << "0123456789"; -+ outFormatStream << "1234567890" << setw(10) << ios::left << ustr << " " << "0123456789"; - - #ifdef USE_SSTREAM - tempStr = outFormatStream.str(); -diff --git a/source/tools/toolutil/udbgutil.cpp b/source/tools/toolutil/udbgutil.cpp -index 911425c..cdd6683 100644 ---- a/source/tools/toolutil/udbgutil.cpp -+++ b/source/tools/toolutil/udbgutil.cpp -@@ -639,7 +639,9 @@ U_CAPI void udbg_knownIssue_close(void *ptr) { - #include - #include - #include -+#if __GNUC__ > 2 - #include -+#endif - #include - - class KnownIssues { --- -2.2.2 - - -From 6cafed065f5d91859be09b8a219c1eaf5785d96d Mon Sep 17 00:00:00 2001 -From: Adrien Destugues -Date: Sun, 19 Apr 2015 13:35:47 +0200 -Subject: gcc2 fixes for sources/i18n - - -diff --git a/source/i18n/alphaindex.cpp b/source/i18n/alphaindex.cpp -index 9fa98b8..5535be2 100644 ---- a/source/i18n/alphaindex.cpp -+++ b/source/i18n/alphaindex.cpp -@@ -952,8 +952,8 @@ static int32_t U_CALLCONV - collatorComparator(const void *context, const void *left, const void *right) { - const UElement *leftElement = static_cast(left); - const UElement *rightElement = static_cast(right); -- const UnicodeString *leftString = static_cast(leftElement->pointer); -- const UnicodeString *rightString = static_cast(rightElement->pointer); -+ const UnicodeString *leftString = (const UnicodeString *)(leftElement->pointer); -+ const UnicodeString *rightString = (const UnicodeString *)(rightElement->pointer); - - if (leftString == rightString) { - // Catches case where both are NULL -@@ -977,8 +977,8 @@ static int32_t U_CALLCONV - recordCompareFn(const void *context, const void *left, const void *right) { - const UElement *leftElement = static_cast(left); - const UElement *rightElement = static_cast(right); -- const AlphabeticIndex::Record *leftRec = static_cast(leftElement->pointer); -- const AlphabeticIndex::Record *rightRec = static_cast(rightElement->pointer); -+ const AlphabeticIndex::Record *leftRec = (const AlphabeticIndex::Record *)(leftElement->pointer); -+ const AlphabeticIndex::Record *rightRec = (const AlphabeticIndex::Record *)(rightElement->pointer); - const Collator *col = static_cast(context); - UErrorCode errorCode = U_ZERO_ERROR; - return col->compare(leftRec->name_, rightRec->name_, errorCode); -diff --git a/source/i18n/currfmt.h b/source/i18n/currfmt.h -index b3f23e5..1495316 100644 ---- a/source/i18n/currfmt.h -+++ b/source/i18n/currfmt.h -@@ -58,7 +58,9 @@ class CurrencyFormat : public MeasureFormat { - virtual Format* clone() const; - - -+#if __GNUC__ > 2 - using MeasureFormat::format; -+#endif - - /** - * Override Format API. -diff --git a/source/i18n/digitlst.cpp b/source/i18n/digitlst.cpp -index 51738be..c003c4b 100644 ---- a/source/i18n/digitlst.cpp -+++ b/source/i18n/digitlst.cpp -@@ -38,7 +38,9 @@ - #include - #include - #include -+#if __GNUC__ > 2 - #include -+#endif - - // *************************************************************************** - // class DigitList -@@ -437,11 +439,15 @@ DigitList::getDouble() const - tDouble /= -1; - } - } else if (isInfinite()) { -+#if __GNUC__ <= 2 -+ tDouble = DBL_MAX; -+#else - if (std::numeric_limits::has_infinity) { - tDouble = std::numeric_limits::infinity(); - } else { - tDouble = std::numeric_limits::max(); - } -+#endif - if (!isPositive()) { - tDouble = -tDouble; //this was incorrectly "-fDouble" originally. - } -diff --git a/source/i18n/digitlst.h b/source/i18n/digitlst.h -index 7e98d2b..4a95d71 100644 ---- a/source/i18n/digitlst.h -+++ b/source/i18n/digitlst.h -@@ -413,7 +413,7 @@ private: - - public: - --#if U_OVERRIDE_CXX_ALLOCATION -+#if U_OVERRIDE_CXX_ALLOCATION && __GNUC__ > 2 - using UMemory::operator new; - using UMemory::operator delete; - #else -diff --git a/source/i18n/msgfmt.cpp b/source/i18n/msgfmt.cpp -index 32d9bc7..e6ca5c1 100644 ---- a/source/i18n/msgfmt.cpp -+++ b/source/i18n/msgfmt.cpp -@@ -1484,6 +1484,7 @@ MessageFormat::parse(int32_t msgStart, - prevIndex=msgPattern.getPart(argLimit).getLimit(); - i=argLimit; - } -+ return NULL; - } - // ------------------------------------- - // Parses the source pattern and returns the Formattable objects array, -diff --git a/source/i18n/reldtfmt.h b/source/i18n/reldtfmt.h -index 67539e0..09f31e7 100644 ---- a/source/i18n/reldtfmt.h -+++ b/source/i18n/reldtfmt.h -@@ -81,7 +81,9 @@ public: - virtual UBool operator==(const Format& other) const; - - -+#if __GNUC__ > 2 - using DateFormat::format; -+#endif - - /** - * Format a date or time, which is the standard millis since 24:00 GMT, Jan -diff --git a/source/i18n/sortkey.cpp b/source/i18n/sortkey.cpp -index baf3254..838ea82 100644 ---- a/source/i18n/sortkey.cpp -+++ b/source/i18n/sortkey.cpp -@@ -172,7 +172,7 @@ Collator::EComparisonResult - CollationKey::compareTo(const CollationKey& target) const - { - UErrorCode errorCode = U_ZERO_ERROR; -- return static_cast(compareTo(target, errorCode)); -+ return (Collator::EComparisonResult)(compareTo(target, errorCode)); - } - - // Bitwise comparison for the collation keys. -diff --git a/source/i18n/unicode/choicfmt.h b/source/i18n/unicode/choicfmt.h -index cfd5206..d2b7f66 100644 ---- a/source/i18n/unicode/choicfmt.h -+++ b/source/i18n/unicode/choicfmt.h -@@ -355,7 +355,22 @@ public: - virtual const UnicodeString* getFormats(int32_t& count) const; - - -+#if __GNUC__ == 2 -+ virtual UnicodeString& format (double number, -+ icu::UnicodeString& appendTo) const { -+ return NumberFormat::format(number, appendTo); -+ } -+ UnicodeString& format(const Formattable& f, UnicodeString& s, -+ FieldPosition& p, UErrorCode& e) const { -+ return NumberFormat::format(f, s, p, e); -+ } -+ UnicodeString& format(const Formattable& f, UnicodeString& s, -+ UErrorCode& e) const { -+ return NumberFormat::format(f, s, e); -+ } -+#else - using NumberFormat::format; -+#endif - - /** - * Formats a double number using this object's choices. -@@ -421,7 +436,13 @@ public: - FieldPosition& pos, - UErrorCode& success) const; - -+#if __GNUC__ == 2 -+ void parse(UnicodeString& s, Formattable& f, UErrorCode& e) const { -+ NumberFormat::parse(s, f, e); -+ } -+#else - using NumberFormat::parse; -+#endif - - /** - * Looks for the longest match of any message string on the input text and, -diff --git a/source/i18n/unicode/compactdecimalformat.h b/source/i18n/unicode/compactdecimalformat.h -index bd8fdba..be2e580 100644 ---- a/source/i18n/unicode/compactdecimalformat.h -+++ b/source/i18n/unicode/compactdecimalformat.h -@@ -104,7 +104,13 @@ public: - virtual UBool operator==(const Format& other) const; - - -+#if __GNUC__ == 2 -+ UnicodeString& format(double n, UnicodeString& s) const { -+ return DecimalFormat::format(n, s); -+ } -+#else - using DecimalFormat::format; -+#endif - - /** - * Format a double or long number using base-10 representation. -diff --git a/source/i18n/unicode/datefmt.h b/source/i18n/unicode/datefmt.h -index 983f136..4531dc5 100644 ---- a/source/i18n/unicode/datefmt.h -+++ b/source/i18n/unicode/datefmt.h -@@ -221,7 +221,13 @@ public: - virtual UBool operator==(const Format&) const; - - -+#if __GNUC__ == 2 -+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) const { -+ return Format::format(f, s, e); -+ } -+#else - using Format::format; -+#endif - - /** - * Format an object to produce a string. This method handles Formattable -diff --git a/source/i18n/unicode/decimfmt.h b/source/i18n/unicode/decimfmt.h -index 138855b..4ed2995 100644 ---- a/source/i18n/unicode/decimfmt.h -+++ b/source/i18n/unicode/decimfmt.h -@@ -918,7 +918,35 @@ public: - virtual UBool operator==(const Format& other) const; - - -+#if __GNUC__ == 2 -+ virtual UnicodeString& format (double number, -+ icu::UnicodeString& appendTo) const { -+ return NumberFormat::format(number, appendTo); -+ } -+ -+ virtual UnicodeString& format (double number, -+ icu::UnicodeString& appendTo, -+ UErrorCode& status) const { -+ return NumberFormat::format(number, appendTo, status); -+ } -+ -+ UnicodeString& format(const Formattable& f, UnicodeString& s, -+ FieldPositionIterator* i, UErrorCode& e) const { -+ return NumberFormat::format(f, s, i, e); -+ } -+ -+ UnicodeString& format(const Formattable& f, UnicodeString& s, -+ FieldPosition& p, UErrorCode& e) const { -+ return NumberFormat::format(f, s, p, e); -+ } -+ -+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) -+ const { -+ return NumberFormat::format(f, s, e); -+ } -+#else - using NumberFormat::format; -+#endif - - /** - * Format a double or long number using base-10 representation. -@@ -1131,7 +1159,15 @@ public: - FieldPosition& pos, - UErrorCode& status) const; - -+#if __GNUC__ == 2 -+ void parse(const UnicodeString& text, -+ Formattable& result, -+ UErrorCode& status) const { -+ NumberFormat::parse(text, result, status); -+ } -+#else - using NumberFormat::parse; -+#endif - - /** - * Parse the given string using this object's choices. The method -diff --git a/source/i18n/unicode/dtitvfmt.h b/source/i18n/unicode/dtitvfmt.h -index fb27eec..8fefb9e 100644 ---- a/source/i18n/unicode/dtitvfmt.h -+++ b/source/i18n/unicode/dtitvfmt.h -@@ -373,7 +373,9 @@ public: - UBool operator!=(const Format& other) const; - - -+#if __GNUC__ > 2 - using Format::format; -+#endif - - /** - * Format an object to produce a string. This method handles Formattable -diff --git a/source/i18n/unicode/measfmt.h b/source/i18n/unicode/measfmt.h -index 61a1e86..0a272a8 100644 ---- a/source/i18n/unicode/measfmt.h -+++ b/source/i18n/unicode/measfmt.h -@@ -92,8 +92,25 @@ class DateFormat; - */ - class U_I18N_API MeasureFormat : public Format { - public: -+#if __GNUC__ == 2 -+ void parseObject (const UnicodeString& s, Formattable& f, UErrorCode& e) -+ const { -+ Format::parseObject(s, f, e); -+ } -+ -+ UnicodeString& format(const Formattable& f, UnicodeString& s, -+ FieldPositionIterator* i, UErrorCode& e) const { -+ return Format::format(f, s, i, e); -+ } -+ -+ UnicodeString& format(const Formattable& f, UnicodeString& s, -+ UErrorCode& e) const { -+ return Format::format(f, s, e); -+ } -+#else - using Format::parseObject; - using Format::format; -+#endif - - /** - * Constructor. -diff --git a/source/i18n/unicode/msgfmt.h b/source/i18n/unicode/msgfmt.h -index 5de91e4..8f9f995 100644 ---- a/source/i18n/unicode/msgfmt.h -+++ b/source/i18n/unicode/msgfmt.h -@@ -622,7 +622,17 @@ public: - virtual const Format** getFormats(int32_t& count) const; - - -+#if __GNUC__ == 2 -+ UnicodeString& format(const Formattable& f, UnicodeString& s, -+ FieldPositionIterator* i, UErrorCode& e) const { -+ return Format::format(f, s, i, e); -+ } -+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) { -+ return Format::format(f, s, e); -+ } -+#else - using Format::format; -+#endif - - /** - * Formats the given array of arguments into a user-readable string. -@@ -884,6 +894,9 @@ private: - PluralRules* rules; - UPluralType type; - }; -+#if __GNUC__ == 2 -+ friend class PluralSelectorProvider; -+#endif - - /** - * A MessageFormat formats an array of arguments. Each argument -diff --git a/source/i18n/unicode/numfmt.h b/source/i18n/unicode/numfmt.h -index 164c657..4b03222 100644 ---- a/source/i18n/unicode/numfmt.h -+++ b/source/i18n/unicode/numfmt.h -@@ -235,7 +235,15 @@ public: - virtual UBool operator==(const Format& other) const; - - -+#if __GNUC__ == 2 -+ virtual UnicodeString& format (const Formattable& obj, -+ UnicodeString& appendTo, -+ UErrorCode & status) const { -+ return Format::format(obj, appendTo, status); -+ } -+#else - using Format::format; -+#endif - - /** - * Format an object to produce a string. This method handles -diff --git a/source/i18n/unicode/plurfmt.h b/source/i18n/unicode/plurfmt.h -index f7099d8..bedaf01 100644 ---- a/source/i18n/unicode/plurfmt.h -+++ b/source/i18n/unicode/plurfmt.h -@@ -313,7 +313,14 @@ public: - void applyPattern(const UnicodeString& pattern, UErrorCode& status); - - -+#if __GNUC__ == 2 -+ UnicodeString& format(const Formattable& f, UnicodeString& s, -+ FieldPositionIterator* i, UErrorCode& e) const { -+ return Format::format(f, s, i, e); -+ } -+#else - using Format::format; -+#endif - - /** - * Formats a plural message for a given number. -diff --git a/source/i18n/unicode/rbnf.h b/source/i18n/unicode/rbnf.h -index 7058c96..d0ad947 100644 ---- a/source/i18n/unicode/rbnf.h -+++ b/source/i18n/unicode/rbnf.h -@@ -741,7 +741,23 @@ public: - const Locale& locale = Locale::getDefault()); - - -+#if __GNUC__ == 2 -+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) -+ const { -+ return NumberFormat::format(f, s, e); -+ } -+ -+ UnicodeString& format(double n, UnicodeString& s) const { -+ return NumberFormat::format(n, s); -+ } -+ -+ UnicodeString& format(int64_t n, UnicodeString& s, FieldPosition& p, -+ UErrorCode& e) const { -+ return NumberFormat::format(n, s, p, e); -+ } -+#else - using NumberFormat::format; -+#endif - - /** - * Formats the specified 32-bit number using the default ruleset. -@@ -827,7 +843,13 @@ public: - FieldPosition& pos, - UErrorCode& status) const; - -+#if __GNUC__ == 2 -+ void parse(const UnicodeString& s, Formattable& f, UErrorCode& e) const { -+ return NumberFormat::parse(s, f, e); -+ } -+#else - using NumberFormat::parse; -+#endif - - /** - * Parses the specfied string, beginning at the specified position, according -diff --git a/source/i18n/unicode/selfmt.h b/source/i18n/unicode/selfmt.h -index 635144b..7247839 100644 ---- a/source/i18n/unicode/selfmt.h -+++ b/source/i18n/unicode/selfmt.h -@@ -219,7 +219,9 @@ public: - void applyPattern(const UnicodeString& pattern, UErrorCode& status); - - -+#if __GNUC__ > 2 - using Format::format; -+#endif - - /** - * Selects the phrase for the given keyword -@@ -340,9 +342,9 @@ public: - */ - virtual UClassID getDynamicClassID() const; - --private: - friend class MessageFormat; - -+private: - SelectFormat(); // default constructor not implemented. - - /** -diff --git a/source/i18n/unicode/smpdtfmt.h b/source/i18n/unicode/smpdtfmt.h -index ccdaff4..69f70ec 100644 ---- a/source/i18n/unicode/smpdtfmt.h -+++ b/source/i18n/unicode/smpdtfmt.h -@@ -870,7 +870,27 @@ public: - virtual UBool operator==(const Format& other) const; - - -+#if __GNUC__ == 2 -+ UnicodeString& format(const Formattable& f, UnicodeString& s, -+ FieldPositionIterator* i, UErrorCode& e) const { -+ return DateFormat::format(f, s, i, e); -+ } -+ UnicodeString& format(const Formattable& f, UnicodeString& s, FieldPosition& p, -+ UErrorCode& e) const { -+ return DateFormat::format(f, s, p, e); -+ } -+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) const { -+ return Format::format(f, s, e); -+ } -+ UnicodeString& format(const UDate& d, UnicodeString& s, FieldPosition& f) const { -+ return DateFormat::format(d, s, f); -+ } -+ UnicodeString& format(const UDate& d, UnicodeString& s) const { -+ return DateFormat::format(d, s); -+ } -+#else - using DateFormat::format; -+#endif - - /** - * Format a date or time, which is the standard millis since 24:00 GMT, Jan -@@ -915,7 +935,16 @@ public: - FieldPositionIterator* posIter, - UErrorCode& status) const; - -+#if __GNUC__ == 2 -+ UDate parse(const UnicodeString& s, UErrorCode& e) const { -+ return DateFormat::parse(s, e); -+ } -+ UDate parse (const UnicodeString& s, ParsePosition& p) const { -+ return DateFormat::parse(s, p); -+ } -+#else - using DateFormat::parse; -+#endif - - /** - * Parse a date/time string beginning at the given parse position. For -diff --git a/source/i18n/unicode/tblcoll.h b/source/i18n/unicode/tblcoll.h -index e56f189..2108699 100644 ---- a/source/i18n/unicode/tblcoll.h -+++ b/source/i18n/unicode/tblcoll.h -@@ -254,7 +254,22 @@ public: - const CharacterIterator& source) const; - - // Make deprecated versions of Collator::compare() visible. -+#if __GNUC__ == 2 -+ EComparisonResult compare(const UChar* source, int sourceLength, -+ const UChar* target, int targetLength) const { -+ return Collator::compare(source, sourceLength, target, targetLength); -+ } -+ EComparisonResult compare(const UnicodeString& s1, const UnicodeString& s2, -+ int i) const { -+ return Collator::compare(s1, s2, i); -+ } -+ EComparisonResult compare(const UnicodeString& s1, const UnicodeString& s2) -+ const { -+ return Collator::compare(s1, s2); -+ } -+#else - using Collator::compare; -+#endif - - /** - * The comparison function compares the character data stored in two -diff --git a/source/i18n/unicode/tzfmt.h b/source/i18n/unicode/tzfmt.h -index 24f0e49..969e08a 100644 ---- a/source/i18n/unicode/tzfmt.h -+++ b/source/i18n/unicode/tzfmt.h -@@ -520,7 +520,14 @@ public: - */ - UnicodeString& formatOffsetShortLocalizedGMT(int32_t offset, UnicodeString& result, UErrorCode& status) const; - -+#if __GNUC__ == 2 -+ UnicodeString& format(const Formattable& data, UnicodeString& string, -+ FieldPositionIterator* iterator, UErrorCode& error) const { -+ return Format::format(data, string, iterator, error); -+ } -+#else - using Format::format; -+#endif - - /** - * Returns the display name of the time zone at the given date for the style. --- -2.2.2 - - -From 6fe3c3f205284dfb0a2c4d06717bb84cb61f0f66 Mon Sep 17 00:00:00 2001 -From: Adrien Destugues -Date: Sun, 19 Apr 2015 13:36:37 +0200 -Subject: gcc2 fixes in source/common - - -diff --git a/source/common/unicode/bytestrie.h b/source/common/unicode/bytestrie.h -index 9c77827..367a0ae 100644 ---- a/source/common/unicode/bytestrie.h -+++ b/source/common/unicode/bytestrie.h -@@ -338,6 +338,9 @@ public: - // but the code looks more confusing that way.) - UVector32 *stack_; - }; -+#if __GNUC__ == 2 -+ friend class Iterator; -+#endif - - private: - friend class BytesTrieBuilder; -diff --git a/source/common/unicode/bytestriebuilder.h b/source/common/unicode/bytestriebuilder.h -index d00ab9b..afbf59b 100644 ---- a/source/common/unicode/bytestriebuilder.h -+++ b/source/common/unicode/bytestriebuilder.h -@@ -152,6 +152,9 @@ private: - private: - const char *s; - }; -+#if __GNUC__ == 2 -+ friend class BTLinearMatchNode; -+#endif - - virtual Node *createLinearMatchNode(int32_t i, int32_t byteIndex, int32_t length, - Node *nextNode) const; -diff --git a/source/common/unicode/platform.h b/source/common/unicode/platform.h -index 4829000..2411dd0 100644 ---- a/source/common/unicode/platform.h -+++ b/source/common/unicode/platform.h -@@ -708,7 +708,7 @@ - /* Use the predefined value. */ - #elif defined(U_STATIC_IMPLEMENTATION) - # define U_EXPORT --#elif defined(__GNUC__) -+#elif defined(__GNUC__) && __GNUC__ > 2 - # define U_EXPORT __attribute__((visibility("default"))) - #elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \ - || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550) -diff --git a/source/common/unicode/stringtriebuilder.h b/source/common/unicode/stringtriebuilder.h -index 04447e5..21bab82 100644 ---- a/source/common/unicode/stringtriebuilder.h -+++ b/source/common/unicode/stringtriebuilder.h -@@ -379,6 +379,15 @@ protected: - int32_t length; - Node *next; // A branch sub-node. - }; -+#if __GNUC__ >= 2 -+ friend class FinalValueNode; -+ friend class ValueNode; -+ friend class IntermediateValueNode; -+ friend class BranchNode; -+ friend class ListBranchNode; -+ friend class SplitBranchNode; -+ friend class BranchHeadNode; -+#endif - #endif /* U_HIDE_INTERNAL_API */ - - /** @internal */ -diff --git a/source/common/unicode/ucharstrie.h b/source/common/unicode/ucharstrie.h -index 0575a97..9fe81c1 100644 ---- a/source/common/unicode/ucharstrie.h -+++ b/source/common/unicode/ucharstrie.h -@@ -356,6 +356,9 @@ public: - // but the code looks more confusing that way.) - UVector32 *stack_; - }; -+#if __GNUC__ == 2 -+ friend class Iterator; -+#endif - - private: - friend class UCharsTrieBuilder; -diff --git a/source/common/unicode/ucharstriebuilder.h b/source/common/unicode/ucharstriebuilder.h -index 35e353d..30f40d9 100644 ---- a/source/common/unicode/ucharstriebuilder.h -+++ b/source/common/unicode/ucharstriebuilder.h -@@ -156,6 +156,9 @@ private: - private: - const UChar *s; - }; -+#if __GNUC__ == 2 -+ friend class UCTLinearMatchNode; -+#endif - - virtual Node *createLinearMatchNode(int32_t i, int32_t unitIndex, int32_t length, - Node *nextNode) const; --- -2.2.2 - - From 3c6dff2a3728889f67afcc5e2e5a667d59aa2b84 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 19 Apr 2015 13:38:07 +0200 @@ -756,32 +35,6 @@ index ccf956e..55a3ed2 100644 2.2.2 -From 1e79fa03b6cd114d4c7fb7c03251bc10a48897c2 Mon Sep 17 00:00:00 2001 -From: Adrien Destugues -Date: Thu, 2 Oct 2014 14:54:39 +0200 -Subject: Force definition of U_DISABLE_RENAMING - -We build ICU with this flag disabled, but somehow this isn't added tothe -header, and later on trying to build haiku without the flag would fail. -So we just change the default value to keep things simpler. - -diff --git a/source/common/unicode/uconfig.h b/source/common/unicode/uconfig.h -index f6223bb..7c67263 100644 ---- a/source/common/unicode/uconfig.h -+++ b/source/common/unicode/uconfig.h -@@ -87,7 +87,7 @@ - * @internal - */ - #ifndef U_DISABLE_RENAMING --#define U_DISABLE_RENAMING 0 -+#define U_DISABLE_RENAMING 1 - #endif - - /** --- -2.2.2 - - From 12c3d34d0c531dcd3af7ae9c0119001bcdf8261a Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Fri, 3 Oct 2014 11:07:01 +0200 @@ -886,124 +139,6 @@ index b30c8d0..89902b4 100644 2.2.2 -From efa9ee8612ac7482e56fa2190ce1b1afd188e268 Mon Sep 17 00:00:00 2001 -From: Adrien Destugues -Date: Mon, 6 Oct 2014 13:28:09 +0200 -Subject: more gcc2 fixes for ICU 54. - - -diff --git a/source/common/norm2allmodes.h b/source/common/norm2allmodes.h -index 64c84a2..aca1e08 100644 ---- a/source/common/norm2allmodes.h -+++ b/source/common/norm2allmodes.h -@@ -193,7 +193,9 @@ private: - ReorderingBuffer &buffer, UErrorCode &errorCode) const { - impl.decompose(src, limit, &buffer, errorCode); - } -+#if __GNUC__ != 2 - using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. -+#endif - virtual void - normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize, - UnicodeString &safeMiddle, -@@ -204,7 +206,9 @@ private: - spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const { - return impl.decompose(src, limit, NULL, errorCode); - } -+#if __GNUC__ != 2 - using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. -+#endif - virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const { - return impl.isDecompYes(impl.getNorm16(c)) ? UNORM_YES : UNORM_NO; - } -@@ -225,7 +229,9 @@ private: - ReorderingBuffer &buffer, UErrorCode &errorCode) const { - impl.compose(src, limit, onlyContiguous, TRUE, buffer, errorCode); - } -+#if __GNUC__ != 2 - using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. -+#endif - virtual void - normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize, - UnicodeString &safeMiddle, -@@ -268,7 +274,9 @@ private: - spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &) const { - return impl.composeQuickCheck(src, limit, onlyContiguous, NULL); - } -+#if __GNUC__ != 2 - using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. -+#endif - virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const { - return impl.getCompQuickCheck(impl.getNorm16(c)); - } -@@ -296,7 +304,9 @@ private: - ReorderingBuffer &buffer, UErrorCode &errorCode) const { - impl.makeFCD(src, limit, &buffer, errorCode); - } -+#if __GNUC__ != 2 - using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. -+#endif - virtual void - normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize, - UnicodeString &safeMiddle, -@@ -307,7 +317,9 @@ private: - spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const { - return impl.makeFCD(src, limit, NULL, errorCode); - } -+#if __GNUC__ != 2 - using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. -+#endif - virtual UBool hasBoundaryBefore(UChar32 c) const { return impl.hasFCDBoundaryBefore(c); } - virtual UBool hasBoundaryAfter(UChar32 c) const { return impl.hasFCDBoundaryAfter(c); } - virtual UBool isInert(UChar32 c) const { return impl.isFCDInert(c); } -diff --git a/source/common/putilimp.h b/source/common/putilimp.h -index a3e361f..affb1a8 100644 ---- a/source/common/putilimp.h -+++ b/source/common/putilimp.h -@@ -113,7 +113,7 @@ typedef size_t uintptr_t; - - #if defined(U_TIMEZONE) || defined(U_HAVE_TIMEZONE) - /* Use the predefined value. */ --#elif U_PLATFORM == U_PF_ANDROID -+#elif U_PLATFORM == U_PF_ANDROID || defined(__HAIKU__) - # define U_TIMEZONE timezone - #elif U_PLATFORM_IS_LINUX_BASED - # if defined(__UCLIBC__) -diff --git a/source/common/unicode/platform.h b/source/common/unicode/platform.h -index 2411dd0..61fdfe1 100644 ---- a/source/common/unicode/platform.h -+++ b/source/common/unicode/platform.h -@@ -159,7 +159,7 @@ - # else - # define U_PLATFORM U_PF_DARWIN - # endif --#elif defined(BSD) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__MirBSD__) -+#elif defined(BSD) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__MirBSD__) || defined(__HAIKU__) - # define U_PLATFORM U_PF_BSD - #elif defined(sun) || defined(__sun) - /* Check defined(__SVR4) || defined(__svr4__) to distinguish Solaris from SunOS? */ -diff --git a/source/i18n/filteredbrk.cpp b/source/i18n/filteredbrk.cpp -index 7ecb004..e3b3802 100644 ---- a/source/i18n/filteredbrk.cpp -+++ b/source/i18n/filteredbrk.cpp -@@ -65,7 +65,13 @@ class U_I18N_API UStringSet : public UVector { - inline UBool contains(const UnicodeString& s) { - return contains((void*) &s); - } -+#if __GNUC__ == 2 -+ UBool contains(void* s) { -+ return UVector::contains(s); -+ } -+#else - using UVector::contains; -+#endif - /** - * Return the ith UnicodeString alias - */ --- -2.2.2 - - From 85cb05132c7caf7c17c786a816efb31a08a40319 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Fri, 14 Nov 2014 23:56:19 +0100 @@ -1037,25 +172,3 @@ index 89902b4..9f3b893 100644 2.2.2 -From d1ec5200e5938bab93750e171a58182ea76eebc1 Mon Sep 17 00:00:00 2001 -From: Jerome Duval -Date: Thu, 26 Mar 2015 18:39:42 +0000 -Subject: gcc2 fixes for tztools. - - -diff --git a/source/tools/tzcode/private.h b/source/tools/tzcode/private.h -index 1a85c88..0ee3329 100644 ---- a/source/tools/tzcode/private.h -+++ b/source/tools/tzcode/private.h -@@ -120,7 +120,7 @@ - */ - #ifndef HAVE_STDINT_H - #define HAVE_STDINT_H \ -- (199901 <= __STDC_VERSION__ || \ -+ (defined(__HAIKU__) || 199901 <= __STDC_VERSION__ || \ - 2 < (__GLIBC__ + (0 < __GLIBC_MINOR__))) - #endif /* !defined HAVE_STDINT_H */ - --- -2.2.2 -