SUMMARY="Multi-platform GL implementation"
DESCRIPTION="
Mesa is an open-source implementation of the OpenGL specification. The OpenGL \
specification documents a system for rendering interactive 3D graphics.
Mesa fills the role of the Haiku OpenGL kit providing 3D rendering to Haiku \
applications.
"
HOMEPAGE="http://www.mesa3d.org/"
COPYRIGHT="1999-2015 Brian Paul All Rights Reserved."
LICENSE="MIT"
SOURCE_URI="ftp://ftp.freedesktop.org/pub/mesa/$portVersion/MesaLib-$portVersion.tar.bz2"
CHECKSUM_SHA256="43c6ced15e237cbb21b3082d7c0b42777c50c1f731d0d4b5efb5231063fb6a5b"
REVISION="1"
ARCHITECTURES="?x86 ?x86_64 ?arm ?ppc"
if [ $effectiveTargetArchitecture != x86_gcc2 ]; then
	# x86_gcc2 is fine as primary target architecture as long as we're building
	# for a different secondary architecture.
	ARCHITECTURES="$ARCHITECTURES ?x86_gcc2"
fi
SECONDARY_ARCHITECTURES="?x86"

PROVIDES="
	mesa$secondaryArchSuffix = $portVersion compat >= 10.0
	lib:libGL$secondaryArchSuffix
	"
REQUIRES="
	haiku$secondaryArchSuffix
	lib:libstdc++$secondaryArchSuffix
	lib:libgcc_s$secondaryArchSuffix
	"
BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	"
BUILD_PREREQUIRES="
	libxml2_python
	llvm${secondaryArchSuffix}
	cmd:bison
	cmd:find
	cmd:flex
	cmd:gcc$secondaryArchSuffix
	cmd:ld$secondaryArchSuffix
	cmd:scons
	cmd:sed
	"

SOURCE_DIR="Mesa-$portVersion"
#PATCHES="mesa-$portVersion.patchset"

BUILD()
{
	if [ -n "$secondaryArchSuffix" ]; then
		export HAIKU_SECONDARY_ARCH="$effectiveTargetArchitecture"
	fi
	scons $jobArgs build=release
	#scons $jobArgs build=debug
}

INSTALL()
{
	mesaBuildDir=build/haiku-$effectiveTargetArchitecture

	# libGL.so makes up the core of our OpenGL kit
	mkdir -p $libDir
	cp $(find $mesaBuildDir -name 'libGL.so') $libDir
	mkdir -p $developLibDir
	symlinkRelative -s $libDir/libGL.so $developLibDir

	# Our rendering add-ons
	mkdir -p $addOnsDir/opengl
	cp $(find $mesaBuildDir -name 'libswrast.so') \
		"$addOnsDir/opengl/Software Rasterizer"
	cp $(find $mesaBuildDir -name 'libswpipe.so') \
		"$addOnsDir/opengl/Software Pipe"

	# Set some nice version info
	setversion "$libDir/libGL.so" -app 10 3 7 -long "Haiku OpenGL kit"
	setversion "$addOnsDir/opengl/Software Rasterizer" -app 10 3 7 -long "Mesa software rasterization renderer"
	setversion "$addOnsDir/opengl/Software Pipe" -app 10 3 7 -long "Gallium LLVM software pipe renderer"

	# OpenGL Kit
	mkdir -p $includeDir/os/opengl
	cp ./include/HaikuGL/OpenGLKit.h $includeDir/os/
	cp ./include/HaikuGL/GLView.h $includeDir/os/opengl/
	cp ./include/HaikuGL/GLRenderer.h $includeDir/os/opengl/

	# Standard GL headers
	mkdir -p $includeDir/GL
	cp ./include/GL/gl.h $includeDir/GL/
	cp ./include/GL/gl_mangle.h $includeDir/GL/
	cp ./include/GL/glext.h $includeDir/GL/

	# Create GL symlink in opengl kit
	symlinkRelative -s $includeDir/GL $includeDir/os/opengl/GL

	# devel package
	packageEntries devel \
		$developDir

	# swpipe renderer package
	packageEntries swpipe \
		"$addOnsDir/opengl/Software Pipe"

	# swrast renderer package
	packageEntries swrast \
		"$addOnsDir/opengl/Software Rasterizer"
}

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

PROVIDES_devel="
	mesa${secondaryArchSuffix}_devel = $portVersion
	devel:libGL$secondaryArchSuffix = $portVersion
	"

REQUIRES_devel="
	mesa$secondaryArchSuffix == $portVersion base
	"

# ===== Mesa OpenGL Add-ons ==================================================
# ----- swrast package -------------------------------------------------------

SUMMARY_swrast="Mesa software rasterization renderer"
DESCRIPTION_swrast="This 3D BGLRenderer add-on provides Mesa software \
rasterization on Haiku systems. Software rasterization performs all 3D \
rendering on the systems CPU and doesn't require any specialized hardware. \
Software rasterization is generally considered a fallback 3D rendering method \
as performance is limited.
"
PROVIDES_swrast="
	mesa${secondaryArchSuffix}_swrast = $portVersion
	"
REQUIRED_swrast="
	mesa$secondaryArchSuffix == $portVersion base
	"

# ===== Gallium OpenGL Add-ons ===============================================
# ----- swpipe package -------------------------------------------------------

SUMMARY_swpipe="Mesa LLVM enhanced Gallium software pipe renderer"
DESCRIPTION_swpipe="This 3D BGLRenderer add-on provides Gallium LLVM enhanced \
software rendering. Software pipe rendering performs all 3D rendering on the \
systems CPU and doesn't require any specialized hardware. The usage of LLVM \
over traditional rasterization gives this renderer a boost in performance.
Gallium software pipe rendering is in an extremely early state as of this \
version of Mesa, and may not function as expected.
"
PROVIDES_swpipe="
	mesa${secondaryArchSuffix}_swpipe = $portVersion
	"
REQUIRED_swpipe="
	mesa$secondaryArchSuffix == $portVersion base
	"
