# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/media-gfx/blender/blender-2.64a.ebuild,v 1.2 2012/12/31 16:02:50 flameeyes Exp $

EAPI=4
PYTHON_DEPEND="3:3.2"

PATCHSET="1"

inherit multilib scons-utils eutils python versionator flag-o-matic toolchain-funcs pax-utils check-reqs

IUSE="cycles +game-engine player +elbeem +openexr ffmpeg jpeg2k openal
	openmp +dds fftw jack doc sndfile tweak-mode sdl sse redcode
	iconv collada 3dmouse debug nls"
REQUIRED_USE="player? ( game-engine ) redcode? ( jpeg2k )"

LANGS="en ar bg ca cs de el es es_ES fa fi fr he hr hu id it ja ky ne nl pl pt pt_BR ru sr sr@latin sv tr uk zh_CN zh_TW"
for X in ${LANGS} ; do
	IUSE+=" linguas_${X}"
	REQUIRED_USE+=" linguas_${X}? ( nls )"
done

DESCRIPTION="3D Creation/Animation/Publishing System"
HOMEPAGE="http://www.blender.org"

case ${PV} in
	*_p*)
		SRC_URI="http://dev.gentoo.org/~lu_zero/${P}.tar.gz" ;;
	*)
		SRC_URI="http://download.blender.org/source/${P}.tar.gz" ;;
esac

if [[ -n ${PATCHSET} ]]; then
	SRC_URI+=" http://dev.gentoo.org/~flameeyes/${PN}/${P}-patches-${PATCHSET}.tar.xz"
fi

SLOT="0"
LICENSE="|| ( GPL-2 BL )"
KEYWORDS="~amd64 ~x86"

RDEPEND="virtual/jpeg
	media-libs/libpng:0
	x11-libs/libXi
	x11-libs/libX11
	media-libs/tiff:0
	media-libs/libsamplerate
	virtual/opengl
	virtual/glu
	>=media-libs/freetype-2.0
	virtual/libintl
	media-libs/glew
	>=sci-physics/bullet-2.78[-double-precision]
	dev-cpp/eigen:3
	sci-libs/colamd
	sci-libs/ldl
	dev-cpp/glog[gflags]
	sys-libs/zlib
	cycles? (
		media-libs/openimageio
		>=dev-libs/boost-1.44[threads(+)]
	)
	iconv? ( dev-libs/libiconv )
	sdl? ( media-libs/libsdl[audio,joystick] )
	openexr? ( media-libs/openexr )
	ffmpeg? (
		>=virtual/ffmpeg-0.6.90[x264,mp3,encode,theora,jpeg2k?]
	)
	openal? ( >=media-libs/openal-1.6.372 )
	fftw? ( sci-libs/fftw:3.0 )
	jack? ( media-sound/jack-audio-connection-kit )
	sndfile? ( media-libs/libsndfile )
	collada? ( media-libs/opencollada )
	3dmouse? ( dev-libs/libspnav )"

DEPEND="dev-util/scons
	doc? (
		dev-python/sphinx
		app-doc/doxygen[-nodot(-),dot(+)]
	)
	nls? ( sys-devel/gettext )
	${RDEPEND}"

pkg_pretend() {
	if use openmp && ! tc-has-openmp; then
		eerror "You are using gcc built without 'openmp' USE."
		eerror "Switch CXX to an OpenMP capable compiler."
		die "Need openmp"
	fi

	if use doc; then
		CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend
	fi
}

pkg_setup() {
	python_set_active_version 3
}

