SUMMARY="A set of libraries for the C++ programming language"
DESCRIPTION="
Boost is a set of libraries for the C++ programming language that provide \
support for tasks and structures such as linear algebra, pseudorandom number \
generation, multithreading, image processing, regular expressions, and unit \
testing. It contains over eighty individual libraries.
"
HOMEPAGE="https://www.boost.org/"
SOURCE_URI="http://sourceforge.net/projects/boost/files/boost/$portVersion/boost_1_57_0.tar.bz2"
CHECKSUM_SHA256="910c8c022a33ccec7f088bd65d4f14b466588dda94ba2124e78b8c57db264967"
REVISION="3"
LICENSE="Boost v1.0"
COPYRIGHT="1998-2014 Beman Dawes, David Abrahams, Rene Rivera, et al."
ARCHITECTURES="?all !x86_gcc2 x86"
SECONDARY_ARCHITECTURES="x86"

SOURCE_DIR="boost_1_57_0"

PATCHES="boost-1.57.0.patchset"

PROVIDES="
	boost$secondaryArchSuffix = $portVersion
	"

REQUIRES="
	haiku$secondaryArchSuffix
	boost_atomic$secondaryArchSuffix == $portVersion
	boost_chrono$secondaryArchSuffix == $portVersion
	boost_container$secondaryArchSuffix == $portVersion
	boost_context$secondaryArchSuffix == $portVersion
	boost_coroutine$secondaryArchSuffix == $portVersion
	boost_date_time$secondaryArchSuffix == $portVersion
	boost_filesystem$secondaryArchSuffix == $portVersion
	boost_graph$secondaryArchSuffix == $portVersion
	boost_iostreams$secondaryArchSuffix == $portVersion
	boost_locale$secondaryArchSuffix == $portVersion
	boost_log$secondaryArchSuffix == $portVersion
	boost_math$secondaryArchSuffix == $portVersion
	boost_program_options$secondaryArchSuffix == $portVersion
	boost_random$secondaryArchSuffix == $portVersion
	boost_regex$secondaryArchSuffix == $portVersion
	boost_serialization$secondaryArchSuffix == $portVersion
	boost_signals$secondaryArchSuffix == $portVersion
	boost_system$secondaryArchSuffix == $portVersion
	boost_test$secondaryArchSuffix == $portVersion
	boost_thread$secondaryArchSuffix == $portVersion
	boost_timer$secondaryArchSuffix == $portVersion
	boost_unit_test_framework$secondaryArchSuffix == $portVersion
	boost_wave$secondaryArchSuffix == $portVersion
	"

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	devel:libbz2$secondaryArchSuffix
	devel:libz$secondaryArchSuffix
	devel:libicuuc$secondaryArchSuffix
	devel:libicui18n$secondaryArchSuffix
	devel:libicudata$secondaryArchSuffix
	"

BUILD_PREREQUIRES="
	cmd:gcc$secondaryArchSuffix
	cmd:ld$secondaryArchSuffix
	cmd:sed
	"

BUILD()
{
	./bootstrap.sh \
		--prefix=$prefix \
		--exec-prefix=$binDir \
		--libdir=$libDir \
		--includedir=$includeDir

	./b2 -q $jobArgs \
		--without-mpi \
		--enable-threads=posix \
		--enable-thread-local-alloc \
 		--enable-parallel-mark \
		inlining=on \
		threading=multi \
		variant=release \
		link=static,shared \
		runtime-link=shared \
		--without-python
}

INSTALL()
{
	./b2 -q $jobArgs \
		--without-mpi \
		--enable-threads=posix \
		--enable-thread-local-alloc \
 		--enable-parallel-mark \
		inlining=on \
		threading=multi \
		variant=release \
		link=static,shared \
		runtime-link=shared \
		--without-python \
		install

	prepareInstalledDevelLibs libboost_atomic libboost_chrono \
		libboost_container libboost_context libboost_coroutine \
		libboost_date_time libboost_filesystem libboost_iostreams \
		libboost_locale libboost_log libboost_log_setup \
		libboost_math_c99 libboost_math_c99f libboost_math_c99l \
		libboost_math_tr1 libboost_math_tr1f libboost_math_tr1l \
		libboost_program_options libboost_random libboost_regex \
		libboost_serialization libboost_signals libboost_system \
		libboost_thread libboost_timer libboost_unit_test_framework \
		libboost_wave libboost_wserialization libboost_prg_exec_monitor \
		libboost_exception libboost_graph libboost_test_exec_monitor

	packageEntries devel $developDir
	packageEntries atomic $libDir/libboost_atomic*
	packageEntries chrono $libDir/libboost_chrono*
	packageEntries container $libDir/libboost_container*
	packageEntries context $libDir/libboost_context*
	packageEntries coroutine $libDir/libboost_coroutine*
	packageEntries date_time $libDir/libboost_date_time*
#	packageEntries exception $libDir/libboost_exception*
	packageEntries filesystem $libDir/libboost_filesystem*
	packageEntries graph $libDir/libboost_graph*
	packageEntries iostreams $libDir/libboost_iostreams*
	packageEntries locale $libDir/libboost_locale*
	packageEntries log $libDir/libboost_log*
	packageEntries math $libDir/libboost_math*
	packageEntries program_options $libDir/libboost_program_options*
	packageEntries random $libDir/libboost_random*
	packageEntries regex $libDir/libboost_regex*
	packageEntries serialization $libDir/libboost_serialization* $libDir/libboost_wserialization*
	packageEntries signals $libDir/libboost_signals*
	packageEntries system $libDir/libboost_system*
	packageEntries test $libDir/libboost_prg_exec_monitor*
	packageEntries thread $libDir/libboost_thread*
	packageEntries timer $libDir/libboost_timer*
	packageEntries unit_test_framework $libDir/libboost_unit_test_framework*
	packageEntries wave $libDir/libboost_wave*
}

