# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-java/qtjambi/qtjambi-4.5.0_p1.ebuild,v 1.1 2009/07/22 07:29:15 ali_bush Exp $

EAPI="2"

JAVA_PKG_IUSE="doc source"
WANT_ANT_TASKS="ant-trax"

inherit eutils qt4 java-pkg-2 java-ant-2 toolchain-funcs

QTVER="${PV%%_p*}"
MY_PV="${PV/p/0}"
MY_P="${PN}-src-lgpl-${MY_PV}"

DESCRIPTION="QtJambi is a set of Java bindings and utilities for the Qt C++ toolkit."
HOMEPAGE="http://www.qtsoftware.com/"
SRC_URI="http://get.qtsoftware.com/${PN}/source/${MY_P}.tar.gz"

LICENSE="GPL-2"
SLOT="4"
KEYWORDS="~amd64 ~x86"
IUSE="debug examples opengl phonon webkit xmlpatterns"

COMMON_DEPS=">=x11-libs/qt-gui-${QTVER}:${SLOT}
	>=x11-libs/qt-sql-${QTVER}:${SLOT}
	>=x11-libs/qt-svg-${QTVER}:${SLOT}
	opengl? ( >=x11-libs/qt-opengl-${QTVER}:${SLOT} )
	phonon? ( >=x11-libs/qt-phonon-${QTVER}:${SLOT} )
	webkit? ( >=x11-libs/qt-webkit-${QTVER}:${SLOT} )
	xmlpatterns? ( >=x11-libs/qt-xmlpatterns-${QTVER}:${SLOT} )"

DEPEND="${COMMON_DEPS}
	>=virtual/jdk-1.6"

RDEPEND="${COMMON_DEPS}
	>=virtual/jre-1.6"

S="${WORKDIR}/${MY_P}"

src_prepare() {
	epatch "${FILESDIR}/generator-${PV}.patch"
	epatch "${FILESDIR}/configuration-${PV}.patch"

	if [[ $(gcc-version) == "4.4" ]] ; then
		epatch "${FILESDIR}/gcc4.4-${PV}.patch"
	fi

	# Respect MAKEOPTS
	sed -i -e "/String arguments =/s|=.*|=\" ${MAKEOPTS}\";|" \
		com/trolltech/tools/ant/MakeTask.java || die

	java-ant_rewrite-classpath
}

qtjambi_use() {
	echo "-Dgentoo.${2:-$1}=$(use $1 && echo true || echo false)"
}

qt_config_use() {
	echo "QT_CONFIG$(use $1 && echo '+' || echo '-')=$1"
}

src_compile() {
	local myconf="-Dqtjambi.config=$(use debug && echo debug || echo release)
			-Dlibrary.designer=true
			$(qtjambi_use opengl)
			$(qtjambi_use phonon)
			$(qtjambi_use webkit)
			$(qtjambi_use xmlpatterns)"
	export QTDIR="/usr/$(get_libdir)/qt4"

	einfo "Initializing Qt Jambi build environment"
	eant -Dgentoo.classpath="$(java-pkg_getjar --build-only ant-core ant.jar)" \
		${myconf} init

	einfo "Merging XML files used by the Qt Jambi generator"
	eant ${myconf} generator.xmlmerge

	# Use eqmake4 instead of generator.qmake ant target
	eqmake4 generator/generator.pro -o generator/Makefile

	einfo "Building and running the generator"
	eant ${myconf} generator.run   # implies generator.compile

	# Use eqmake4 instead of library.native.qmake ant target
	eqmake4 java.pro -recursive \
		$(qt_config_use opengl) \
		$(qt_config_use phonon) \
		$(qt_config_use webkit) \
		$(qt_config_use xmlpatterns)

	einfo "Building the native library"
	eant ${myconf} library.native.compile

	einfo "Building the Java library"
	eant ${myconf} library.java

	einfo "Building the Designer library"
	eant ${myconf} library.designer

	if use examples; then
		einfo "Building examples"
		eant ${myconf} examples
	fi

	# Build API documentation
	if use doc; then
		einfo "Generating Javadoc"
		javadoc -J-Xmx256m -d javadoc -subpackages com || die
	fi

	# Generate start script for jambi-designer
	cat > bin/jambi-designer <<-EOF
		#!/bin/sh
		export LD_LIBRARY_PATH="/usr/$(get_libdir)/qt4:/usr/$(get_libdir)/${PN}-${SLOT}:\${LD_LIBRARY_PATH}"
		export CLASSPATH="/usr/share/${PN}-${SLOT}/lib/${PN}.jar:/usr/share/${PN}-${SLOT}/lib/${PN}-designer.jar:\${CLASSPATH}"
		export QT_PLUGIN_PATH="/usr/$(get_libdir)/qt4/plugins"
		exec /usr/bin/designer "\$@"
	EOF
}

src_install() {
	dobin "${S}"/bin/* || die
	newbin "${S}"/generator/generator jambi-generator || die

	einfo "Installing jars"
	java-pkg_newjar qtjambi-${MY_PV}.jar
	java-pkg_newjar qtjambi-designer-${MY_PV}.jar ${PN}-designer.jar
	java-pkg_dojar ant-qtjambi.jar

	einfo "Installing native libraries"
	# `java-pkg_doso "${S}"/lib/*` does not work (bug #251500)
	java-pkg_doso "${S}"/lib/*.so.1.0.0 "${S}"/lib/*.so.1.0 "${S}"/lib/*.so.1 "${S}"/lib/*.so

	einfo "Installing designer plugins"
	exeinto /usr/$(get_libdir)/qt4/plugins/${PN}
	doexe plugins/designer/*.so || die
	# Designer needs these libraries in both directories
	dosym /usr/$(get_libdir)/qt4/plugins/${PN}/libJambiCustomWidget.so \
		/usr/$(get_libdir)/qt4/plugins/designer/libJambiCustomWidget.so
	dosym /usr/$(get_libdir)/qt4/plugins/${PN}/libJambiLanguage.so \
		/usr/$(get_libdir)/qt4/plugins/designer/libJambiLanguage.so

	if use doc; then
		einfo "Installing documentation"
		dohtml "${S}"/readme.html
		java-pkg_dojavadoc "${S}"/javadoc
	fi

	if use examples; then
		einfo "Installing examples"

		# Get rid of class files before installing
		find "${S}"/com/trolltech/examples -name '*.class' -delete || die

		java-pkg_newjar qtjambi-examples-${MY_PV}.jar ${PN}-examples.jar
		java-pkg_doexamples "${S}"/com/trolltech/examples
		java-pkg_dolauncher jambi-examples --main com.trolltech.launcher.Launcher \
			--java_args "-Djava.library.path=/usr/$(get_libdir)/qt4:/usr/$(get_libdir)/${PN}-${SLOT}"
	fi

	use source && java-pkg_dosrc "${S}"/com
}