# Copyright (C) 2010, International Business Machines Corporation. All Rights Reserved.

prefix = @prefix@
exec_prefix = @exec_prefix@
#bindir = @bindir@
libdir = @libdir@
includedir = @includedir@
baselibs = @LIBS@
#datarootdir = @datarootdir@
#datadir = @datadir@
#sbindir = @sbindir@
#mandir = @mandir@
#sysconfdir = @sysconfdir@
CFLAGS = @CFLAGS@ 
#CXXFLAGS = @CXXFLAGS@ 
DEFS = @DEFS@ 
UNICODE_VERSION=@UNICODE_VERSION@
ICUPREFIX=icu
ICULIBSUFFIX=@ICULIBSUFFIX@
LIBICU=lib${ICUPREFIX}
#SHAREDLIBCFLAGS=-fPIC
pkglibdir=${libdir}/@PACKAGE@${ICULIBSUFFIX}/@VERSION@
#pkgdatadir=${datadir}/@PACKAGE@${ICULIBSUFFIX}/@VERSION@
ICUDATA_NAME = icudt@LIB_VERSION_MAJOR@@ICUDATA_CHAR@
#ICUPKGDATA_DIR=@libdir@
#ICUDATA_DIR=${pkgdatadir}
ICUDESC=International Components for Unicode

Version: @VERSION@
Cflags: -I${includedir}
# end of icu.pc.in
