SUMMARY="A general purpose formula parser and interpreter"
DESCRIPTION="Ixion is a general purpose formula parser & interpreter that can \
calculate multiple named targets, or \"cells\".
The cells can be referenced from each other, and the library takes care \
of resolving their dependencies automatically upon calculation. The caller \
can run the calculation routine either in a single-threaded mode, or \
a multi-threaded mode. The library also supports re-calculations where the \
contents of one or more cells have been modified since the last calculation, \
and a partial calculation of only the affected cells need to be calculated."
HOMEPAGE="https://gitlab.com/ixion/ixion"
COPYRIGHT="Kohei Yoshida et al."
LICENSE="MPL v2.0"
REVISION="1"
SOURCE_URI="https://gitlab.com/ixion/ixion/-/archive/$portVersion/ixion-$portVersion.tar.bz2"
CHECKSUM_SHA256="1d01fcf56855334d6e0a75bd02339e08fd78359e09902660d4ad994f153d3167"
SOURCE_DIR="ixion-$portVersion"

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

boostMinimumVersion=1.69.0

soVersion="${portVersion%.*}"

PROVIDES="
	ixion$secondaryArchSuffix = $portVersion
	cmd:ixion_formula_tokenizer$secondaryArchSuffix = $portVersion
	cmd:ixion_parser$secondaryArchSuffix = $portVersion
	cmd:ixion_sorter$secondaryArchSuffix = $portVersion
	lib:libixion_$soVersion$secondaryArchSuffix = 0.0.0 compat >= 0
	"
REQUIRES="
	haiku$secondaryArchSuffix
	lib:libboost_filesystem$secondaryArchSuffix
	lib:libboost_program_options$secondaryArchSuffix
	lib:libboost_system$secondaryArchSuffix
	lib:libz$secondaryArchSuffix
	"

PROVIDES_devel="
	ixion${secondaryArchSuffix}_devel = $portVersion
	devel:libixion_$soVersion$secondaryArchSuffix = 0.0.0 compat >= 0
	"
REQUIRES_devel="
	ixion$secondaryArchSuffix == $portVersion base
	"

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	devel:libboost_filesystem$secondaryArchSuffix >= $boostMinimumVersion
	devel:libboost_program_options$secondaryArchSuffix >= $boostMinimumVersion
	devel:libboost_system$secondaryArchSuffix >= $boostMinimumVersion
	devel:libz$secondaryArchSuffix
	devel:libspdlog$secondaryArchSuffix
	devel:mdds >= 1.5
	"
BUILD_PREREQUIRES="
	cmd:aclocal
	cmd:autoconf
	cmd:automake
	cmd:gcc$secondaryArchSuffix
	cmd:ld$secondaryArchSuffix
	cmd:libtoolize$secondaryArchSuffix
	cmd:make
	cmd:pkg_config$secondaryArchSuffix
	"

defineDebugInfoPackage ixion$secondaryArchSuffix \
	"$binDir"/ixion-formula-tokenizer \
	"$binDir"/ixion-parser \
	"$binDir"/ixion-sorter \
	"$libDir"/libixion-$soVersion.so.0.0.0

PATCH()
{
	sed -i 's/-ldl//g' configure.ac
	sed -i 's/-pthread//g' configure.ac
	sed -i 's#$with_boost/include#$with_boost/headers#g' m4/boost.m4
}

BUILD()
{
	autoreconf -fi
	BOOST_ROOT="$portPackageLinksDir"/devel~libboost_program_options/develop
	runConfigure ./configure --enable-python=no
	make $jobArgs
}

INSTALL()
{
	make install

	rm -f "$libDir"/libixion-$soVersion.la

	prepareInstalledDevelLib libixion-$soVersion
	fixPkgconfig

	packageEntries devel \
		"$developDir"
}

TEST()
{
	LIBRARY_PATH="$sourceDir/src/libixion/.libs${LIBRARY_PATH:+:$LIBRARY_PATH}" \
	make check
}
