summaryrefslogtreecommitdiff
blob: 944691a18e5210d4073996f0778591b78c4ee388 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-util/exmap/exmap-0.10.ebuild,v 1.3 2012/05/04 17:51:43 jdhore Exp $

EAPI=2

inherit eutils linux-mod

DESCRIPTION="A memory analysis kernel module with userland tool"
HOMEPAGE="http://www.berthels.co.uk/exmap/"
SRC_URI="http://www.berthels.co.uk/${PN}/download/${P}.tgz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="gtk"

RDEPEND="dev-libs/libpcre
	gtk? ( dev-cpp/gtkmm:2.4
		x11-libs/gtk+:2 )"
DEPEND="${RDEPEND}
	dev-libs/boost
	virtual/pkgconfig"

MODULE_NAMES="exmap(misc:${S}/kernel)"
BUILD_TARGETS="clean kernel_modules"

src_prepare() {
	# patch find_task_by_pid to pid_task and &proc_root to NULL
	epatch "${FILESDIR}/${P}-kernel.patch"

	# use $(MAKE), remove -g on CXXFLAGS, clean up CXX/LD invocations
	epatch "${FILESDIR}/${P}-makefiles.patch"

	# somthing strange between linux-mod supplied ARCH and old kernels
	# which leads to arch/x86/Makefile: file/dir x86 not found
	if kernel_is lt 2 6 25 ; then
		sed -i -e 's:\$(MAKE):unset ARCH ; \$(MAKE):' kernel/Makefile || die
	fi

	# new gcc include behavior
	epatch "${FILESDIR}/${P}-gcc.patch"

	# gcc4.5 fails on return false as std::string
	epatch "${FILESDIR}/${P}-gcc45.patch"

	# fix for 64bit from http://www.kdedevelopers.org/node/4166
	epatch "${FILESDIR}/${P}-fix64bit.patch"

	# fix underlinking with -Wl,--as-needed
	epatch "${FILESDIR}/${P}-as-needed.patch"

	rm -v src/{*.so,munged-ls-threeloads,prelinked-amule} || die
}

src_compile() {
	export KERNEL_DIR
	linux-mod_src_compile

	emake CXX="$(tc-getCXX)" LD="$(tc-getLD)" -C jutil || die
	emake CXX="$(tc-getCXX)" LD="$(tc-getLD)" -C src $(use gtk || echo exmtool) || die
}

src_install() {
	linux-mod_src_install

	dobin src/exmtool || die
	use gtk && { dobin src/gexmap || die ; }
	dodoc TODO README || die
}

pkg_postinst() {
	linux-mod_pkg_postinst

	elog "Please load the exmap kernel module before running exmtool or gexmap."
}