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-2013 Brian Paul All Rights Reserved."
LICENSE="MIT"
SOURCE_URI="ftp://ftp.freedesktop.org/pub/mesa/10.1.1/MesaLib-10.1.1.tar.bz2"
CHECKSUM_SHA256="f3ae730ed81fffcb1ec59076813f9955157da7a1dd9ba23a6b1b8ff8cf6798b0"
REVISION="1"
ARCHITECTURES="x86 x86_64"
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-10.1.1.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 1 1 -long "Haiku OpenGL kit"
	setversion "$addOnsDir/opengl/Software Rasterizer" -app 10 1 1 -long "Mesa software rasterization renderer"
	setversion "$addOnsDir/opengl/Software Pipe" -app 10 1 1 -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
	"