TEST()
{
	cd status
	../bjam $jobArgs
}

PROVIDES_devel="
	boost${secondaryArchSuffix}_devel = $portVersion
	devel:libboost_atomic$secondaryArchSuffix = $portVersion
	devel:libboost_chrono$secondaryArchSuffix = $portVersion
	devel:libboost_container$secondaryArchSuffix = $portVersion
	devel:libboost_context$secondaryArchSuffix = $portVersion
	devel:libboost_coroutine$secondaryArchSuffix = $portVersion
	devel:libboost_date_time$secondaryArchSuffix = $portVersion
	devel:libboost_exception$secondaryArchSuffix = $portVersion
	devel:libboost_filesystem$secondaryArchSuffix = $portVersion
	devel:libboost_graph$secondaryArchSuffix = $portVersion
	devel:libboost_iostreams$secondaryArchSuffix = $portVersion
	devel:libboost_locale$secondaryArchSuffix = $portVersion
	devel:libboost_log$secondaryArchSuffix = $portVersion
	devel:libboost_log_setup$secondaryArchSuffix = $portVersion
	devel:libboost_math_c99$secondaryArchSuffix = $portVersion
	devel:libboost_math_c99f$secondaryArchSuffix = $portVersion
	devel:libboost_math_c99l$secondaryArchSuffix = $portVersion
	devel:libboost_math_tr1$secondaryArchSuffix = $portVersion
	devel:libboost_math_tr1f$secondaryArchSuffix = $portVersion
	devel:libboost_math_tr1l$secondaryArchSuffix = $portVersion
	devel:libboost_prg_exec_monitor$secondaryArchSuffix = $portVersion
	devel:libboost_program_options$secondaryArchSuffix = $portVersion
	devel:libboost_random$secondaryArchSuffix = $portVersion
	devel:libboost_regex$secondaryArchSuffix = $portVersion
	devel:libboost_serialization$secondaryArchSuffix = $portVersion
	devel:libboost_signals$secondaryArchSuffix = $portVersion
	devel:libboost_system$secondaryArchSuffix = $portVersion
	devel:libboost_test_exec_monitor$secondaryArchSuffix = $portVersion
	devel:libboost_thread$secondaryArchSuffix = $portVersion
	devel:libboost_timer$secondaryArchSuffix = $portVersion
	devel:libboost_unit_test_framework$secondaryArchSuffix = $portVersion
	devel:libboost_wave$secondaryArchSuffix = $portVersion
	devel:libboost_wserialization$secondaryArchSuffix = $portVersion
	"

REQUIRES_devel="
	haiku$secondaryArchSuffix
	boost$secondaryArchSuffix == $portVersion
	boost_atomic$secondaryArchSuffix == $portVersion
	boost_chrono$secondaryArchSuffix == $portVersion
	boost_container$secondaryArchSuffix == $portVersion
	boost_context$secondaryArchSuffix == $portVersion
	boost_coroutine$secondaryArchSuffix == $portVersion
	boost_date_time$secondaryArchSuffix == $portVersion
#	boost_exception$secondaryArchSuffix == $portVersion
	boost_filesystem$secondaryArchSuffix == $portVersion
	boost_graph$secondaryArchSuffix == $portVersion
	boost_iostreams$secondaryArchSuffix == $portVersion
	boost_locale$secondaryArchSuffix == $portVersion
	boost_log$secondaryArchSuffix == $portVersion
	boost_math$secondaryArchSuffix == $portVersion
	boost_program_options$secondaryArchSuffix == $portVersion
	boost_random$secondaryArchSuffix == $portVersion
	boost_regex$secondaryArchSuffix == $portVersion
	boost_serialization$secondaryArchSuffix == $portVersion
	boost_signals$secondaryArchSuffix == $portVersion
	boost_system$secondaryArchSuffix == $portVersion
	boost_test$secondaryArchSuffix == $portVersion
	boost_thread$secondaryArchSuffix == $portVersion
	boost_timer$secondaryArchSuffix == $portVersion
	boost_unit_test_framework$secondaryArchSuffix == $portVersion
	boost_wave$secondaryArchSuffix == $portVersion
	"

