SUMMARY="Libraries to support Unicode and globalization"
DESCRIPTION="International Components for Unicode (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."
HOMEPAGE="http://www.icu-project.org"
COPYRIGHT="1995-2019 IBM Corporation and others."
LICENSE="ICU"
REVISION="3"
SOURCE_URI="https://github.com/unicode-org/icu/releases/download/release-57-2/icu4c-57_2-src.tgz"
SOURCE_URI_2="http://www.iana.org/time-zones/repository/releases/tzdata2019c.tar.gz#noarchive"
SOURCE_URI_3="https://github.com/unicode-org/icu/releases/download/release-57-2/icu4c-57_2-data.zip#noarchive"
CHECKSUM_SHA256="623f04b921827a041f42d52495a6f8eee6565a9b7557051ac68e099123ff28dc"
CHECKSUM_SHA256_2="79c7806dab09072308da0e3d22c37d3b245015a591891ea147d3b133b60ffc7c"
CHECKSUM_SHA256_3="83b0c4f73c97e26cd74309377da5ca157d55a45f38a96584bfaad0d0fbd55cbf"
SOURCE_DIR="icu"
PATCHES="icu-$portVersion.patchset"
if [ $effectiveTargetArchitecture = x86_gcc2 ]; then
PATCHES+="
	"icu-$portVersion.gcc2.patchset"
	"
fi

ARCHITECTURES="all"
SECONDARY_ARCHITECTURES="x86_gcc2 x86"

PROVIDES="
	icu$secondaryArchSuffix = $portVersion compat >= 57
	lib:libicudata$secondaryArchSuffix = $portVersion compat >= 57
	lib:libicui18n$secondaryArchSuffix = $portVersion compat >= 57
	lib:libicuio$secondaryArchSuffix = $portVersion compat >= 57
	lib:libicule$secondaryArchSuffix = $portVersion compat >= 57
	lib:libiculx$secondaryArchSuffix = $portVersion compat >= 57
	lib:libicutest$secondaryArchSuffix = $portVersion compat >= 57
	lib:libicutu$secondaryArchSuffix = $portVersion compat >= 57
	lib:libicuuc$secondaryArchSuffix = $portVersion compat >= 57
	"
REQUIRES="
	haiku$secondaryArchSuffix
	"

# Devel package only available for gcc2 (new gcc versions can build newer icu
# versions and there's no need to keep this one, but we keep it for some time
# for backwards compatibility)
if [ $effectiveTargetArchitecture == x86_gcc2 ]; then
SUMMARY_devel="The ICU development files"
PROVIDES_devel="
	icu${secondaryArchSuffix}_devel = $portVersion
	cmd:icu_config${secondaryArchSuffix} = $portVersion compat >= 57
	devel:libicudata${secondaryArchSuffix} = $portVersion compat >= 57
	devel:libicui18n${secondaryArchSuffix} = $portVersion compat >= 57
	devel:libicuio${secondaryArchSuffix} = $portVersion compat >= 57
	devel:libicule${secondaryArchSuffix} = $portVersion compat >= 57
	devel:libiculx${secondaryArchSuffix} = $portVersion compat >= 57
	devel:libicutest${secondaryArchSuffix} = $portVersion compat >= 57
	devel:libicutu${secondaryArchSuffix} = $portVersion compat >= 57
	devel:libicuuc${secondaryArchSuffix} = $portVersion compat >= 57
	"
REQUIRES_devel="
	icu${secondaryArchSuffix} == $portVersion base
	"
fi

if [ -z "$secondaryArchSuffix" ]; then
	SUMMARY_tools="The ICU support tools"
	PROVIDES_tools="
		icu_tools = $portVersion
		cmd:derb
		cmd:genbrk
		cmd:genccode
		cmd:gencfu
		cmd:gencmn
		cmd:gencnval
		cmd:gendict
		cmd:gennorm2
		cmd:genrb
		cmd:gensprep
		cmd:icuinfo
		cmd:icupkg
		cmd:makeconv
		cmd:pkgdata
		"
	REQUIRES_tools="
		icu == $portVersion base
		haiku
		"
fi

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	"
BUILD_PREREQUIRES="
	cmd:autoconf
	cmd:awk
	cmd:gcc$secondaryArchSuffix
	cmd:ld$secondaryArchSuffix
	cmd:make
	cmd:pkg_config$secondaryArchSuffix
	cmd:sed
	cmd:unzip
	cmd:tar
	cmd:gunzip
	"

BUILD()
{
	cd source
	cp ../../../sources-2/tzdata*.tar.gz tools/tzcode/
	unzip -oq ../../../sources-3/icu4c-*-data.zip
	rm -f data/in/icudt??l.dat
	autoconf
	runConfigure ./configure \
		--disable-samples --disable-extras
	make $jobArgs
}

INSTALL()
{
	cd source
	make install

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

	if [ $effectiveTargetArchitecture == x86_gcc2 ]; then
		fixPkgconfig

		# Update icu-config to point to the develop/lib dir
		fixDevelopLibDirReferences \
			$binDir/icu-config

		# 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/icu$secondaryArchSuffix \
			$libDir/icu \
			$binDir/icu-config \
			$manDir/man1/icu-config.1
	else
		# No devel package for other architectures
		rm -rf $developDir \
			$dataDir/icu \
			$libDir/icu \
			$binDir/icu-config \
			$manDir/man1/icu-config.1
	fi

	# tools package
	if [ -z "$secondaryArchSuffix" ]; then
		packageEntries tools \
			$binDir \
			$manDir
	else
		rm -r $binDir $manDir
	fi
}

TEST()
{
	cd source
	make check
}
