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="4"
ARCHITECTURES="x86_gcc2 x86 x86_64"
SECONDARY_ARCHITECTURES="x86_gcc2 x86"

PATCHES="icu-4.8.1.1.patch"

PROVIDES="
	icu$secondaryArchSuffix = $portVersion compat >= 4.8
	lib:libicudata$secondaryArchSuffix = 48.1.1 compat >= 48
	lib:libicui18n$secondaryArchSuffix = 48.1.1 compat >= 48
	lib:libicuio$secondaryArchSuffix = 48.1.1 compat >= 48
	lib:libicule$secondaryArchSuffix = 48.1.1 compat >= 48
	lib:libiculx$secondaryArchSuffix = 48.1.1 compat >= 48
	lib:libicutest$secondaryArchSuffix = 48.1.1 compat >= 48
	lib:libicutu$secondaryArchSuffix = 48.1.1 compat >= 48
	lib:libicuuc$secondaryArchSuffix = 48.1.1 compat >= 48
	"
REQUIRES="
	haiku$secondaryArchSuffix >= $haikuVersion
	"
BUILD_REQUIRES="
	"
BUILD_PREREQUIRES="
	haiku${secondaryArchSuffix}_devel >= $haikuVersion
	cmd:gcc$secondaryArchSuffix
	cmd:ld$secondaryArchSuffix
	cmd:make
	cmd:sed
	"

SOURCE_DIR="icu"

BUILD()
{
	cd source
	runConfigure ./configure \
		--disable-renaming --disable-samples --disable-extras
	make $jobArgs
}

INSTALL()
{
	cd source
	make install

	prepareInstalledDevelLibs \
		libicudata \
		libicui18n \
		libicuio \
		libicule \
		libiculx \
		libicutu \
		libicuuc
	fixPkgconfig

	# Rename the data/icu directory when built for the secondary architecture,
	# so that it doesn't clash with the primary package's.
	if [ -n "$secondaryArchSuffix" ]; then
		mv $dataDir/icu $dataDir/icu$secondaryArchSuffix
		# TODO: The icu-config, the Makefile.inc, and possibly other files need
		# to be adjusted as well. They are probably also not quite correct for
		# the primary architecture (lib vs. develop/lib).
	fi

	# devel package
	packageEntries devel \
		$developDir \
		$dataDir \
		$libDir/icu \
		$binDir/icu-config

	# main package cleanup
	rm -r $binDir
}

TEST()
{
	cd source
	make check
}

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${secondaryArchSuffix}_devel = $portVersion
	cmd:icu_config${secondaryArchSuffix} = $portVersion compat >= 4.8
	devel:libicudata${secondaryArchSuffix} = 48.1.1 compat >= 48
	devel:libicui18n${secondaryArchSuffix} = 48.1.1 compat >= 48
	devel:libicuio${secondaryArchSuffix} = 48.1.1 compat >= 48
	devel:libicule${secondaryArchSuffix} = 48.1.1 compat >= 48
	devel:libiculx${secondaryArchSuffix} = 48.1.1 compat >= 48
	devel:libicutest${secondaryArchSuffix} = 48.1.1 compat >= 48
	devel:libicutu${secondaryArchSuffix} = 48.1.1 compat >= 48
	devel:libicuuc${secondaryArchSuffix} = 48.1.1 compat >= 48
	"
REQUIRES_devel="
	icu${secondaryArchSuffix} == $portVersion base
	"
