SUMMARY="A C++ linear algebra library"
DESCRIPTION="The library provides efficient classes for vectors, matrices and \
cubes, as well as 200+ associated functions (eg. contiguous and non-contiguous \
submatrix views). Various matrix decompositions are provided through \
integration with LAPACK, or one of its high performance drop-in replacements."
HOMEPAGE="http://arma.sourceforge.net/"
COPYRIGHT="2008-2020 Conrad Sanderson
	2008-2016 National ICT Australia (NICTA)
	2017-2020 Arroyo Consortium
	2017-2020 Data61, CSIRO"
LICENSE="Apache v2"
REVISION="1"
SOURCE_URI="https://downloads.sourceforge.net/arma/armadillo-$portVersion.tar.xz"
CHECKSUM_SHA256="89fdd898bf6bff75f6efc3a301817e4ede752b9a80927fb07ee358b13e353922"
SOURCE_DIR="armadillo-$portVersion"

ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"

libVersion="$portVersion"
libVersionCompat="$libVersion compat >= ${libVersion%%.*}"

PROVIDES="
	armadillo$secondaryArchSuffix = $portVersion
	lib:libarmadillo$secondaryArchSuffix = $libVersionCompat
	"
REQUIRES="
	haiku$secondaryArchSuffix
	lib:libarpack$secondaryArchSuffix
	lib:libhdf5$secondaryArchSuffix
	lib:liblapack$secondaryArchSuffix
	lib:libopenblas$secondaryArchSuffix
	lib:libz$secondaryArchSuffix
	"

PROVIDES_devel="
	armadillo${secondaryArchSuffix}_devel = $portVersion
	devel:libarmadillo$secondaryArchSuffix = $libVersionCompat
	"
REQUIRES_devel="
	armadillo$secondaryArchSuffix == $portVersion base
	"
CONFLICTS_devel="
	armadillo${secondaryArchSuffix}_devel
	"

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	devel:libarpack$secondaryArchSuffix
	devel:libhdf5$secondaryArchSuffix
	devel:liblapack$secondaryArchSuffix
	devel:libopenblas$secondaryArchSuffix
	devel:libsuperlu$secondaryArchSuffix
	devel:libz$secondaryArchSuffix
	"
BUILD_PREREQUIRES="
	cmd:cmake
	cmd:g++$secondaryArchSuffix
	cmd:make
	cmd:pkg_config$secondaryArchSuffix
	cmd:sed
	"

defineDebugInfoPackage armadillo$secondaryArchSuffix \
	"$libDir"/libarmadillo.so.$libVersion

PATCH()
{
	# Enable some optional features
	sed --regexp-extended -i '/ARMA_USE_(SUPERLU|ARPACK)/s/^\/\///g' include/armadillo_bits/config.hpp
}

BUILD()
{
	mkdir -p build && cd "$_"

	cmake .. \
		-DDETECT_HDF5=ON \
		-DBUILD_SHARED_LIBS=ON \
		-DCMAKE_BUILD_TYPE=RelWithDebInfo \
		$cmakeDirArgs

	make $jobArgs
}

INSTALL()
{
	cd build
	make install

	mkdir -p $libDir/cmake/
	cp -r $dataDir/Armadillo/CMake/. $libDir/cmake/.
	rm -rf $dataDir/Armadillo/

	prepareInstalledDevelLib libarmadillo

	sed  -i "1i prefix=$prefix" \
		$libDir/pkgconfig/armadillo.pc

	fixPkgconfig

	packageEntries devel \
		$developDir \
		$libDir/cmake
}

TEST()
{
	export LIBRARY_PATH=$LIBRARY_PATH:$sourceDir/build
	export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:$sourceDir/include

	sed -i "s|LIB_FLAGS = -larmadillo|LIB_FLAGS = -lopenblas -llapack -larpack -lsuperlu -larmadillo -L$sourceDir/build|g" tests/Makefile

	make -C tests all $jobArgs

	./tests/main
}
