summaryrefslogtreecommitdiffstats
path: root/rules/kaffe.make
blob: 04c027f5cbb8a30d1154ed2b4bac0a29a71ff11b (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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
# -*-makefile-*-
# $Id$
#
# Copyright (C) 2003 by Marc Kleine-Budde <kleine-budde@gmx.de> for
#                       GYRO net GmbH <info@gyro-net.de>, Hannover, Germany
#
# See CREDITS for details about who has contributed to this project.
#
# For further information about the PTXdist project and license conditions
# see the README file.
#

#
# We provide this package
#
PACKAGES-$(PTXCONF_KAFFE) += kaffe

#
# Paths and names
#
KAFFE_VERSION		= 1.1.0
KAFFE			= kaffe-$(KAFFE_VERSION)
KAFFE_SUFFIX		= tar.gz
KAFFE_URL		= http://www.kaffe.org/ftp/pub/kaffe/v1.1.x-development/$(KAFFE).$(KAFFE_SUFFIX)
KAFFE_SOURCE		= $(SRCDIR)/$(KAFFE).$(KAFFE_SUFFIX)
KAFFE_DIR		= $(BUILDDIR)/$(KAFFE)
KAFFE_BUILDDIR		= $(BUILDDIR)/$(KAFFE)-build

# FIXME: RSC: this is probably obsolete, fix

KAFFE_KANGAROO_VERSION	= 0.0.3-user
KAFFE_KANGAROO		= kangaroo-$(KAFFE_KANGAROO_VERSION)
KAFFE_KANGAROO_SUFFIX	= tar.gz
KAFFE_KANGAROO_URL	= http://playground.gyro-net.de/kangaroo/$(KAFFE_KANGAROO).$(KAFFE_KANGAROO_SUFFIX)
KAFFE_KANGAROO_SOURCE	= $(SRCDIR)/$(KAFFE_KANGAROO).$(KAFFE_KANGAROO_SUFFIX)
KAFFE_KANGAROO_DIR	= $(BUILDDIR)/$(KAFFE_KANGAROO)

-include $(call package_depfile)

# ----------------------------------------------------------------------------
# Get
# ----------------------------------------------------------------------------

kaffe_get: $(STATEDIR)/kaffe.get

kaffe_get_deps	=  $(KAFFE_SOURCE)
ifdef PTXCONF_KAFFE_API_CLDC
kaffe_get_deps	+= $(KAFFE_KANGAROO_SOURCE)
endif

$(STATEDIR)/kaffe.get: $(kaffe_get_deps)
	@$(call targetinfo, $@)
	@$(call touch, $@)

$(KAFFE_SOURCE):
	@$(call targetinfo, $@)
	@$(call get, $(KAFFE_URL))

$(KAFFE_KANGAROO_SOURCE):
	@$(call targetinfo, $@)
	@$(call get, $(KAFFE_KANGAROO_URL))

# ----------------------------------------------------------------------------
# Extract
# ----------------------------------------------------------------------------

kaffe_extract: $(STATEDIR)/kaffe.extract

kaffe_extract_deps	=  $(STATEDIR)/kaffe-base.extract
ifdef PTXCONF_KAFFE_API_CLDC
kaffe_extract_deps	+= $(STATEDIR)/kaffe-kangaroo.extract
endif

$(STATEDIR)/kaffe.extract: $(kaffe_extract_deps)
	@$(call targetinfo, $@)
	@$(call touch, $@)

$(STATEDIR)/kaffe-base.extract: $(STATEDIR)/kaffe.get
	@$(call targetinfo, $@)
	@$(call clean, $(KAFFE_DIR))
	@$(call extract, $(KAFFE_SOURCE))
	@$(call touch, $@)

$(STATEDIR)/kaffe-kangaroo.extract: $(STATEDIR)/kaffe.get
	@$(call targetinfo, $@)
	@$(call clean, $(KAFFE_KANGAROO_DIR))
	@$(call extract, $(KAFFE_KANGAROO_SOURCE))
	cp -a $(BUILDDIR)/$(KAFFE_KANGAROO)/* $(BUILDDIR)/$(KAFFE)
	rm -rf $(BUILDDIR)/$(KAFFE_KANGAROO)
	@$(call touch, $@)

# ----------------------------------------------------------------------------
# Prepare
# ----------------------------------------------------------------------------

kaffe_prepare: $(STATEDIR)/kaffe.prepare

#
# dependencies
#
kaffe_prepare_deps =  \
	$(STATEDIR)/virtual-xchain.install \
	$(STATEDIR)/xchain-kaffe.install \
	$(STATEDIR)/kaffe.extract

ifndef PTXCONF_KAFFE_FEAT_JAVAMATH
kaffe_prepare_deps	+= $(STATEDIR)/gmp3.install
endif
ifdef PTXCONF_KAFFE_FEAT_CLDC_GMP
kaffe_prepare_deps	+= $(STATEDIR)/gmp3.install
endif

KAFFE_PATH	= PATH=$(CROSS_PATH)
KAFFE_ENV 	= $(CROSS_ENV) KAFFEH=$(PTXCONF_PREFIX)/bin/kaffeh

#
# autoconf
#
KAFFE_AUTOCONF  =  $(CROSS_KAFFEE)

ifdef PTXCONF_KAFFE_ENG_INTRP
KAFFE_AUTOCONF	+= --with-engine=intrp
endif
ifdef PTXCONF_KAFFE_ENG_JIT
KAFFE_AUTOCONF	+= --with-engine=jit
endif
ifdef PTXCONF_KAFFE_ENG_JIT3
KAFFE_AUTOCONF	+= --with-engine=jit3
endif

ifdef PTXCONF_KAFFE_THREAD_P
KAFFE_AUTOCONF	+= --with-threads=unix-pthreads
endif
ifdef PTXCONF_KAFFE_THREAD_J
KAFFE_AUTOCONF	+= --with-threads=unix-jthreads
endif

ifdef PTXCONF_KAFFE_JIKES
KAFFE_AUTOCONF	+= --with-jikes=$(PTXCONF_KAFFE_JIKES)
endif

# ifdef PTXCONF_KAFFE_API_SE
# KAFFE_AUTOCONF	+= --with-api=se
# endif
ifdef PTXCONF_KAFFE_API_CLDC
KAFFE_AUTOCONF	+= --with-api=cldc
endif

ifdef PTXCONF_KAFFE_DEB_DEV
KAFFE_AUTOCONF	+= --enable-debug
else
KAFFE_AUTOCONF	+= --disable-debug
endif
ifdef PTXCONF_KAFFE_DEB_X
KAFFE_AUTOCONF	+= --enable-xdebugging
else
KAFFE_AUTOCONF	+= --disable-xdebugging
endif
ifdef PTXCONF_KAFFE_DEB_PROFILING
KAFFE_AUTOCONF	+= --with-profiling
else
KAFFE_AUTOCONF	+= --without--profiling
endif
ifdef PTXCONF_KAFFE_DEB_XPROFILING
KAFFE_AUTOCONF	+= --enable-xprofiling
else
KAFFE_AUTOCONF	+= --disable-xprofiling
endif
ifdef PTXCONF_KAFFE_DEB_STATS
KAFFE_AUTOCONF	+= --with-stats
else
KAFFE_AUTOCONF	+= --without-stats
endif

ifdef PTXCONF_KAFFE_FEAT_GCJ
KAFFE_AUTOCONF	+= --enable-gcj
else
KAFFE_AUTOCONF	+= --disable-gcj
endif

ifdef PTXCONF_KAFFE_AWT_NO
KAFFE_AUTOCONF	+= --without-x --with-awt=no
endif 
ifdef PTXCONF_KAFFE_AWT_X
KAFFE_AUTOCONF	+= --with-awt=X
endif
ifdef PTXCONF_KAFFE_AWT_QT
KAFFE_AUTOCONF	+= --with-awt=qt
endif

ifdef PTXCONF_KAFFE_FEAT_FEEDBACK
KAFFE_AUTOCONF	+= --enable-feedback
else
KAFFE_AUTOCONF	+= --disable-feedback
endif
ifdef PTXCONF_KAFFE_FEAT_JAVAMATH
KAFFE_AUTOCONF	+= --enable-pure-java-math
else
KAFFE_AUTOCONF	+= --disable-pure-java-math
endif

ifdef PTXCONF_KAFFE_FEAT_DISABLE_SOUND
KAFFE_AUTOCONF	+= --disable-sound
endif
ifdef PTXCONF_KAFFE_FEAT_DISABLE_ALSA
KAFFE_AUTOCONF	+= --without-alsa
endif
ifdef PTXCONF_KAFFE_FEAT_DISABLE_ESD
KAFFE_AUTOCONF	+= --without-esd
endif
ifdef PTXCONF_KAFFE_FEAT_DISABLE_SUNCOMPAT
KAFFE_AUTOCONF	+= --without-suncompat
endif

ifdef PTXCONF_KAFFE_FEAT_CLDC_GMP
KAFFE_AUTOCONF	+= --enable-cldc-bigint
endif

ifdef PTXCONF_KAFFE_FEAT_CLDC_COMM
KAFFE_AUTOCONF	+= --enable-cldc-comm
endif

ifdef PTXCONF_KAFFE_LINK_BIN
KAFFE_AUTOCONF	+= --with-staticbin
endif
ifdef PTXCONF_KAFFE_LINK_VM
KAFFE_AUTOCONF	+= --with-staticvm
endif
ifdef PTXCONF_KAFFE_LINK_LIB
KAFFE_AUTOCONF	+= --with-staticlib
endif

$(STATEDIR)/kaffe.prepare: $(kaffe_prepare_deps)
	@$(call targetinfo, $@)
	@$(call clean, $(KAFFE_BUILDDIR))
	mkdir -p $(KAFFE_BUILDDIR)
	cd $(KAFFE_BUILDDIR) && \
		$(KAFFE_PATH) $(KAFFE_ENV) \
		$(KAFFE_DIR)/configure $(KAFFE_AUTOCONF)
	@$(call touch, $@)

# ----------------------------------------------------------------------------
# Compile
# ----------------------------------------------------------------------------

kaffe_compile: $(STATEDIR)/kaffe.compile

kaffe_compile_deps =  $(STATEDIR)/kaffe.prepare

ifdef PTXCONF_KAFFE_JIKES_WO_DEBUG
KAFFE_MAKEVARS	= JAVAC_FLAGS="-g:none -verbose"
else
KAFFE_MAKEVARS	= JAVAC_FLAGS="-verbose"
endif

$(STATEDIR)/kaffe.compile: $(kaffe_compile_deps)
	@$(call targetinfo, $@)
	$(KAFFE_PATH) make -C $(KAFFE_BUILDDIR) $(KAFFE_MAKEVARS)

ifdef PTXCONF_KAFFE_LINK_GMP
#
# what we here do is:
# - in the .la file is a list of libs this lib depends on
# - during linking this lib against the kaffe-bin, it is passed to the linker
# - we replace the shared library (-lgmp or libgmp.la) with the static one (/path/to/libgmp.a)
#
	perl -i -p -e 's,((\s-lgmp)|(\s.*libgmp.la)), $(CROSS_LIB_DIR)/lib/libgmp.a,' \
		$(KAFFE_BUILDDIR)/libraries/clib-cldc/native/libnative.la
	$(KAFFE_PATH) make -C $(KAFFE_BUILDDIR) $(KAFFE_MAKEVARS)
endif
	@$(call touch, $@)

# ----------------------------------------------------------------------------
# Install
# ----------------------------------------------------------------------------

kaffe_install: $(STATEDIR)/kaffe.install

$(STATEDIR)/kaffe.install: $(STATEDIR)/kaffe.compile
	@$(call targetinfo, $@)
	@$(call touch, $@)

# ----------------------------------------------------------------------------
# Target-Install
# ----------------------------------------------------------------------------

kaffe_targetinstall: $(STATEDIR)/kaffe.targetinstall

kaffe_targetinstall_deps	=  $(STATEDIR)/kaffe.compile

ifdef PTXCONF_KAFFE_TARGETINSTALL_GMP
kaffe_targetinstall_deps	+= $(STATEDIR)/gmp3.targetinstall
endif

$(STATEDIR)/kaffe.targetinstall: $(kaffe_targetinstall_deps)
	@$(call targetinfo, $@)
	@$(call clean, $(KAFFE_BUILDDIR)-tmp)

	@$(call install_init,default)
	@$(call install_fixup,PACKAGE,kaffe)
	@$(call install_fixup,PRIORITY,optional)
	@$(call install_fixup,VERSION,$(KAFFE_VERSION))
	@$(call install_fixup,SECTION,base)
	@$(call install_fixup,AUTHOR,"Robert Schwebel <r.schwebel\@pengutronix.de>")
	@$(call install_fixup,DEPENDS,)
	@$(call install_fixup,DESCRIPTION,missing)

	@$(call install_copy, 0, 0, 0755, /usr/jre/bin)
	@$(call install_copy, 0, 0, 0755, /usr/jre/lib/$(PTXCONF_ARCH_USERSPACE))

	cd $(KAFFE_BUILDDIR) && $(KAFFE_PATH) make $(KAFFE_MAKEVARS) \
		install DESTDIR=$(KAFFE_BUILDDIR)-tmp

	@$(call install_copy, 0, 0, 0755, \
		$(KAFFE_BUILDDIR)-tmp/usr/jre/bin/kaffe-bin \
		/usr/jre/bin/kaffe-bin)

	@$(call install_copy, 0, 0, 0755, \
		$(KAFFE_BUILDDIR)-tmp/usr/jre/bin/kaffe \
		/usr/jre/bin/kaffe)

	rm -rf $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/libkaffevm.la
	rm -rf $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/*.a

ifdef PTXCONF_KAFFE_LINK_VM
	rm -rf $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/libkaffevm*
endif

ifdef PTXCONF_KAFFE_LINK_LIB
	rm -rf $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/libkaffevm*
endif

ifdef PTXCONF_KAFFE_LINK_BIN
	rm -rf $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/libkaffevm*
endif

	# FIXME: ipkgize!
	cp -av $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/* $(ROOTDIR)/usr/jre/lib/
	$(CROSS_STRIP) -R .note -R .comment \
		$(ROOTDIR)/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/*.so || true

	rm -rf $(KAFFE_BUILDDIR)-tmp

	@$(call install_finish)

	@$(call touch, $@)

# ----------------------------------------------------------------------------
# Clean
# ----------------------------------------------------------------------------

kaffe_clean:
	rm -rf $(STATEDIR)/kaffe.*
	rm -rf $(IMAGEDIR)/kaffe_*
	rm -rf $(KAFFE_DIR)
	rm -rf $(KAFFE_BUILDDIR)
	rm -rf $(KAFFE_KANGAROO_DIR)

# vim: syntax=make