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

EAPI="5"
inherit autotools eutils linux-info multilib user java-pkg-opt-2

MY_P=${PN}-${PV/_/-}
DESCRIPTION="A transparent low-overhead system-wide profiler"
HOMEPAGE="http://${PN}.sourceforge.net"
SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86"
IUSE="java pch qt4"

DEPEND=">=dev-libs/popt-1.7-r1
	sys-libs/binutils-libs
	>=sys-libs/glibc-2.3.2-r1
	qt4? ( dev-qt/qtgui:4[qt3support] )
	java? ( >=virtual/jdk-1.5:= )"
RDEPEND="${DEPEND}"

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

pkg_setup() {
	linux-info_pkg_setup
	if ! linux_config_exists || ! linux_chkconfig_present OPROFILE ; then
		echo
		elog "In order for ${PN} to work, you need to configure your kernel"
		elog "with CONFIG_OPROFILE set to 'm' or 'y'."
		echo
	fi

	if ! kernel_is -ge 2 6 ; then
		echo
		elog "Support for kernels before 2.6 has been dropped in ${PN}-0.9.8."
		echo
	fi

	# Required for JIT support, see README_PACKAGERS
	enewgroup ${PN}
	enewuser ${PN} -1 -1 -1 ${PN}

	use java && java-pkg_init
}

src_prepare() {
	epatch "${FILESDIR}/${P}-gcc-4.9-non-ppc.patch"
	epatch "${FILESDIR}/${P}-gcc-4.9-unused.patch"
	epatch "${FILESDIR}/${PN}-1.0.0-athlon.patch"
	eautoreconf
}

src_configure() {
	econf \
		--disable-werror \
		$(use_with qt4 x) \
		$(use_enable qt4 gui qt4) \
		$(use_enable pch) \
		$(use_with java java ${JAVA_HOME})
}

src_install() {
	emake DESTDIR="${D}" htmldir="/usr/share/doc/${PF}" install

	dodoc ChangeLog* README TODO

	dodir /etc/env.d
	echo "LDPATH=${PREFIX}/usr/$(get_libdir)/${PN}" > "${D}"/etc/env.d/10${PN} || die "env.d failed"
}

pkg_postinst() {
	echo
	elog "Now load the ${PN} module by running:"
	elog "  # opcontrol --init"
	elog "Then read manpages and this html doc:"
	elog "  /usr/share/doc/${PF}/${PN}.html"
	echo
}
