SUMMARY="Apache Portable Runtime Utility Library"
HOMEPAGE="http://apr.apache.org/"
SRC_URI="http://archive.apache.org/dist/apr/apr-util-1.4.1.tar.gz"
LICENSE="Apache v2"
COPYRIGHT="2011 The Apache Software Foundation."
CHECKSUM_MD5="666a5d56098a9debf998510e304c8095"
REVISION="4"
ARCHITECTURES="x86_gcc2 x86 x86_64"

PATCHES="apr_util-1.4.1.patch"

PROVIDES="
	apr_util = $portVersion compat >= 1
	lib:libaprutil_1 = 0.4.1 compat >= 0
	"
REQUIRES="
	haiku >= $haikuVersion
	lib:libapr_1
	lib:libexpat
	lib:libiconv
	"
BUILD_REQUIRES="
	devel:libapr_1 >= 0.4.6
	devel:libexpat >= 1.5.2
	devel:libiconv
	"
BUILD_PREREQUIRES="
	haiku_devel >= $haikuVersion
	cmd:aclocal
	cmd:autoconf
	cmd:autoheader
	cmd:gcc
	cmd:ld
	cmd:libtoolize
	cmd:make
	"

SOURCE_DIR="apr-util-$portVersion"

PATCH()
{
	echo 'AM_INIT_AUTOMAKE' >> xml/expat/configure.in
}

BUILD()
{
	aprInstallDir=$portPackageLinksDir/lib~libapr_1
	expatInstallDir=$portPackageLinksDir/lib~libexpat

	rm -rf aclocal.m4
	mkdir -p m4
	libtoolize -fci
	aclocal --install -I m4
	autoconf -f

	cd xml/expat
	mkdir -p m4
	libtoolize -fci
	aclocal --install -I m4
	autoconf --force
	autoheader
	touch libtool.m4
	cd ../..

	# TODO: fix this hack!
	cp /boot/system/bin/libtool .
	ln -sfn $sourceDir/libtool /libtool

    runConfigure ./configure \
		--with-apr=$aprInstallDir \
		--with-expat=$expatInstallDir
	make $jobArgs
}

INSTALL()
{
	make install

	# prepare develop/lib
	prepareInstalledDevelLibs libaprutil-1
	fixPkgconfig

	# fix apu-1-config
	fixDevelopLibDirReferences $binDir/apu-1-config

	# remove superfluous .exp file
	rm $libDir/aprutil.exp

	# devel package
	packageEntries devel \
		$binDir \
		$developDir
}

DESCRIPTION="
The mission of the Apache Portable Runtime (APR) project is to create and \
maintain software libraries that provide a predictable and consistent \
interface to underlying platform-specific implementations. The primary goal is \
to provide an API to which software developers may code and be assured of \
predictable if not identical behaviour regardless of the platform on which \
their software is built, relieving them of the need to code special-case \
conditions to work around or take advantage of platform-specific deficiencies \
or features.
To give a brief overview, the primary core subsystems of APR 1.x include the \
following:
- atomic operations
- dynamic Shared Object loading
- file I/O
- locks (mutexes, condition variables, etc)
- memory management (high performance allocators)
- memory-mapped files
- multicast Sockets
- network I/O
- shared memory
- thread and Process management
- various data structures (tables, hashes, priority queues, etc)
"

# ----- devel package -------------------------------------------------------

PROVIDES_devel="
	apr_util_devel = portVersion compat >= 1
	cmd:apu_1_config = $portVersion compat >= 1
	devel:libaprutil_1 = 0.4.1 compat >= 0
	"
REQUIRES_devel="
	apr_util == $portVersion base
	"