PROVIDES_atomic="
	boost_atomic$secondaryArchSuffix = $portVersion
	lib:libboost_atomic$secondaryArchSuffix = $portVersion
	"

REQUIRES_atomic="
	haiku$secondaryArchSuffix
	"

PROVIDES_chrono="
	boost_chrono$secondaryArchSuffix = $portVersion
	lib:libboost_chrono$secondaryArchSuffix = $portVersion
	"

REQUIRES_chrono="
	haiku$secondaryArchSuffix
	lib:libboost_system$secondaryArchSuffix == $portVersion
	"

PROVIDES_container="
	boost_container$secondaryArchSuffix = $portVersion
	lib:libboost_container$secondaryArchSuffix = $portVersion
	"

REQUIRES_container="
	haiku$secondaryArchSuffix
	"

PROVIDES_context="
	boost_context$secondaryArchSuffix = $portVersion
	lib:libboost_context$secondaryArchSuffix = $portVersion
	"

REQUIRES_context="
	haiku$secondaryArchSuffix
	"

PROVIDES_coroutine="
	boost_coroutine$secondaryArchSuffix = $portVersion
	lib:libboost_coroutine$secondaryArchSuffix = $portVersion
	"

REQUIRES_coroutine="
	haiku$secondaryArchSuffix
	lib:libboost_chrono$secondaryArchSuffix == $portVersion
	lib:libboost_context$secondaryArchSuffix == $portVersion
	lib:libboost_system$secondaryArchSuffix == $portVersion
	lib:libboost_thread$secondaryArchSuffix == $portVersion
	"

PROVIDES_date_time="
	boost_date_time$secondaryArchSuffix = $portVersion
	lib:libboost_date_time$secondaryArchSuffix = $portVersion
	"

REQUIRES_date_time="
	haiku$secondaryArchSuffix
	"

#PROVIDES_exception="
#	boost_exception$secondaryArchSuffix = $portVersion
#	lib:libboost_exception$secondaryArchSuffix = $portVersion
#	"

#REQUIRES_exception="
#	haiku$secondaryArchSuffix
#	"

PROVIDES_filesystem="
	boost_filesystem$secondaryArchSuffix = $portVersion
	lib:libboost_filesystem$secondaryArchSuffix = $portVersion
	"

REQUIRES_filesystem="
	haiku$secondaryArchSuffix
	lib:libboost_system$secondaryArchSuffix == $portVersion
	lib:libz$secondaryArchSuffix
	lib:libbz2$secondaryArchSuffix
	"

PROVIDES_graph="
	boost_graph$secondaryArchSuffix = $portVersion
	lib:libboost_graph$secondaryArchSuffix = $portVersion
	"

REQUIRES_graph="
	haiku$secondaryArchSuffix
	lib:libboost_regex$secondaryArchSuffix == $portVersion
	lib:libicuuc$secondaryArchSuffix
	lib:libicui18n$secondaryArchSuffix
	lib:libicudata$secondaryArchSuffix
	"

PROVIDES_iostreams="
	boost_iostreams$secondaryArchSuffix = $portVersion
	lib:libboost_iostreams$secondaryArchSuffix = $portVersion
	"

REQUIRES_iostreams="
	haiku$secondaryArchSuffix
	lib:libz$secondaryArchSuffix
	lib:libbz2$secondaryArchSuffix
	"

PROVIDES_locale="
	boost_locale$secondaryArchSuffix = $portVersion
	lib:libboost_locale$secondaryArchSuffix = $portVersion
	"

REQUIRES_locale="
	haiku$secondaryArchSuffix
	lib:libboost_chrono$secondaryArchSuffix == $portVersion
	lib:libboost_system$secondaryArchSuffix == $portVersion
	lib:libboost_thread$secondaryArchSuffix == $portVersion
	lib:libicuuc$secondaryArchSuffix
	lib:libicui18n$secondaryArchSuffix
	lib:libicudata$secondaryArchSuffix
	"

PROVIDES_log="
	boost_log$secondaryArchSuffix = $portVersion
	lib:libboost_log$secondaryArchSuffix = $portVersion
	lib:libboost_log_setup$secondaryArchSuffix = $portVersion
	"

