[GTK] Remove the GLib unicode backend

https://bugs.webkit.org/show_bug.cgi?id=109627

Patch by Martin Robinson <mrobinson@igalia.com> on 2013-02-12
Reviewed by Benjamin Poulain.

.:

Remove references to the GLib unicode backend from configuration.

* Source/autotools/FindDependencies.m4:
* Source/autotools/ReadCommandLineArguments.m4:
* Source/autotools/SetupAutoconfHeader.m4:
* Source/autotools/SetupAutomake.m4:

Source/WebCore:

Remove references to the GLib unicode backend from WebCore.

* GNUmakefile.list.am: Update the source list.
* platform/text/gtk/TextBreakIteratorGtk.cpp: Removed.
* platform/text/gtk/TextCodecGtk.cpp: Removed.
* platform/text/gtk/TextCodecGtk.h: Removed.

Source/WTF:

Remove references to the GLib unicode backend from WTF.

* GNUmakefile.list.am: Remove GLib unicode files from the source list.
* wtf/unicode/glib/UnicodeGLib.cpp: Removed.
* wtf/unicode/glib/UnicodeGLib.h: Removed.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142724 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 7f1ce6e7
2013-02-12 Martin Robinson <mrobinson@igalia.com>
[GTK] Remove the GLib unicode backend
https://bugs.webkit.org/show_bug.cgi?id=109627
Reviewed by Benjamin Poulain.
Remove references to the GLib unicode backend from configuration.
* Source/autotools/FindDependencies.m4:
* Source/autotools/ReadCommandLineArguments.m4:
* Source/autotools/SetupAutoconfHeader.m4:
* Source/autotools/SetupAutomake.m4:
2013-02-12 Christophe Dumez <ch.dumez@sisa.samsung.com>
Remove remaining traces of Web Intents
......
2013-02-12 Martin Robinson <mrobinson@igalia.com>
[GTK] Remove the GLib unicode backend
https://bugs.webkit.org/show_bug.cgi?id=109627
Reviewed by Benjamin Poulain.
Remove references to the GLib unicode backend from WTF.
* GNUmakefile.list.am: Remove GLib unicode files from the source list.
* wtf/unicode/glib/UnicodeGLib.cpp: Removed.
* wtf/unicode/glib/UnicodeGLib.h: Removed.
2013-02-12 Takeshi Yoshino <tyoshino@google.com>
Remove unnecessary and confusing includes from StreamBuffer.h.
......
......@@ -261,8 +261,6 @@ wtf_sources += \
Source/WTF/wtf/unicode/UTF8.h \
Source/WTF/wtf/unicode/Unicode.h \
Source/WTF/wtf/unicode/UnicodeMacrosFromICU.h \
Source/WTF/wtf/unicode/glib/UnicodeGLib.h \
Source/WTF/wtf/unicode/glib/UnicodeGLib.cpp \
Source/WTF/wtf/unicode/icu/CollatorICU.cpp \
Source/WTF/wtf/unicode/icu/UnicodeIcu.h \
Source/WTF/wtf/url/api/ParsedURL.cpp \
......
/*
* Copyright (C) 2008 Jürg Billeter <j@bitron.ch>
* Copyright (C) 2008 Dominik Röttsches <dominik.roettsches@access-company.com>
* Copyright (C) 2010 Igalia S.L.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#include "config.h"
#include "UnicodeGLib.h"
#if USE(GLIB_UNICODE)
#include <wtf/Vector.h>
#include <wtf/unicode/UTF8.h>
#define UTF8_IS_SURROGATE(character) (character >= 0x10000 && character <= 0x10FFFF)
namespace WTF {
namespace Unicode {
UChar32 foldCase(UChar32 ch)
{
GOwnPtr<GError> gerror;
GOwnPtr<char> utf8char;
utf8char.set(g_ucs4_to_utf8(reinterpret_cast<gunichar*>(&ch), 1, 0, 0, &gerror.outPtr()));
if (gerror)
return ch;
GOwnPtr<char> utf8caseFolded;
utf8caseFolded.set(g_utf8_casefold(utf8char.get(), -1));
GOwnPtr<gunichar> ucs4Result;
ucs4Result.set(g_utf8_to_ucs4_fast(utf8caseFolded.get(), -1, 0));
return *ucs4Result;
}
static int getUTF16LengthFromUTF8(const gchar* utf8String, int length)
{
int utf16Length = 0;
const gchar* inputString = utf8String;
while ((utf8String + length - inputString > 0) && *inputString) {
gunichar character = g_utf8_get_char(inputString);
utf16Length += UTF8_IS_SURROGATE(character) ? 2 : 1;
inputString = g_utf8_next_char(inputString);
}
return utf16Length;
}
typedef gchar* (*UTF8CaseFunction)(const gchar*, gssize length);
static int convertCase(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error, UTF8CaseFunction caseFunction)
{
*error = false;
// Allocate a buffer big enough to hold all the characters.
Vector<char> buffer(srcLength * 3);
char* utf8Target = buffer.data();
const UChar* utf16Source = src;
ConversionResult conversionResult = convertUTF16ToUTF8(&utf16Source, utf16Source + srcLength, &utf8Target, utf8Target + buffer.size(), true);
if (conversionResult != conversionOK) {
*error = true;
return -1;
}
buffer.shrink(utf8Target - buffer.data());
GOwnPtr<char> utf8Result(caseFunction(buffer.data(), buffer.size()));
long utf8ResultLength = strlen(utf8Result.get());
// Calculate the destination buffer size.
int realLength = getUTF16LengthFromUTF8(utf8Result.get(), utf8ResultLength);
if (realLength > resultLength) {
*error = true;
return realLength;
}
// Convert the result to UTF-16.
UChar* utf16Target = result;
const char* utf8Source = utf8Result.get();
bool unusedISAllASCII;
conversionResult = convertUTF8ToUTF16(&utf8Source, utf8Source + utf8ResultLength, &utf16Target, utf16Target + resultLength, &unusedIsAllASCII, true);
long utf16ResultLength = utf16Target - result;
if (conversionResult != conversionOK)
*error = true;
return utf16ResultLength <= 0 ? -1 : utf16ResultLength;
}
int foldCase(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error)
{
return convertCase(result, resultLength, src, srcLength, error, g_utf8_casefold);
}
int toLower(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error)
{
return convertCase(result, resultLength, src, srcLength, error, g_utf8_strdown);
}
int toUpper(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error)
{
return convertCase(result, resultLength, src, srcLength, error, g_utf8_strup);
}
Direction direction(UChar32 c)
{
PangoBidiType type = pango_bidi_type_for_unichar(c);
switch (type) {
case PANGO_BIDI_TYPE_L:
return LeftToRight;
case PANGO_BIDI_TYPE_R:
return RightToLeft;
case PANGO_BIDI_TYPE_AL:
return RightToLeftArabic;
case PANGO_BIDI_TYPE_LRE:
return LeftToRightEmbedding;
case PANGO_BIDI_TYPE_RLE:
return RightToLeftEmbedding;
case PANGO_BIDI_TYPE_LRO:
return LeftToRightOverride;
case PANGO_BIDI_TYPE_RLO:
return RightToLeftOverride;
case PANGO_BIDI_TYPE_PDF:
return PopDirectionalFormat;
case PANGO_BIDI_TYPE_EN:
return EuropeanNumber;
case PANGO_BIDI_TYPE_AN:
return ArabicNumber;
case PANGO_BIDI_TYPE_ES:
return EuropeanNumberSeparator;
case PANGO_BIDI_TYPE_ET:
return EuropeanNumberTerminator;
case PANGO_BIDI_TYPE_CS:
return CommonNumberSeparator;
case PANGO_BIDI_TYPE_NSM:
return NonSpacingMark;
case PANGO_BIDI_TYPE_BN:
return BoundaryNeutral;
case PANGO_BIDI_TYPE_B:
return BlockSeparator;
case PANGO_BIDI_TYPE_S:
return SegmentSeparator;
case PANGO_BIDI_TYPE_WS:
return WhiteSpaceNeutral;
default:
return OtherNeutral;
}
}
int umemcasecmp(const UChar* a, const UChar* b, int len)
{
GOwnPtr<char> utf8a;
GOwnPtr<char> utf8b;
utf8a.set(g_utf16_to_utf8(a, len, 0, 0, 0));
utf8b.set(g_utf16_to_utf8(b, len, 0, 0, 0));
GOwnPtr<char> foldedA;
GOwnPtr<char> foldedB;
foldedA.set(g_utf8_casefold(utf8a.get(), -1));
foldedB.set(g_utf8_casefold(utf8b.get(), -1));
// FIXME: umemcasecmp needs to mimic u_memcasecmp of icu
// from the ICU docs:
// "Compare two strings case-insensitively using full case folding.
// his is equivalent to u_strcmp(u_strFoldCase(s1, n, options), u_strFoldCase(s2, n, options))."
//
// So it looks like we don't need the full g_utf8_collate here,
// but really a bitwise comparison of casefolded unicode chars (not utf-8 bytes).
// As there is no direct equivalent to this icu function in GLib, for now
// we'll use g_utf8_collate():
return g_utf8_collate(foldedA.get(), foldedB.get());
}
} // namespace Unicode
} // namespace WTF
#endif // USE(GLIB_UNICODE)
/*
* Copyright (C) 2006 George Staikos <staikos@kde.org>
* Copyright (C) 2006 Alexey Proskuryakov <ap@nypop.com>
* Copyright (C) 2007 Apple Computer, Inc. All rights reserved.
* Copyright (C) 2008 Jürg Billeter <j@bitron.ch>
* Copyright (C) 2008 Dominik Röttsches <dominik.roettsches@access-company.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#ifndef UnicodeGLib_h
#define UnicodeGLib_h
#if USE(GLIB_UNICODE)
#include <wtf/gobject/GOwnPtr.h>
#include <wtf/unicode/ScriptCodesFromICU.h>
#include <wtf/unicode/UnicodeMacrosFromICU.h>
#include <glib.h>
#include <pango/pango.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
typedef uint16_t UChar;
typedef int32_t UChar32;
namespace WTF {
namespace Unicode {
enum Direction {
LeftToRight,
RightToLeft,
EuropeanNumber,
EuropeanNumberSeparator,
EuropeanNumberTerminator,
ArabicNumber,
CommonNumberSeparator,
BlockSeparator,
SegmentSeparator,
WhiteSpaceNeutral,
OtherNeutral,
LeftToRightEmbedding,
LeftToRightOverride,
RightToLeftArabic,
RightToLeftEmbedding,
RightToLeftOverride,
PopDirectionalFormat,
NonSpacingMark,
BoundaryNeutral
};
enum DecompositionType {
DecompositionNone,
DecompositionCanonical,
DecompositionCompat,
DecompositionCircle,
DecompositionFinal,
DecompositionFont,
DecompositionFraction,
DecompositionInitial,
DecompositionIsolated,
DecompositionMedial,
DecompositionNarrow,
DecompositionNoBreak,
DecompositionSmall,
DecompositionSquare,
DecompositionSub,
DecompositionSuper,
DecompositionVertical,
DecompositionWide,
};
enum CharCategory {
NoCategory = 0,
Other_NotAssigned = U_MASK(G_UNICODE_UNASSIGNED),
Letter_Uppercase = U_MASK(G_UNICODE_UPPERCASE_LETTER),
Letter_Lowercase = U_MASK(G_UNICODE_LOWERCASE_LETTER),
Letter_Titlecase = U_MASK(G_UNICODE_TITLECASE_LETTER),
Letter_Modifier = U_MASK(G_UNICODE_MODIFIER_LETTER),
Letter_Other = U_MASK(G_UNICODE_OTHER_LETTER),
Mark_NonSpacing = U_MASK(G_UNICODE_NON_SPACING_MARK),
Mark_Enclosing = U_MASK(G_UNICODE_ENCLOSING_MARK),
Mark_SpacingCombining = U_MASK(G_UNICODE_COMBINING_MARK),
Number_DecimalDigit = U_MASK(G_UNICODE_DECIMAL_NUMBER),
Number_Letter = U_MASK(G_UNICODE_LETTER_NUMBER),
Number_Other = U_MASK(G_UNICODE_OTHER_NUMBER),
Separator_Space = U_MASK(G_UNICODE_SPACE_SEPARATOR),
Separator_Line = U_MASK(G_UNICODE_LINE_SEPARATOR),
Separator_Paragraph = U_MASK(G_UNICODE_PARAGRAPH_SEPARATOR),
Other_Control = U_MASK(G_UNICODE_CONTROL),
Other_Format = U_MASK(G_UNICODE_FORMAT),
Other_PrivateUse = U_MASK(G_UNICODE_PRIVATE_USE),
Other_Surrogate = U_MASK(G_UNICODE_SURROGATE),
Punctuation_Dash = U_MASK(G_UNICODE_DASH_PUNCTUATION),
Punctuation_Open = U_MASK(G_UNICODE_OPEN_PUNCTUATION),
Punctuation_Close = U_MASK(G_UNICODE_CLOSE_PUNCTUATION),
Punctuation_Connector = U_MASK(G_UNICODE_CONNECT_PUNCTUATION),
Punctuation_Other = U_MASK(G_UNICODE_OTHER_PUNCTUATION),
Symbol_Math = U_MASK(G_UNICODE_MATH_SYMBOL),
Symbol_Currency = U_MASK(G_UNICODE_CURRENCY_SYMBOL),
Symbol_Modifier = U_MASK(G_UNICODE_MODIFIER_SYMBOL),
Symbol_Other = U_MASK(G_UNICODE_OTHER_SYMBOL),
Punctuation_InitialQuote = U_MASK(G_UNICODE_INITIAL_PUNCTUATION),
Punctuation_FinalQuote = U_MASK(G_UNICODE_FINAL_PUNCTUATION)
};
UChar32 foldCase(UChar32);
int foldCase(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error);
int toLower(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error);
inline UChar32 toLower(UChar32 c)
{
return g_unichar_tolower(c);
}
inline UChar32 toUpper(UChar32 c)
{
return g_unichar_toupper(c);
}
int toUpper(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error);
inline UChar32 toTitleCase(UChar32 c)
{
return g_unichar_totitle(c);
}
inline bool isArabicChar(UChar32 c)
{
return c >= 0x0600 && c <= 0x06FF;
}
inline bool isAlphanumeric(UChar32 c)
{
return g_unichar_isalnum(c);
}
inline bool isFormatChar(UChar32 c)
{
return g_unichar_type(c) == G_UNICODE_FORMAT;
}
inline bool isSeparatorSpace(UChar32 c)
{
return g_unichar_type(c) == G_UNICODE_SPACE_SEPARATOR;
}
inline bool isPrintableChar(UChar32 c)
{
return g_unichar_isprint(c);
}
inline bool isDigit(UChar32 c)
{
return g_unichar_isdigit(c);
}
inline bool isPunct(UChar32 c)
{
return g_unichar_ispunct(c);
}
inline bool hasLineBreakingPropertyComplexContext(UChar32 c)
{
// FIXME
return false;
}
inline UChar32 mirroredChar(UChar32 c)
{
gunichar mirror = 0;
g_unichar_get_mirror_char(c, &mirror);
return mirror;
}
inline CharCategory category(UChar32 c)
{
if (c > 0xffff)
return NoCategory;
return (CharCategory) U_MASK(g_unichar_type(c));
}
Direction direction(UChar32);
inline bool isLower(UChar32 c)
{
return g_unichar_islower(c);
}
inline uint8_t combiningClass(UChar32 c)
{
// FIXME
// return g_unichar_combining_class(c);
return 0;
}
inline DecompositionType decompositionType(UChar32 c)
{
// FIXME
return DecompositionNone;
}
int umemcasecmp(const UChar*, const UChar*, int len);
} // namespace Unicode
} // namespace WTF
#endif // USE(GLIB_UNICODE)
#endif // UnicodeGlib_h
2013-02-12 Martin Robinson <mrobinson@igalia.com>
[GTK] Remove the GLib unicode backend
https://bugs.webkit.org/show_bug.cgi?id=109627
Reviewed by Benjamin Poulain.
Remove references to the GLib unicode backend from WebCore.
* GNUmakefile.list.am: Update the source list.
* platform/text/gtk/TextBreakIteratorGtk.cpp: Removed.
* platform/text/gtk/TextCodecGtk.cpp: Removed.
* platform/text/gtk/TextCodecGtk.h: Removed.
2013-02-12 Chris Fleizach <cfleizach@apple.com>
AX: crash when accessing AccessibilityScrollbar after page has been unloaded
......@@ -5977,6 +5977,7 @@ webcore_platform_sources += \
Source/WebCore/platform/SystemTime.h \
Source/WebCore/platform/text/enchant/TextCheckerEnchant.h \
Source/WebCore/platform/text/enchant/TextCheckerEnchant.cpp \
Source/WebCore/platform/text/gtk/TextBreakIteratorInternalICUGtk.cpp \
Source/WebCore/platform/text/BidiContext.cpp \
Source/WebCore/platform/text/BidiContext.h \
Source/WebCore/platform/text/BidiResolver.h \
......@@ -6007,6 +6008,8 @@ webcore_platform_sources += \
Source/WebCore/platform/text/TextBoundaries.cpp \
Source/WebCore/platform/text/TextBoundaries.h \
Source/WebCore/platform/text/TextBreakIterator.cpp \
Source/WebCore/platform/text/TextBreakIteratorICU.cpp \
Source/WebCore/platform/text/TextBreakIteratorInternalICU.h \
Source/WebCore/platform/text/TextBreakIterator.h \
Source/WebCore/platform/text/TextCheckerClient.h \
Source/WebCore/platform/text/TextChecking.h \
......@@ -6021,6 +6024,8 @@ webcore_platform_sources += \
Source/WebCore/platform/text/TextCodecUTF16.h \
Source/WebCore/platform/text/TextCodecUTF8.cpp \
Source/WebCore/platform/text/TextCodecUTF8.h \
Source/WebCore/platform/text/TextCodecICU.cpp \
Source/WebCore/platform/text/TextCodecICU.h \
Source/WebCore/platform/text/TextDirection.h \
Source/WebCore/platform/text/TextEncoding.cpp \
Source/WebCore/platform/text/TextEncodingDetector.h \
......@@ -6263,28 +6268,6 @@ webcore_sources += \
Source/WebCore/platform/graphics/OpenGLShims.h
endif # END USE_GLES2
# ----
# icu unicode backend
# ----
if USE_ICU_UNICODE
webcore_sources += \
Source/WebCore/platform/text/TextCodecICU.cpp \
Source/WebCore/platform/text/TextCodecICU.h \
Source/WebCore/platform/text/TextBreakIteratorICU.cpp \
Source/WebCore/platform/text/TextBreakIteratorInternalICU.h \
Source/WebCore/platform/text/gtk/TextBreakIteratorInternalICUGtk.cpp
endif
# ----
# glib unicode backend
# ----
if USE_GLIB_UNICODE
webcore_sources += \
Source/WebCore/platform/text/gtk/TextCodecGtk.cpp \
Source/WebCore/platform/text/gtk/TextCodecGtk.h \
Source/WebCore/platform/text/gtk/TextBreakIteratorGtk.cpp
endif
if USE_GSTREAMER
webcoregtk_sources += \
Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp \
......
This diff is collapsed.
/*
* Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved.
* Copyright (C) 2006 Alexey Proskuryakov <ap@nypop.com>
* Copyright (C) 2008 Jürg Billeter <j@bitron.ch>
* Copyright (C) 2009 Dominik Röttsches <dominik.roettsches@access-company.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef TextCodecGTK_h
#define TextCodecGTK_h
#include <wtf/gobject/GRefPtr.h>
#include <glib.h>
#include "TextCodec.h"
#include "TextEncoding.h"
namespace WebCore {
class TextCodecGtk : public TextCodec {
public:
static void registerBaseEncodingNames(EncodingNameRegistrar);
static void registerBaseCodecs(TextCodecRegistrar);
static void registerExtendedEncodingNames(EncodingNameRegistrar);
static void registerExtendedCodecs(TextCodecRegistrar);
TextCodecGtk(const TextEncoding&);
virtual ~TextCodecGtk();
virtual String decode(const char*, size_t length, bool flush, bool stopOnError, bool& sawError);
virtual CString encode(const UChar*, size_t length, UnencodableHandling);
private:
void createIConvDecoder() const;
void createIConvEncoder() const;
TextEncoding m_encoding;
size_t m_numBufferedBytes;
unsigned char m_bufferedBytes[16]; // bigger than any single multi-byte character
mutable GRefPtr<GCharsetConverter> m_iconvDecoder;
mutable GRefPtr<GCharsetConverter> m_iconvEncoder;
};
} // namespace WebCore
#endif // TextCodecGTK_h
......@@ -106,34 +106,28 @@ GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0`
AC_SUBST(GLIB_COMPILE_RESOURCES)
GLIB_GSETTINGS
if test "$with_unicode_backend" = "icu"; then
# TODO: use pkg-config (after CFLAGS in their .pc files are cleaned up).
case "$host" in
*-*-darwin*)
UNICODE_CFLAGS="-I$srcdir/Source/JavaScriptCore/icu -I$srcdir/Source/WebCore/icu"
UNICODE_LIBS="-licucore"
;;
*-*-mingw*)