# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=5

if [[ ${PV} == *9999* ]] ; then
	SCM_ECLASS="git-r3"
else
	SCM_ECLASS="vcs-snapshot"
fi

inherit versionator eutils multilib cmake-utils ${SCM_ECLASS}

DESCRIPTION="Stream based read/write library for COLLADA files"
HOMEPAGE="http://www.opencollada.org/"
LICENSE="MIT"
IUSE="expat"

# seems like the Khronos Group hasnt invented the SOVERSION yet
MY_SOVERSION="1.2"

SLOT="0"

if [[ ${PV} != *9999* ]]; then
	#
	# UPDATE THE COMMIT WHEN BUMPING!
	COMMIT="ceb409cabdccda3000aa2e5c065850b8fde60b0f"
	#
	SRC_URI="https://github.com/KhronosGroup/OpenCOLLADA/tarball/${COMMIT} -> ${P}.tar.gz"
	KEYWORDS="amd64 ~ppc64 x86"
else
	EGIT_REPO_URI="https://github.com/KhronosGroup/OpenCOLLADA.git"
fi

RDEPEND="dev-libs/libpcre
	dev-libs/zziplib
	media-libs/lib3ds
	sys-libs/zlib
	>=sys-devel/gcc-4.7
	expat? ( dev-libs/expat )
	!expat? ( dev-libs/libxml2 )"
DEPEND="${RDEPEND}
	sys-apps/findutils
	sys-apps/sed"

BUILD_DIR="${S}"/build

src_prepare() {

	# Remove some bundled dependencies
	edos2unix CMakeLists.txt || die

	epatch "${FILESDIR}"/${PN}-0_p864-expat.patch

	epatch "${FILESDIR}"/${PN}-1.2.2-soversion.patch
	epatch "${FILESDIR}"/${PN}-1.2.2-no-undefined.patch
	epatch "${FILESDIR}"/${PN}-1.2.2-libdir.patch

	rm -R Externals/{expat,lib3ds,LibXML,pcre,zlib,zziplib} || die
	ewarn "$(echo "Remaining bundled dependencies:";
		find Externals -mindepth 1 -maxdepth 1 -type d | sed 's|^|- |')"

	# Remove unused build systems
	rm Makefile scripts/{unixbuild.sh,vcproj2cmake.rb} || die
	find "${S}" -name SConscript -delete || die
}

src_configure() {
	local mycmakeargs=" -DUSE_SHARED=ON -DUSE_STATIC=OFF"

	# Master CMakeLists.txt says "EXPAT support not implemented"
	# Something like "set(LIBEXPAT_LIBRARIES expat)" is missing to make it build
	use expat \
		&& mycmakeargs+=' -DUSE_EXPAT=ON -DUSE_LIBXML=OFF' \
		|| mycmakeargs+=' -DUSE_EXPAT=OFF -DUSE_LIBXML=ON'

	# Seems like the Khronos Group hasnt invented the SOVERSION yet.
	mycmakeargs+=" -Dsoversion=${MY_SOVERSION}"

	cmake-utils_src_configure
}

src_install() {
	cmake-utils_src_install

	dodir /etc/env.d || die
	echo "LDPATH=/usr/$(get_libdir)/opencollada" \
			> "${D}"/etc/env.d/99opencollada || die

	dobin build/bin/OpenCOLLADAValidator || die
}
