summaryrefslogtreecommitdiff
blob: 0a5164bcce2cab49f6ae87c8d97da14e1a003196 (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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-java/kaffe/kaffe-1.1.7-r6.ebuild,v 1.3 2008/07/25 21:58:35 betelgeuse Exp $

JAVA_SUPPORTS_GENERATION_1="true"
inherit base eutils java-vm-2 flag-o-matic

DESCRIPTION="A cleanroom, open source Java VM and class libraries"
SRC_URI="ftp://ftp.kaffe.org/pub/${PN}/v1.1.x-development/${P}.tar.bz2"
HOMEPAGE="http://www.kaffe.org/"

#robilad recommended in bug 103978 that we leave the X and QT
#awt backends disabled for now. Please check the status of these
#backends with new upstream versions. X dependencies to be
#determined
#	qt?( =x11-libs/qt-3.3* )

COMMON_DEP="
	>=media-libs/jpeg-6b
	>=media-libs/libpng-1.2.1
	app-arch/zip
	>=dev-java/jikes-1.22-r13
	dev-libs/libxml2
	sys-libs/zlib
	gtk? (
		>=dev-libs/glib-2.0
		>=x11-libs/gtk+-2.0
		>=media-libs/libart_lgpl-2.0 )
	esd? ( >=media-sound/esound-0.2.1 )
	alsa? ( >=media-libs/alsa-lib-1.0.1 )
	gmp? ( >=dev-libs/gmp-3.1 )"

# kaffe builds it's own copy of fastjar so we don't need fastjar at
# runtime. Hopefully next upstream release uses the system one.
DEPEND="${COMMON_DEP}
	app-arch/fastjar"

RDEPEND="${COMMON_DEP}"

# We need to build this after kaffe because it is implemented in java
PDEPEND="dev-java/gjdoc"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~ppc ~x86"
#X qt
IUSE="alsa esd gmp gtk nls"

# kaffe-1.1.6-alsa.patch is needed to prevent compile errors with newer alsas
#	(see bug #119272)
#PATCHES="${FILESDIR}/${PN}-1.1.6-alsa.patch"

# ignore execstack for now. needs to be fixed upstream
# http://kaffe.org/cgi-bin/bugzilla/show_bug.cgi?id=59
QA_EXECSTACK_x86="opt/${P}/jre/lib/i386/libkaffevm-1.1.7.so"

pkg_setup() {
	if ! use gmp; then
		ewarn "You don't have the gmp use flag set."
		ewarn "Using gmp is the default upstream setting."
	fi

	if ! use gtk; then
		ewarn ""
		ewarn "The gtk use flag is needed for a awt implementation."
		ewarn "Don't file bugs for awt not working when you have"
		ewarn "gtk use flag turned off."
	fi
	java-vm-2_pkg_setup
}

src_unpack() {
	unpack ${A}
	rm -v "${S}"/external/gcc/*/*.c || die
}

src_compile() {
	local confargs=""

	# see #88330
	filter-flags "-fomit-frame-pointer"
	append-flags "-fno-strict-aliasing"

	if ! use alsa && ! use esd; then
		confargs="${confargs} --disable-sound"
	fi

	! use gmp && confargs="${confargs} --enable-pure-java-math"

#		$(use_with X x) \
#		$(use_with X kaffe-x-awt) \
#		$(use_with qt kaffe-qt-awt ) \

	# according to dalibor, this is needed on ppc because jit is
	# not complete
	# TODO needs testing!
	[[ ${ARCH} = ppc || ${ARCH} = ppc64 ]] && confargs="${confargs} --with-engine=intrp"

	# Use fastjar or kaffe tries to use the jar tool which does
	# not work before kaffe is installed if kaffe is the first jdk
	# merged
	# bug #141477 and bug #163801

	# --with-rt-jar in 1.1.7 to use the system installed classpath
	econf \
		--disable-dependency-tracking \
		--prefix=/opt/${P} \
		--host=${CHOST} \
		$(use_with alsa)\
		$(use_with esd) \
		$(use_with gmp) \
		$(use_enable nls) \
		$(use_enable gtk gtk-peer) \
		${confargs} \
		--with-jikes=/usr/bin/jikes-bin \
		--disable-gjdoc \
		--disable-fastjar \
		--with-system-zlib || die "Failed to configure."

	# --with-bcel
	# --with-profiling
	emake || die "Failed to compile"
}

src_install() {
	emake DESTDIR="${D}" install || die "Failed to install"
	set_java_env

	# use doexe to ensure executable bit (bug #144635)
	echo '#!/bin/bash' > javadoc
	echo 'exec /usr/bin/gjdoc "${@}"' >> javadoc
	exeinto "/opt/${P}/bin/"
	doexe javadoc

	dosym /usr/bin/fastjar /opt/${P}/bin

	# Remove some files that collide with classpath
	rm "${D}/usr/share/info/vmintegration.info" \
		"${D}/usr/share/info/hacking.info"

	# Add symlink to glibj.zip, for bug #148607
	cd "${D}/opt/${P}/jre/lib"
	ln -s glibj.zip rt.jar
}

pkg_postinst() {
	ewarn "Please, do not use Kaffe as your default JDK/JRE!"
	ewarn "Kaffe is currently meant for testing... it should be"
	ewarn "only be used by developers or bug-hunters willing to deal"
	ewarn "with oddities that are bound to come up while using Kaffe!"
}