REQUIRES_log="
	haiku$secondaryArchSuffix
	lib:libboost_chrono$secondaryArchSuffix == $portVersion
	lib:libboost_date_time$secondaryArchSuffix == $portVersion
	lib:libboost_filesystem$secondaryArchSuffix == $portVersion
	lib:libboost_regex$secondaryArchSuffix == $portVersion
	lib:libboost_system$secondaryArchSuffix == $portVersion
	lib:libboost_thread$secondaryArchSuffix == $portVersion
	lib:libicuuc$secondaryArchSuffix
	lib:libicui18n$secondaryArchSuffix
	lib:libicudata$secondaryArchSuffix
	"

PROVIDES_math="
	boost_math$secondaryArchSuffix = $portVersion
	lib:libboost_math_c99$secondaryArchSuffix = $portVersion
	lib:libboost_math_c99f$secondaryArchSuffix = $portVersion
	lib:libboost_math_c99l$secondaryArchSuffix = $portVersion
	lib:libboost_math_tr1$secondaryArchSuffix = $portVersion
	lib:libboost_math_tr1f$secondaryArchSuffix = $portVersion
	lib:libboost_math_tr1l$secondaryArchSuffix = $portVersion
	"

REQUIRES_math="
	haiku$secondaryArchSuffix
	"

PROVIDES_program_options="
	boost_program_options$secondaryArchSuffix = $portVersion
	lib:libboost_program_options$secondaryArchSuffix = $portVersion
	"

REQUIRES_program_options="
	haiku$secondaryArchSuffix
	"

PROVIDES_random="
	boost_random$secondaryArchSuffix = $portVersion
	lib:libboost_random$secondaryArchSuffix = $portVersion
	"

REQUIRES_random="
	haiku$secondaryArchSuffix
	lib:libboost_system$secondaryArchSuffix == $portVersion
	"

PROVIDES_regex="
	boost_regex$secondaryArchSuffix = $portVersion
	lib:libboost_regex$secondaryArchSuffix = $portVersion
	"

REQUIRES_regex="
	haiku$secondaryArchSuffix
	lib:libicuuc$secondaryArchSuffix
	lib:libicui18n$secondaryArchSuffix
	lib:libicudata$secondaryArchSuffix
	"

PROVIDES_serialization="
	boost_serialization$secondaryArchSuffix = $portVersion
	lib:libboost_serialization$secondaryArchSuffix = $portVersion
	lib:libboost_wserialization$secondaryArchSuffix = $portVersion
	"

REQUIRES_serialization="
	haiku$secondaryArchSuffix
	"

PROVIDES_signals="
	boost_signals$secondaryArchSuffix = $portVersion
	lib:libboost_signals$secondaryArchSuffix = $portVersion
	"

REQUIRES_signals="
	haiku$secondaryArchSuffix
	"

PROVIDES_system="
	boost_system$secondaryArchSuffix = $portVersion
	lib:libboost_system$secondaryArchSuffix = $portVersion
	"

REQUIRES_system="
	haiku$secondaryArchSuffix
	"

PROVIDES_test="
	boost_test$secondaryArchSuffix = $portVersion
	lib:libboost_prg_exec_monitor$secondaryArchSuffix = $portVersion
#	lib:libboost_test_exec_monitor$secondaryArchSuffix = $portVersion
	"

REQUIRES_test="
	haiku$secondaryArchSuffix
	"

PROVIDES_thread="
	boost_thread$secondaryArchSuffix = $portVersion
	lib:libboost_thread$secondaryArchSuffix = $portVersion
	"

REQUIRES_thread="
	haiku$secondaryArchSuffix
	lib:libboost_system$secondaryArchSuffix == $portVersion
	"

PROVIDES_timer="
	boost_timer$secondaryArchSuffix = $portVersion
	lib:libboost_timer$secondaryArchSuffix = $portVersion
	"

REQUIRES_timer="
	haiku$secondaryArchSuffix
	lib:libboost_chrono$secondaryArchSuffix == $portVersion
	lib:libboost_system$secondaryArchSuffix == $portVersion
	"

PROVIDES_unit_test_framework="
	boost_unit_test_framework$secondaryArchSuffix = $portVersion
	lib:libboost_unit_test_framework$secondaryArchSuffix = $portVersion
	"

REQUIRES_unit_test_framework="
	haiku$secondaryArchSuffix
	"

PROVIDES_wave="
	boost_wave$secondaryArchSuffix = $portVersion
	lib:libboost_wave$secondaryArchSuffix = $portVersion
	"

REQUIRES_wave="
	haiku$secondaryArchSuffix
	lib:libboost_chrono$secondaryArchSuffix == $portVersion
	lib:libboost_date_time$secondaryArchSuffix == $portVersion
	lib:libboost_filesystem$secondaryArchSuffix == $portVersion
	lib:libboost_system$secondaryArchSuffix == $portVersion
	lib:libboost_thread$secondaryArchSuffix == $portVersion
	"
