SUMMARY="An open-source subdivision surface library"
DESCRIPTION="OpenSubdiv is a set of open source libraries that implement high \
performance subdivision surface (subdiv) evaluation on massively parallel CPU \
and GPU architectures. This codepath is optimized for drawing deforming \
subdivs with static topology at interactive framerates. The resulting limit \
surface matches Pixar's Renderman to numerical precision."
HOMEPAGE="https://graphics.pixar.com/opensubdiv/"
COPYRIGHT="2013-2020 Pixar"
LICENSE="Apache v2"
REVISION="1"
SOURCE_URI="https://github.com/PixarAnimationStudios/OpenSubdiv/archive/v${portVersion//\./_}.tar.gz"
CHECKSUM_SHA256="7b22eb27d636ab0c1e03722c7a5a5bd4f11664ee65c9b48f341a6d0ce7f36745"
SOURCE_FILENAME="opensubdiv-$portVersion.tar.gz"
SOURCE_DIR="OpenSubdiv-${portVersion//\./_}"

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

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

PROVIDES="
	opensubdiv$secondaryArchSuffix = $portVersion
	lib:libosdCPU$secondaryArchSuffix = $libVersionCompat
	lib:libosdGPU$secondaryArchSuffix = $libVersionCompat
	"
REQUIRES="
	haiku$secondaryArchSuffix
	cmd:python2
	lib:libGl$secondaryArchSuffix
	lib:libglew$secondaryArchSuffix
	lib:libGLU$secondaryArchSuffix
	lib:libgomp$secondaryArchSuffix
	lib:libopencl$secondaryArchSuffix
	lib:libtbb$secondaryArchSuffix
	lib:libtbbmalloc$secondaryArchSuffix
	lib:libtbbmalloc_proxy$secondaryArchSuffix
	lib:libz$secondaryArchSuffix
	"

PROVIDES_tools="
	opensubdiv${secondaryArchSuffix}_tools = $portVersion
	cmd:far_perf
	cmd:far_regression
	cmd:hbr_baseline
	cmd:hbr_regression
	cmd:stringify
	"
REQUIRES_tools="
	opensubdiv$secondaryArchSuffix == $portVersion
	$REQUIRES
	"

PROVIDES_devel="
	opensubdiv${secondaryArchSuffix}_devel = $portVersion
	devel:libosdCPU$secondaryArchSuffix = $libVersionCompat
	devel:libosdGPU$secondaryArchSuffix = $libVersionCompat
	"
REQUIRES_devel="
	opensubdiv$secondaryArchSuffix == $portVersion
	"

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	devel:libGl$secondaryArchSuffix
	devel:libglew$secondaryArchSuffix
	devel:libGLU$secondaryArchSuffix
	devel:libgomp$secondaryArchSuffix
	devel:libopencl$secondaryArchSuffix
	devel:libopencl_headers$secondaryArchSuffix
	devel:libtbb$secondaryArchSuffix
	devel:libtbbmalloc$secondaryArchSuffix
	devel:libtbbmalloc_proxy$secondaryArchSuffix
	devel:libz$secondaryArchSuffix
	"
BUILD_PREREQUIRES="
	cmd:cmake
	cmd:gcc$secondaryArchSuffix
	cmd:make
	cmd:python2
	"

defineDebugInfoPackage opensubdiv$secondaryArchSuffix \
	$libDir/libosdCPU.so.$libVersion \
	$libDir/libosdGPU.so.$libVersion

BUILD()
{
	mkdir -p build && cd build

	cmake .. -DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=$prefix \
		-DCMAKE_BINDIR_BASE=$prefix/bin \
		-DCMAKE_INCDIR_BASE=$includeDir/opensubdiv \
		-DCMAKE_LIBDIR_BASE=$libDir \
		-DCMAKE_SKIP_RPATH=ON \
		-DNO_EXAMPLES=ON \
		-DNO_TUTORIALS=ON \
		-DNO_GLFW_X11=ON \
		-DGLEW_LIBRARY="`finddir B_SYSTEM_DIRECTORY`/$relativeLibDir" \
		-DGLEW_INCLUDE_DIR="`finddir B_SYSTEM_DIRECTORY`/$relativeIncludeDir/GL"
	make $jobArgs
}

INSTALL()
{
	cd build
	make install

	prepareInstalledDevelLibs \
		libosdCPU \
		libosdGPU
	fixPkgconfig

	packageEntries tools \
		$prefix/bin
	packageEntries devel \
		$developDir
}

TEST()
{
	cd build
	make test
}