src_prepare() {
	epatch "${WORKDIR}"/${PV}/*.patch

	# remove some bundled deps
	rm -r \
		extern/libopenjpeg \
		extern/glew \
		extern/Eigen3 \
		extern/bullet2 \
		extern/colamd \
		extern/binreloc \
		extern/libmv/third_party/{ldl,glog,gflags} \
		|| die

	ewarn "$(echo "Remaining bundled dependencies:";
			( find extern -mindepth 1 -maxdepth 1 -type d; find extern/libmv/third_party -mindepth 1 -maxdepth 1 -type d; ) | sed 's|^|- |')"
}

src_configure() {
	# FIX: forcing '-funsigned-char' fixes an anti-aliasing issue with menu
	# shadows, see bug #276338 for reference
	append-flags -funsigned-char
	append-lfs-flags

	local mycflags=$(printf "'%s'," ${CPPFLAGS} ${CFLAGS} | sed -e 's:,$::')
	local mycxxflags=$(printf "'%s'," ${CPPFLAGS} ${CXXFLAGS} | sed -e 's:,$::')
	local myldflags=$(printf "'%s'," ${LDFLAGS} | sed -e 's:,$::')
	cat << EOF >> "${S}"/user-config.py
CC="$(tc-getCC)"
CXX="$(tc-getCXX)"
CFLAGS=[${mycflags}]
CXXFLAGS=[${mycxxflags}]
BGE_CXXFLAGS=[${mycxxflags}]
LINKFLAGS=[${myldflags}]
PLATFORM_LINKFLAGS=[${myldflags}]
CCFLAGS=[]
REL_CFLAGS=[]
REL_CXXFLAGS=[]
REL_CCFLAGS=[]
C_WARN=[]
CC_WARN=[]
CXX_WARN=[]

BF_OPENJPEG="/usr"
BF_OPENJPEG_INC="/usr/include"
BF_OPENJPEG_LIB="openjpeg"

WITH_BF_BULLET=1
BF_BULLET="/usr/include"
BF_BULLET_INC="/usr/include/bullet /usr/include/bullet/BulletCollision /usr/include/bullet/BulletDynamics /usr/include/bullet/LinearMath /usr/include/bullet/BulletSoftBody"
BF_BULLET_LIB="BulletSoftBody BulletDynamics BulletCollision LinearMath"

WITH_BF_COLAMD=1
BF_COLAMD="/usr"
BF_COLAMD_INC="/usr/include"
BF_COLAMD_LIB="colamd"

BF_OPENCOLLADA_INC="/usr/include/opencollada/"
BF_OPENCOLLADA_LIBPATH="/usr/$(get_libdir)/opencollada/"

BF_OIIO="/usr"
BF_OIIO_INC="/usr/include"
BF_OIIO_LIB="OpenImageIO"

BF_BOOST="/usr"
BF_BOOST_INC="/usr/include/boost"

BF_ICONV="/usr"

BF_TWEAK_MODE=$(usex tweak-mode 1 0)
BF_DEBUG=$(usex debug 1 0)

BF_OPENGL_LIB='GL GLU X11 Xi GLEW'
BF_INSTALLDIR="../install"
WITH_PYTHON_SECURITY=1
WITHOUT_BF_PYTHON_INSTALL=1
BF_PYTHON="/usr"
BF_PYTHON_VERSION="3.2"
BF_PYTHON_ABI_FLAGS=""
BF_BUILDINFO=0
BF_QUIET=0
BF_LINE_OVERWRITE=0
WITH_BF_FHS=1
WITH_BF_BINRELOC=0
WITH_BF_STATICOPENGL=0
EOF

	blend_with() {
		echo "WITH_BF_${2:-$1}=$(usex $1 1 0)" | tr '[:lower:]' '[:upper:]' \
			>> "${S}"/user-config.py
	}

	# configure WITH_BF* Scons build options
	blend_with 3dmouse
	blend_with collada
	blend_with cycles boost
	blend_with cycles oiio
	blend_with cycles
	blend_with dds
	blend_with doc docs
	blend_with elbeem fluid
	blend_with ffmpeg ogg
	blend_with ffmpeg
	blend_with fftw fftw3
	blend_with fftw oceansim
	blend_with game-engine gameengine
	blend_with iconv
	blend_with jack
	blend_with jpeg2k openjpeg
	blend_with nls international
	blend_with openal
	blend_with openexr
	blend_with openmp
	blend_with player
	blend_with redcode
	blend_with sdl
	blend_with sndfile
	blend_with sse rayoptimization
}

src_compile() {
	escons

	cat - > "${T}"/${PN}.env <