From 3fee9cc3cbe17ffb7468ecfee1d0d14173eca551 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Wed, 1 May 2013 01:33:42 +0200 Subject: [PATCH] Add icu 4.8.1.1 recipe and patch The patch is an unchanged version of the 4.8.1 patch and the recipe is derived from the non-recipe for 4.8.1. --- dev-libs/icu/icu-4.8.1.1.recipe | 98 ++++ dev-libs/icu/patches/icu-4.8.1.1.patch | 591 +++++++++++++++++++++++++ 2 files changed, 689 insertions(+) create mode 100644 dev-libs/icu/icu-4.8.1.1.recipe create mode 100644 dev-libs/icu/patches/icu-4.8.1.1.patch diff --git a/dev-libs/icu/icu-4.8.1.1.recipe b/dev-libs/icu/icu-4.8.1.1.recipe new file mode 100644 index 000000000..6aa66ecc3 --- /dev/null +++ b/dev-libs/icu/icu-4.8.1.1.recipe @@ -0,0 +1,98 @@ +SUMMARY="International Components for Unicode (ICU)" +HOMEPAGE="http://www.icu-project.org" +LICENSE="ICU" +COPYRIGHT="1997-2011 IBM Corporation and others." +SRC_URI="http://download.icu-project.org/files/icu4c/4.8.1.1/icu4c-4_8_1_1-src.tgz" +CHECKSUM_MD5="ea93970a0275be6b42f56953cd332c17" +REVISION="2" +ARCHITECTURES="x86_gcc2 ?x86" + +PATCHES="icu-4.8.1.1.patch" + +PROVIDES=" + icu = $portVersion compat >= 4.8 + lib:libicudata = 48.1.1 compat >= 48 + lib:libicui18n = 48.1.1 compat >= 48 + lib:libicuio = 48.1.1 compat >= 48 + lib:libicule = 48.1.1 compat >= 48 + lib:libiculx = 48.1.1 compat >= 48 + lib:libicutu = 48.1.1 compat >= 48 + lib:libicuuc = 48.1.1 compat >= 48 + " +REQUIRES=" + haiku >= $haikuVersion + " +BUILD_REQUIRES=" + $REQUIRES + cmd:gcc + cmd:ld + cmd:make + cmd:sed + " +BUILD_PREREQUIRES=" + haiku_devel >= $haikuVersion + " + +SOURCE_DIR="icu/source" + +BUILD() +{ + runConfigure ./configure \ + --disable-renaming --disable-samples --disable-extras + make $jobArgs +} + +INSTALL() +{ + make install + + prepareInstalledDevelLibs \ + libicudata \ + libicui18n \ + libicuio \ + libicule \ + libiculx \ + libicutu \ + libicuuc + fixPkgconfig + + # devel package + packageEntries devel \ + $developDir \ + $dataDir \ + $libDir/icu \ + $binDir/icu-config + + # main package cleanup + rm -r $binDir +} + +DESCRIPTION="ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms and between C/C++ and Java software. + +ICU is released under a nonrestrictive open source license that is suitable for use with both commercial software and with other open source or free software. + +Here are a few highlights of the services provided by ICU: + + * Code Page Conversion: Convert text data to or from Unicode and nearly any other character set or encoding. ICU's conversion tables are based on charset data collected by IBM over the course of many decades, and is the most complete available anywhere. + + * Collation: Compare strings according to the conventions and standards of a particular language, region or country. ICU's collation is based on the Unicode Collation Algorithm plus locale-specific comparison rules from the Common Locale Data Repository, a comprehensive source for this type of data. + + * Formatting: Format numbers, dates, times and currency amounts according the conventions of a chosen locale. This includes translating month and day names into the selected language, choosing appropriate abbreviations, ordering fields correctly, etc. This data also comes from the Common Locale Data Repository. + + * Time Calculations: Multiple types of calendars are provided beyond the traditional Gregorian calendar. A thorough set of timezone calculation APIs are provided. + + * Unicode Support: ICU closely tracks the Unicode standard, providing easy access to all of the many Unicode character properties, Unicode Normalization, Case Folding and other fundamental operations as specified by the Unicode Standard. + + * Regular Expression: ICU's regular expressions fully support Unicode while providing very competitive performance. + + * Bidi: support for handling text containing a mixture of left to right (English) and right to left (Arabic or Hebrew) data. + + * Text Boundaries: Locate the positions of words, sentences, paragraphs within a range of text, or identify locations that would be suitable for line wrapping when displaying the text." + +# ----- devel package ------------------------------------------------------- + +SUMMARY_devel="The ICU development files" +PROVIDES_devel="icu_devel = $portVersion" +REQUIRES_devel=" + icu == $portVersion + " diff --git a/dev-libs/icu/patches/icu-4.8.1.1.patch b/dev-libs/icu/patches/icu-4.8.1.1.patch new file mode 100644 index 000000000..0db0c4abe --- /dev/null +++ b/dev-libs/icu/patches/icu-4.8.1.1.patch @@ -0,0 +1,591 @@ +diff -ruN icu/source/common/messagepattern.cpp icu-haiku/source/common/messagepattern.cpp +--- icu/source/common/messagepattern.cpp 2011-07-19 23:16:28.046137344 +0200 ++++ icu-haiku/source/common/messagepattern.cpp 2011-08-19 15:48:48.211025920 +0200 +@@ -88,8 +88,12 @@ + int32_t length, + UErrorCode &errorCode); + UBool ensureCapacityForOneMore(int32_t oldLength, UErrorCode &errorCode); +- UBool memEquals(const MessagePatternList &other, int32_t length) const { +- return 0==uprv_memcmp(a.getAlias(), other.a.getAlias(), length*sizeof(T)); ++ UBool equals(const MessagePatternList &other, int32_t length) const { ++ for (int32_t i=0; i a; +@@ -309,7 +313,7 @@ + msg==other.msg && + // parts.equals(o.parts) + partsLength==other.partsLength && +- (partsLength==0 || partsList->memEquals(*other.partsList, partsLength)); ++ (partsLength==0 || partsList->equals(*other.partsList, partsLength)); + // No need to compare numericValues if msg and parts are the same. + } + +diff -ruN icu/source/common/normalizer2.cpp icu-haiku/source/common/normalizer2.cpp +--- icu/source/common/normalizer2.cpp 2011-07-19 23:16:24.008912896 +0200 ++++ icu-haiku/source/common/normalizer2.cpp 2011-08-19 15:46:55.276824064 +0200 +@@ -239,7 +239,7 @@ + ReorderingBuffer &buffer, UErrorCode &errorCode) const { + impl.decompose(src, limit, &buffer, errorCode); + } +- using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. ++// using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. + virtual void + normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize, + UnicodeString &safeMiddle, +@@ -250,7 +250,7 @@ + spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const { + return impl.decompose(src, limit, NULL, errorCode); + } +- using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. ++// using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. + virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const { + return impl.isDecompYes(impl.getNorm16(c)) ? UNORM_YES : UNORM_NO; + } +@@ -270,7 +270,7 @@ + ReorderingBuffer &buffer, UErrorCode &errorCode) const { + impl.compose(src, limit, onlyContiguous, TRUE, buffer, errorCode); + } +- using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. ++// using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. + virtual void + normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize, + UnicodeString &safeMiddle, +@@ -313,7 +313,7 @@ + spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &) const { + return impl.composeQuickCheck(src, limit, onlyContiguous, NULL); + } +- using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. ++// using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. + virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const { + return impl.getCompQuickCheck(impl.getNorm16(c)); + } +@@ -340,7 +340,7 @@ + ReorderingBuffer &buffer, UErrorCode &errorCode) const { + impl.makeFCD(src, limit, &buffer, errorCode); + } +- using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. ++// using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function. + virtual void + normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize, + UnicodeString &safeMiddle, +@@ -351,7 +351,7 @@ + spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const { + return impl.makeFCD(src, limit, NULL, errorCode); + } +- using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. ++// using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function. + 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 -ruN icu/source/common/unicode/bytestrie.h icu-haiku/source/common/unicode/bytestrie.h +--- icu/source/common/unicode/bytestrie.h 2011-07-19 23:16:16.052953088 +0200 ++++ icu-haiku/source/common/unicode/bytestrie.h 2011-08-19 15:46:55.331874304 +0200 +@@ -338,6 +338,9 @@ + // but the code looks more confusing that way.) + UVector32 *stack_; + }; ++#if (__GNUC__ == 2) ++ friend class Iterator; ++#endif + + private: + friend class BytesTrieBuilder; +diff -ruN icu/source/common/unicode/bytestriebuilder.h icu-haiku/source/common/unicode/bytestriebuilder.h +--- icu/source/common/unicode/bytestriebuilder.h 2011-07-19 23:16:16.053477376 +0200 ++++ icu-haiku/source/common/unicode/bytestriebuilder.h 2011-08-19 15:46:55.333185024 +0200 +@@ -141,6 +141,9 @@ + 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 -ruN icu/source/common/unicode/platform.h.in icu-haiku/source/common/unicode/platform.h.in +--- icu/source/common/unicode/platform.h.in 2011-07-19 23:16:18.055574528 +0200 ++++ icu-haiku/source/common/unicode/platform.h.in 2011-08-19 15:46:55.346554368 +0200 +@@ -299,7 +299,7 @@ + + #ifdef U_STATIC_IMPLEMENTATION + #define U_EXPORT +-#elif @U_USE_GCC_VISIBILITY_ATTRIBUTE@ ++#elif (@U_USE_GCC_VISIBILITY_ATTRIBUTE@) && (__GNUC__ > 2) + #define U_EXPORT __attribute__((visibility("default"))) + #elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \ + || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550) +diff -ruN icu/source/common/unicode/stringtriebuilder.h icu-haiku/source/common/unicode/stringtriebuilder.h +--- icu/source/common/unicode/stringtriebuilder.h 2011-07-19 23:16:18.056623104 +0200 ++++ icu-haiku/source/common/unicode/stringtriebuilder.h 2011-08-19 15:46:55.336068608 +0200 +@@ -245,6 +245,9 @@ + protected: + int32_t value; + }; ++#if (__GNUC__ == 2) ++ friend class FinalValueNode; ++#endif + + /** @internal */ + class ValueNode : public Node { +@@ -272,6 +275,9 @@ + protected: + Node *next; + }; ++#if (__GNUC__ == 2) ++ friend class IntermediateValueNode; ++#endif + + /** @internal */ + class LinearMatchNode : public ValueNode { +@@ -323,6 +329,9 @@ + int32_t values[kMaxBranchLinearSubNodeLength]; + UChar units[kMaxBranchLinearSubNodeLength]; + }; ++#if (__GNUC__ == 2) ++ friend class ListBranchNode; ++#endif + + /** @internal */ + class SplitBranchNode : public BranchNode { +@@ -339,6 +348,9 @@ + Node *lessThan; + Node *greaterOrEqual; + }; ++#if (__GNUC__ == 2) ++ friend class SplitBranchNode; ++#endif + + // Branch head node, for writing the actual node lead unit. + /** @internal */ +@@ -354,6 +366,9 @@ + int32_t length; + Node *next; // A branch sub-node. + }; ++#if (__GNUC__ == 2) ++ friend class BranchHeadNode; ++#endif + + /** @internal */ + virtual Node *createLinearMatchNode(int32_t i, int32_t unitIndex, int32_t length, +diff -ruN icu/source/common/unicode/ucharstrie.h icu-haiku/source/common/unicode/ucharstrie.h +--- icu/source/common/unicode/ucharstrie.h 2011-07-19 23:16:18.058720256 +0200 ++++ icu-haiku/source/common/unicode/ucharstrie.h 2011-08-19 15:46:55.338165760 +0200 +@@ -368,6 +368,9 @@ + // but the code looks more confusing that way.) + UVector32 *stack_; + }; ++#if (__GNUC__ == 2) ++ friend class Iterator; ++#endif + + private: + friend class UCharsTrieBuilder; +diff -ruN icu/source/common/unicode/ucharstriebuilder.h icu-haiku/source/common/unicode/ucharstriebuilder.h +--- icu/source/common/unicode/ucharstriebuilder.h 2011-07-19 23:16:18.059244544 +0200 ++++ icu-haiku/source/common/unicode/ucharstriebuilder.h 2011-08-19 15:46:55.339738624 +0200 +@@ -145,6 +145,9 @@ + 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; +diff -ruN icu/source/config/mh-haiku icu-haiku/source/config/mh-haiku +--- icu/source/config/mh-haiku 2011-07-19 23:16:46.026214400 +0200 ++++ icu-haiku/source/config/mh-haiku 2011-08-19 15:46:55.328990720 +0200 +@@ -17,6 +17,9 @@ + LIBCPPFLAGS = + THREADSCPPFLAGS = + ++# ++CPPFLAGS += -D__STDC_ISO_10646__ -DU_CHARSET_IS_UTF8=1 ++ + ## Compiler switch to embed a runtime search path + LD_RPATH= + LD_RPATH_PRE = -Wl,-rpath, +@@ -31,35 +34,35 @@ + + ## Compilation rules + %.$(STATIC_O): $(srcdir)/%.c +- $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< ++ $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< + %.o: $(srcdir)/%.c +- $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< ++ $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< + + %.$(STATIC_O): $(srcdir)/%.cpp +- $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< ++ $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< + %.o: $(srcdir)/%.cpp +- $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< ++ $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< + + + ## Dependency rules + %.d: $(srcdir)/%.c +- @echo "generating dependency information for $<" +- @$(SHELL) -ec '$(GEN_DEPS.c) $< \ +- | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ +- [ -s $@ ] || rm -f $@' ++ @echo "generating dependency information for $<" ++ @$(SHELL) -ec '$(GEN_DEPS.c) $< \ ++ | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ ++ [ -s $@ ] || rm -f $@' + + %.d: $(srcdir)/%.cpp +- @echo "generating dependency information for $<" +- @$(SHELL) -ec '$(GEN_DEPS.cc) $< \ +- | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ +- [ -s $@ ] || rm -f $@' ++ @echo "generating dependency information for $<" ++ @$(SHELL) -ec '$(GEN_DEPS.cc) $< \ ++ | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ ++ [ -s $@ ] || rm -f $@' + + ## Versioned libraries rules + + %.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION) +- $(RM) $@ && ln -s ${(preferenceSorting.elementAt(psIndex)); ++ UnicodeString item = *static_cast(preferenceSorting.elementAt(psIndex)); + // TODO: Since preferenceSorting was originally populated from the contents of a UnicodeSet, + // is it even possible for duplicates to show up in this check? + if (labelSet.contains(item)) { +@@ -240,7 +240,7 @@ + int32_t count = 0; + int32_t old = -1; + for (int32_t srcIndex=0; srcIndexsize(); srcIndex++) { +- const UnicodeString *str = static_cast(labels_->elementAt(srcIndex)); ++ const UnicodeString *str = static_cast(labels_->elementAt(srcIndex)); + ++count; + const int32_t bump = count * maxLabelCount_ / size; + if (bump == old) { +@@ -528,7 +528,7 @@ + const UnicodeString &AlphabeticIndex::getOverflowComparisonString(const UnicodeString &lowerLimit, UErrorCode &/*status*/) { + for (int32_t i=0; isize(); i++) { + const UnicodeString *s = +- static_cast(firstScriptCharacters_->elementAt(i)); ++ const_cast(static_cast(firstScriptCharacters_->elementAt(i))); + if (collator_->compare(*s, lowerLimit) > 0) { + return *s; + } +@@ -735,8 +735,10 @@ + sortCollateComparator(const void *context, const void *left, const void *right) { + const UHashTok *leftTok = static_cast(left); + const UHashTok *rightTok = static_cast(right); +- const UnicodeString *leftString = static_cast(leftTok->pointer); +- const UnicodeString *rightString = static_cast(rightTok->pointer); ++ const UnicodeString *leftString ++ = const_cast(static_cast(leftTok->pointer)); ++ const UnicodeString *rightString ++ = const_cast(static_cast(rightTok->pointer)); + const Collator *col = static_cast(context); + + if (leftString == rightString) { +@@ -760,8 +762,10 @@ + recordCompareFn(const void *context, const void *left, const void *right) { + const UHashTok *leftTok = static_cast(left); + const UHashTok *rightTok = static_cast(right); +- const AlphabeticIndex::Record *leftRec = static_cast(leftTok->pointer); +- const AlphabeticIndex::Record *rightRec = static_cast(rightTok->pointer); ++ const AlphabeticIndex::Record *leftRec ++ = const_cast(static_cast(leftTok->pointer)); ++ const AlphabeticIndex::Record *rightRec ++ = const_cast(static_cast(rightTok->pointer)); + const Collator *col = static_cast(context); + + Collator::EComparisonResult r = col->compare(leftRec->sortingName_, rightRec->sortingName_); +@@ -1087,8 +1091,8 @@ + PreferenceComparator(const void *context, const void *left, const void *right) { + const UHashTok *leftTok = static_cast(left); + const UHashTok *rightTok = static_cast(right); +- const UnicodeString *s1 = static_cast(leftTok->pointer); +- const UnicodeString *s2 = static_cast(rightTok->pointer); ++ const UnicodeString *s1 = const_cast(static_cast(leftTok->pointer)); ++ const UnicodeString *s2 = const_cast(static_cast(rightTok->pointer)); + UErrorCode &status = *(UErrorCode *)(context); // Cast off both static and const. + if (s1 == s2) { + return 0; +diff -ruN icu/source/i18n/currfmt.h icu-haiku/source/i18n/currfmt.h +--- icu/source/i18n/currfmt.h 2011-07-19 23:16:00.058720256 +0200 ++++ icu-haiku/source/i18n/currfmt.h 2011-08-19 15:46:55.293339136 +0200 +@@ -63,7 +63,9 @@ + virtual Format* clone() const; + + ++#if (__GNUC__ > 2) + using MeasureFormat::format; ++#endif + + /** + * Override Format API. +diff -ruN icu/source/i18n/digitlst.cpp icu-haiku/source/i18n/digitlst.cpp +--- icu/source/i18n/digitlst.cpp 2011-07-19 23:16:00.050593792 +0200 ++++ icu-haiku/source/i18n/digitlst.cpp 2011-08-19 15:46:55.295698432 +0200 +@@ -37,7 +37,9 @@ + #include + #include + #include ++#if (__GNUC__ > 2) + #include ++#endif + + // *************************************************************************** + // class DigitList +@@ -423,11 +425,15 @@ + nonConstThis->fDouble /= -1; + } + } else if (isInfinite()) { ++#if (__GNUC__ > 2) + if (std::numeric_limits::has_infinity) { + nonConstThis->fDouble = std::numeric_limits::infinity(); + } else { + nonConstThis->fDouble = std::numeric_limits::max(); + } ++#else ++ nonConstThis->fDouble = DBL_MAX; ++#endif + if (!isPositive()) { + nonConstThis->fDouble = -fDouble; + } +diff -ruN icu/source/i18n/reldtfmt.h icu-haiku/source/i18n/reldtfmt.h +--- icu/source/i18n/reldtfmt.h 2011-07-19 23:16:06.034078720 +0200 ++++ icu-haiku/source/i18n/reldtfmt.h 2011-08-19 15:46:55.297533440 +0200 +@@ -79,7 +79,9 @@ + 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 -ruN icu/source/i18n/unicode/alphaindex.h icu-haiku/source/i18n/unicode/alphaindex.h +--- icu/source/i18n/unicode/alphaindex.h 2011-07-19 23:15:52.042467328 +0200 ++++ icu-haiku/source/i18n/unicode/alphaindex.h 2011-08-19 15:46:55.344719360 +0200 +@@ -588,6 +588,9 @@ + Record(AlphabeticIndex *alphaIndex, const UnicodeString &name, const void *data); + ~Record(); + }; ++#if (__GNUC__ == 2) ++ friend struct Record; ++#endif + + /** + * Holds all user records before they are distributed into buckets. +diff -ruN icu/source/i18n/unicode/choicfmt.h icu-haiku/source/i18n/unicode/choicfmt.h +--- icu/source/i18n/unicode/choicfmt.h 2011-07-19 23:15:52.038797312 +0200 ++++ icu-haiku/source/i18n/unicode/choicfmt.h 2011-08-19 15:46:55.300154880 +0200 +@@ -352,7 +352,9 @@ + virtual const UnicodeString* getFormats(int32_t& count) const; + + ++#if (__GNUC__ > 2) + using NumberFormat::format; ++#endif + + /** + * Formats a double number using this object's choices. +diff -ruN icu/source/i18n/unicode/datefmt.h icu-haiku/source/i18n/unicode/datefmt.h +--- icu/source/i18n/unicode/datefmt.h 2011-07-19 23:15:52.035389440 +0200 ++++ icu-haiku/source/i18n/unicode/datefmt.h 2011-08-19 15:46:55.302514176 +0200 +@@ -212,7 +212,9 @@ + virtual UBool operator==(const Format&) const; + + ++#if (__GNUC__ > 2) + using Format::format; ++#endif + + /** + * Format an object to produce a string. This method handles Formattable +diff -ruN icu/source/i18n/unicode/decimfmt.h icu-haiku/source/i18n/unicode/decimfmt.h +--- icu/source/i18n/unicode/decimfmt.h 2011-07-19 23:15:54.040370176 +0200 ++++ icu-haiku/source/i18n/unicode/decimfmt.h 2011-08-19 15:46:55.305397760 +0200 +@@ -834,7 +834,16 @@ + virtual UBool operator==(const Format& other) const; + + ++#if (__GNUC__ > 2) + using NumberFormat::format; ++#else ++ virtual UnicodeString& format(const Formattable& obj, ++ UnicodeString& appendTo, ++ FieldPositionIterator* posIter, ++ UErrorCode& status) const { ++ return NumberFormat::format(obj, appendTo, posIter, status); ++ } ++#endif + + /** + * Format a double or long number using base-10 representation. +diff -ruN icu/source/i18n/unicode/dtitvfmt.h icu-haiku/source/i18n/unicode/dtitvfmt.h +--- icu/source/i18n/unicode/dtitvfmt.h 2011-07-19 23:15:54.042467328 +0200 ++++ icu-haiku/source/i18n/unicode/dtitvfmt.h 2011-08-19 15:46:55.307757056 +0200 +@@ -363,7 +363,9 @@ + 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 -ruN icu/source/i18n/unicode/msgfmt.h icu-haiku/source/i18n/unicode/msgfmt.h +--- icu/source/i18n/unicode/msgfmt.h 2011-07-19 23:15:54.041156608 +0200 ++++ icu-haiku/source/i18n/unicode/msgfmt.h 2011-08-19 15:46:55.310116352 +0200 +@@ -615,7 +615,9 @@ + virtual const Format** getFormats(int32_t& count) const; + + ++#if (__GNUC__ > 2) + using Format::format; ++#endif + + /** + * Formats the given array of arguments into a user-readable string. +diff -ruN icu/source/i18n/unicode/numfmt.h icu-haiku/source/i18n/unicode/numfmt.h +--- icu/source/i18n/unicode/numfmt.h 2011-07-19 23:15:54.039059456 +0200 ++++ icu-haiku/source/i18n/unicode/numfmt.h 2011-08-19 15:46:55.312213504 +0200 +@@ -212,8 +212,9 @@ + */ + virtual UBool operator==(const Format& other) const; + +- ++#if (__GNUC__ > 2) + using Format::format; ++#endif + + /** + * Format an object to produce a string. This method handles +diff -ruN icu/source/i18n/unicode/plurfmt.h icu-haiku/source/i18n/unicode/plurfmt.h +--- icu/source/i18n/unicode/plurfmt.h 2011-07-19 23:15:52.044040192 +0200 ++++ icu-haiku/source/i18n/unicode/plurfmt.h 2011-08-19 15:46:55.314310656 +0200 +@@ -281,7 +281,9 @@ + void applyPattern(const UnicodeString& pattern, UErrorCode& status); + + ++#if (__GNUC__ > 2) + using Format::format; ++#endif + + /** + * Formats a plural message for a given number. +diff -ruN icu/source/i18n/unicode/rbnf.h icu-haiku/source/i18n/unicode/rbnf.h +--- icu/source/i18n/unicode/rbnf.h 2011-07-19 23:15:54.034340864 +0200 ++++ icu-haiku/source/i18n/unicode/rbnf.h 2011-08-19 15:46:55.316932096 +0200 +@@ -722,7 +722,9 @@ + const Locale& locale = Locale::getDefault()); + + ++#if (__GNUC__ > 2) + using NumberFormat::format; ++#endif + + /** + * Formats the specified 32-bit number using the default ruleset. +diff -ruN icu/source/i18n/unicode/selfmt.h icu-haiku/source/i18n/unicode/selfmt.h +--- icu/source/i18n/unicode/selfmt.h 2011-07-19 23:15:52.042991616 +0200 ++++ icu-haiku/source/i18n/unicode/selfmt.h 2011-08-19 15:46:55.318767104 +0200 +@@ -219,7 +219,9 @@ + void applyPattern(const UnicodeString& pattern, UErrorCode& status); + + ++#if (__GNUC__ > 2) + using Format::format; ++#endif + + /** + * Selects the phrase for the given keyword +diff -ruN icu/source/i18n/unicode/smpdtfmt.h icu-haiku/source/i18n/unicode/smpdtfmt.h +--- icu/source/i18n/unicode/smpdtfmt.h 2011-07-19 23:15:52.035127296 +0200 ++++ icu-haiku/source/i18n/unicode/smpdtfmt.h 2011-08-19 15:46:55.321126400 +0200 +@@ -369,7 +369,9 @@ + 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 -ruN icu/source/i18n/unicode/tmutfmt.h icu-haiku/source/i18n/unicode/tmutfmt.h +--- icu/source/i18n/unicode/tmutfmt.h 2011-07-19 23:15:54.039583744 +0200 ++++ icu-haiku/source/i18n/unicode/tmutfmt.h 2011-08-19 15:46:55.322961408 +0200 +@@ -162,7 +162,16 @@ + void setNumberFormat(const NumberFormat& format, UErrorCode& status); + + ++#if (__GNUC__ > 2) + using MeasureFormat::format; ++#else ++ virtual UnicodeString& format(const Formattable& obj, ++ UnicodeString& appendTo, ++ FieldPositionIterator* posIter, ++ UErrorCode& status) const { ++ return MeasureFormat::format(obj, appendTo, posIter, status); ++ } ++#endif + + /** + * Format a TimeUnitAmount. +diff -ruN icu/source/tools/pkgdata/pkgdata.cpp icu-haiku/source/tools/pkgdata/pkgdata.cpp +--- icu/source/tools/pkgdata/pkgdata.cpp 2011-07-19 23:16:36.003670016 +0200 ++++ icu-haiku/source/tools/pkgdata/pkgdata.cpp 2011-08-19 15:46:55.326107136 +0200 +@@ -476,7 +476,7 @@ + + static int runCommand(const char* command, UBool specialHandling) { + char *cmd = NULL; +- char cmdBuffer[SMALL_BUFFER_MAX_SIZE]; ++ char cmdBuffer[64000]; + int32_t len = strlen(command); + + if (len == 0) {