blob: 775e7cbc91367fbd162fbf6ab331140071386771 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001#
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -07002# Copyright 1995-2008 Sun Microsystems, Inc. All Rights Reserved.
3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4#
5# This code is free software; you can redistribute it and/or modify it
6# under the terms of the GNU General Public License version 2 only, as
7# published by the Free Software Foundation. Sun designates this
8# particular file as subject to the "Classpath" exception as provided
9# by Sun in the LICENSE file that accompanied this code.
10#
11# This code is distributed in the hope that it will be useful, but WITHOUT
12# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14# version 2 for more details (a copy is included in the LICENSE file that
15# accompanied this code).
16#
17# You should have received a copy of the GNU General Public License version
18# 2 along with this work; if not, write to the Free Software Foundation,
19# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20#
21# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22# CA 95054 USA or visit www.sun.com if you need additional information or
23# have any questions.
24#
25
26#
27# Makefile to run various jdk tests
J. Duke319a3b92007-12-01 00:00:00 +000028#
29
30# Get OS/ARCH specifics
31OSNAME = $(shell uname -s)
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -070032
33# Commands to run on paths to make mixed paths for java on windows
34GETMIXEDPATH=echo
35
36# Location of developer shared files
37SLASH_JAVA = /java
38
39# Platform specific settings
J. Duke319a3b92007-12-01 00:00:00 +000040ifeq ($(OSNAME), SunOS)
41 PLATFORM = solaris
J. Duke319a3b92007-12-01 00:00:00 +000042 ARCH = $(shell uname -p)
43 ifeq ($(ARCH), i386)
44 ARCH=i586
45 endif
46endif
47ifeq ($(OSNAME), Linux)
48 PLATFORM = linux
J. Duke319a3b92007-12-01 00:00:00 +000049 ARCH = $(shell uname -m)
50 ifeq ($(ARCH), i386)
51 ARCH=i586
52 endif
53endif
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -070054
55# Cannot trust uname output
56ifneq ($(PROCESSOR_IDENTIFIER), )
J. Duke319a3b92007-12-01 00:00:00 +000057 PLATFORM = windows
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -070058 SLASH_JAVA = J:
59 # A variety of ways to say X64 arch :^(
60 PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER))
61 PROC_ARCH:=$(subst x86,X86,$(PROC_ARCH))
62 PROC_ARCH:=$(subst x64,X64,$(PROC_ARCH))
63 PROC_ARCH:=$(subst AMD64,X64,$(PROC_ARCH))
64 PROC_ARCH:=$(subst amd64,X64,$(PROC_ARCH))
65 PROC_ARCH:=$(subst EM64T,X64,$(PROC_ARCH))
66 PROC_ARCH:=$(subst em64t,X64,$(PROC_ARCH))
67 PROC_ARCH:=$(subst intel64,X64,$(PROC_ARCH))
68 PROC_ARCH:=$(subst Intel64,X64,$(PROC_ARCH))
69 PROC_ARCH:=$(subst INTEL64,X64,$(PROC_ARCH))
70 PROC_ARCH:=$(subst ia64,IA64,$(PROC_ARCH))
71 ifeq ($(PROC_ARCH),IA64)
72 ARCH = ia64
J. Duke319a3b92007-12-01 00:00:00 +000073 else
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -070074 ifeq ($(PROC_ARCH),X64)
75 ARCH = x64
J. Duke319a3b92007-12-01 00:00:00 +000076 else
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -070077 ARCH = i586
J. Duke319a3b92007-12-01 00:00:00 +000078 endif
79 endif
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -070080 EXESUFFIX = .exe
81 # These need to be different depending on MKS or CYGWIN
82 ifeq ($(findstring cygdrive,$(shell (cd C:/ && pwd))), )
83 GETMIXEDPATH=dosname -s
84 else
85 GETMIXEDPATH=cygpath -m -s
86 endif
J. Duke319a3b92007-12-01 00:00:00 +000087endif
88
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -070089# Utilities used
90CD = cd
91CP = cp
92ECHO = echo
93MKDIR = mkdir
94ZIP = zip
95
J. Duke319a3b92007-12-01 00:00:00 +000096# Root of this test area (important to use full paths in some places)
97TEST_ROOT := $(shell pwd)
98
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -070099# Root of all test results
100ifdef ALT_OUTPUTDIR
101 ABS_OUTPUTDIR = $(ALT_OUTPUTDIR)
J. Duke319a3b92007-12-01 00:00:00 +0000102else
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700103 ABS_OUTPUTDIR = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)
104endif
105ABS_BUILD_ROOT = $(ABS_OUTPUTDIR)
106ABS_TEST_OUTPUT_DIR := $(ABS_BUILD_ROOT)/testoutput
107
108# Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
109ifndef PRODUCT_HOME
110 # Try to use j2sdk-image if it exists
111 ABS_JDK_IMAGE = $(ABS_BUILD_ROOT)/j2sdk-image
112 PRODUCT_HOME := \
113 $(shell \
114 if [ -d $(ABS_JDK_IMAGE) ] ; then \
115 $(ECHO) "$(ABS_JDK_IMAGE)"; \
116 else \
117 $(ECHO) "$(ABS_BUILD_ROOT)" ; \
118 fi)
119 PRODUCT_HOME := $(PRODUCT_HOME)
J. Duke319a3b92007-12-01 00:00:00 +0000120endif
121
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700122# Expect JPRT to set JPRT_PRODUCT_ARGS (e.g. -server etc.)
123# Should be passed into 'java' only.
124ifdef JPRT_PRODUCT_ARGS
125 JAVA_ARGS = $(JPRT_PRODUCT_ARGS)
126endif
J. Duke319a3b92007-12-01 00:00:00 +0000127
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700128# Expect JPRT to set JPRT_PRODUCT_VM_ARGS (e.g. -Xcomp etc.)
129# Should be passed into anything running the vm (java, javac, javadoc, ...).
130ifdef JPRT_PRODUCT_VM_ARGS
131 JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS)
132endif
J. Duke319a3b92007-12-01 00:00:00 +0000133
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700134# Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
135ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
136ifdef JPRT_ARCHIVE_BUNDLE
137 ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
138endif
J. Duke319a3b92007-12-01 00:00:00 +0000139
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700140# How to create the test bundle (pass or fail, we want to create this)
141# Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed.
142ZIP_UP_RESULTS = ( $(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)` \
143 && $(CD) $(ABS_TEST_OUTPUT_DIR) \
144 && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . )
145BUNDLE_UP_AND_EXIT = ( exitCode=$$? && $(ZIP_UP_RESULTS) && exit $${exitCode} )
J. Duke319a3b92007-12-01 00:00:00 +0000146
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700147################################################################
J. Duke319a3b92007-12-01 00:00:00 +0000148
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700149# Default make rule (runs jtreg_tests)
150all: jtreg_tests
151 @$(ECHO) "Testing completed successfully"
J. Duke319a3b92007-12-01 00:00:00 +0000152
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700153# Prep for output
154prep: clean
155 @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
156 @$(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)`
J. Duke319a3b92007-12-01 00:00:00 +0000157
158# Cleanup
159clean:
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700160 $(RM) -r $(ABS_TEST_OUTPUT_DIR)
161 $(RM) $(ARCHIVE_BUNDLE)
J. Duke319a3b92007-12-01 00:00:00 +0000162
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700163################################################################
164
165# jtreg tests
166
167# Expect JT_HOME to be set for jtreg tests. (home for jtreg)
168JT_HOME = $(SLASH_JAVA)/re/jtreg/4.0/promoted/latest/binaries/jtreg
169ifdef JPRT_JTREG_HOME
170 JT_HOME = $(JPRT_JTREG_HOME)
171endif
172
173# Expect JPRT to set TESTDIRS to the jtreg test dirs
174ifndef TESTDIRS
175 TESTDIRS = demo/jvmti/gctest demo/jvmti/hprof
176endif
177
178# Default JTREG to run (win32 script works for everybody)
179JTREG = $(JT_HOME)/win32/bin/jtreg
180
181jtreg_tests: prep $(JT_HOME) $(PRODUCT_HOME) $(JTREG)
182 $(RM) $(JTREG).orig
183 cp $(JTREG) $(JTREG).orig
184 $(RM) $(JTREG)
185 sed -e 's@-J\*@-J-*@' $(JTREG).orig > $(JTREG)
186 chmod a+x $(JTREG)
187 ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \
188 export JT_HOME; \
189 $(shell $(GETMIXEDPATH) "$(JTREG)") \
190 -a -v:fail,error \
191 -ignore:quiet \
192 $(EXTRA_JTREG_OPTIONS) \
193 -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport \
194 -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork \
195 -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \
196 $(JAVA_ARGS:%=-javaoptions:%) \
197 $(JAVA_VM_ARGS:%=-vmoption:%) \
198 $(TESTDIRS) \
199 ) ; $(BUNDLE_UP_AND_EXIT)
200
201PHONY_LIST += jtreg_tests
202
203################################################################
204
205# packtest
206
207# Expect JPRT to set JPRT_PACKTEST_HOME.
208PACKTEST_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/packtest
209ifdef JPRT_PACKTEST_HOME
210 PACKTEST_HOME = $(JPRT_PACKTEST_HOME)
211endif
212
213packtest: prep $(PACKTEST_HOME)/ptest $(PRODUCT_HOME)
214 ( $(CD) $(PACKTEST_HOME) && \
215 $(PACKTEST_HOME)/ptest \
216 -t "$(PRODUCT_HOME)" \
217 $(PACKTEST_STRESS_OPTION) \
218 $(EXTRA_PACKTEST_OPTIONS) \
219 -W $(ABS_TEST_OUTPUT_DIR) \
220 $(JAVA_ARGS:%=-J %) \
221 $(JAVA_VM_ARGS:%=-J %) \
222 ) ; $(BUNDLE_UP_AND_EXIT)
223
224packtest_stress: PACKTEST_STRESS_OPTION=-s
225packtest_stress: packtest
226
227PHONY_LIST += packtest packtest_stress
228
229################################################################
230
231# vmsqe tests
232
233# Expect JPRT to set JPRT_VMSQE_HOME.
234VMSQE_HOME = /java/sqe/comp/vm/testbase/sqe/vm/current/build/latest/vm
235ifdef JPRT_VMSQE_HOME
236 VMSQE_HOME = $(JPRT_VMSQE_HOME)
237endif
238
239# Expect JPRT to set JPRT_RUNVMSQE_HOME.
240RUNVMSQE_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/runvmsqe
241ifdef JPRT_RUNVMSQE_HOME
242 RUNVMSQE_HOME = $(JPRT_RUNVMSQE_HOME)
243endif
244
245# Expect JPRT to set JPRT_TONGA3_HOME.
246TONGA3_HOME = /java/sqe//tools/gtee/harness/tonga
247ifdef JPRT_TONGA3_HOME
248 TONGA3_HOME = $(JPRT_TONGA3_HOME)
249endif
250
251RUNVMSQE_BIN = $(RUNVMSQE_HOME)/bin/runvmsqe
252
253vmsqe_tests: prep $(VMSQE_HOME)/vm $(TONGA3_HOME) $(RUNVMSQE_BIN) $(PRODUCT_HOME)
254 $(RM) -r $(ABS_TEST_OUTPUT_DIR)/vmsqe
255 ( $(CD) $(ABS_TEST_OUTPUT_DIR) && \
256 $(RUNVMSQE_BIN) \
257 -jdk "$(PRODUCT_HOME)" \
258 -o "$(ABS_TEST_OUTPUT_DIR)/vmsqe" \
259 -testbase "$(VMSQE_HOME)/vm" \
260 -tonga "$(TONGA3_HOME)" \
261 -tongajdk "$(ALT_BOOTDIR)" \
262 $(JAVA_ARGS) \
263 $(JAVA_VM_ARGS) \
264 $(RUNVMSQE_TEST_OPTION) \
265 $(EXTRA_RUNVMSQE_OPTIONS) \
266 ) ; $(BUNDLE_UP_AND_EXIT)
267
268vmsqe_jdwp: RUNVMSQE_TEST_OPTION=-jdwp
269vmsqe_jdwp: vmsqe_tests
270
271vmsqe_jdi: RUNVMSQE_TEST_OPTION=-jdi
272vmsqe_jdi: vmsqe_tests
273
274vmsqe_jdb: RUNVMSQE_TEST_OPTION=-jdb
275vmsqe_jdb: vmsqe_tests
276
277vmsqe_quick-jdi: RUNVMSQE_TEST_OPTION=-quick-jdi
278vmsqe_quick-jdi: vmsqe_tests
279
280vmsqe_sajdi: RUNVMSQE_TEST_OPTION=-sajdi
281vmsqe_sajdi: vmsqe_tests
282
283vmsqe_jvmti: RUNVMSQE_TEST_OPTION=-jvmti
284vmsqe_jvmti: vmsqe_tests
285
286vmsqe_hprof: RUNVMSQE_TEST_OPTION=-hprof
287vmsqe_hprof: vmsqe_tests
288
289vmsqe_monitoring: RUNVMSQE_TEST_OPTION=-monitoring
290vmsqe_monitoring: vmsqe_tests
291
292PHONY_LIST += vmsqe_jdwp vmsqe_jdi vmsqe_jdb vmsqe_quick-jdi vmsqe_sajdi \
293 vmsqe_jvmti vmsqe_hprof vmsqe_monitoring vmsqe_tests
294
295################################################################
296
297# jck tests
298
299JCK_WORK_DIR = $(ABS_TEST_OUTPUT_DIR)/JCKwork
300JCK_REPORT_DIR = $(ABS_TEST_OUTPUT_DIR)/JCKreport
301JCK_PROPERTIES = $(ABS_TEST_OUTPUT_DIR)/jck.properties
302JCK_CONFIG = $(ABS_TEST_OUTPUT_DIR)/jck.config
303
304JCK_JAVA_EXE = $(PRODUCT_HOME)/bin/java$(EXESUFFIX)
305
306JCK_JAVATEST_JAR = $(JCK_HOME)/lib/javatest.jar
307JCK_JAVATEST = $(ALT_BOOTDIR)/bin/java -jar $(JCK_JAVATEST_JAR)
308
309$(JCK_CONFIG): $(TEST_ROOT)/JCK-$(JCK_BUNDLE_NAME)-$(JCK_RELEASE)-base.jti
310 $(RM) $@
311 $(MKDIR) -p $(@D)
312 $(CP) $< $@
313
314$(JCK_PROPERTIES): $(PRODUCT_HOME) $(JCK_JAVA_EXE)
315 $(RM) $@
316 $(MKDIR) -p $(@D)
317 $(ECHO) "jck.env.compiler.compRefExecute.cmdAsFile=$(JCK_JAVA_EXE)" >> $@
318 $(ECHO) "jck.env.compiler.compRefExecute.systemRoot=$(SYSTEMROOT)" >> $@
319 $(ECHO) "jck.env.compiler.testCompile.testCompileAPImultiJVM.cmdAsFile=$(JCK_JAVA_EXE)" >> $@
320 $(ECHO) "jck.tests.tests=$(JCK_BUNDLE_TESTDIRS)" >> $@
321
322jck_tests: prep $(JCK_HOME) $(JCK_PROPERTIES) $(JCK_CONFIG) $(JCK_JAVATEST_JAR)
323 $(MKDIR) -p $(JCK_WORK_DIR)
324 ( $(JCK_JAVATEST) \
325 -verbose:commands,non-pass \
326 -testSuite $(JCK_HOME) \
327 -workDir $(JCK_WORK_DIR) \
328 -config $(JCK_CONFIG) \
329 -set -file $(JCK_PROPERTIES) \
330 -runtests \
331 -writeReport $(JCK_REPORT_DIR) \
332 ) ; $(BUNDLE_UP_AND_EXIT)
333
334PHONY_LIST += jck_tests
335
336################################################################
337
338# jck6 tests
339
340JCK6_RELEASE = 6b
341JCK6_DEFAULT_HOME = $(SLASH_JAVA)/re/jck/$(JCK6_RELEASE)/archive/fcs/binaries
342
343# Expect JPRT to set JPRT_JCK6COMPILER_HOME.
344JCK6COMPILER_HOME = $(JCK6_DEFAULT_HOME)/JCK-compiler-$(JCK6_RELEASE)
345ifdef JPRT_JCK6COMPILER_HOME
346 JCK6COMPILER_HOME = $(JPRT_JCK6COMPILER_HOME)
347endif
348
349# Expect JPRT to set JPRT_JCK6RUNTIME_HOME.
350JCK6RUNTIME_HOME = $(JCK6_DEFAULT_HOME)/JCK-runtime-$(JCK6_RELEASE)
351ifdef JPRT_JCK6RUNTIME_HOME
352 JCK6RUNTIME_HOME = $(JPRT_JCK6RUNTIME_HOME)
353endif
354
355# Expect JPRT to set JPRT_JCK6DEVTOOLS_HOME.
356JCK6DEVTOOLS_HOME = $(JCK6_DEFAULT_HOME)/JCK-devtools-$(JCK6_RELEASE)
357ifdef JPRT_JCK6DEVTOOLS_HOME
358 JCK6DEVTOOLS_HOME = $(JPRT_JCK6DEVTOOLS_HOME)
359endif
360
361jck6_tests: JCK_HOME=$(JCK6_HOME)
362jck6_tests: JCK_RELEASE=$(JCK6_RELEASE)
363jck6_tests: jck_tests
364
365jck6compiler: JCK6_HOME=$(JCK6COMPILER_HOME)
366jck6compiler: JCK_BUNDLE_NAME=compiler
367jck6compiler: jck6_tests
368
369jck6compiler_lang: JCK_BUNDLE_TESTDIRS=lang
370jck6compiler_lang: jck6compiler
371
372jck6runtime: JCK6_HOME=$(JCK6RUNTIME_HOME)
373jck6runtime: JCK_BUNDLE_NAME=runtime
374jck6runtime: jck6_tests
375
376jck6runtime_lang: JCK_BUNDLE_TESTDIRS=lang
377jck6runtime_lang: jck6runtime
378
379jck6devtools: JCK6_HOME=$(JCK6DEVTOOLS_HOME)
380jck6devtools: JCK_BUNDLE_NAME=devtools
381jck6devtools: jck6_tests
382
383jck6devtools_lang: JCK_BUNDLE_TESTDIRS=lang
384jck6devtools_lang: jck6devtools
385
386PHONY_LIST += jck6compiler jck6runtime jck6devtools jck6_tests \
387 jck6compiler_lang jck6runtime_lang jck6devtools_lang
388
389################################################################
390
391# jck7 tests
392
393JCK7_RELEASE = 7
394JCK7_DEFAULT_HOME = $(SLASH_JAVA)/re/jck/$(JCK7_RELEASE)/archive/fcs/binaries
395
396# Expect JPRT to set JPRT_JCK7COMPILER_HOME.
397JCK7COMPILER_HOME = $(JCK7_DEFAULT_HOME)/JCK-compiler-$(JCK7_RELEASE)
398ifdef JPRT_JCK7COMPILER_HOME
399 JCK7COMPILER_HOME = $(JPRT_JCK7COMPILER_HOME)
400endif
401
402# Expect JPRT to set JPRT_JCK7RUNTIME_HOME.
403JCK7RUNTIME_HOME = $(JCK7_DEFAULT_HOME)/JCK-runtime-$(JCK7_RELEASE)
404ifdef JPRT_JCK7RUNTIME_HOME
405 JCK7RUNTIME_HOME = $(JPRT_JCK7RUNTIME_HOME)
406endif
407
408# Expect JPRT to set JPRT_JCK7DEVTOOLS_HOME.
409JCK7DEVTOOLS_HOME = $(JCK7_DEFAULT_HOME)/JCK-devtools-$(JCK7_RELEASE)
410ifdef JPRT_JCK7DEVTOOLS_HOME
411 JCK7DEVTOOLS_HOME = $(JPRT_JCK7DEVTOOLS_HOME)
412endif
413
414jck7_tests: JCK_HOME=$(JCK7_HOME)
415jck7_tests: JCK_RELEASE=$(JCK7_RELEASE)
416jck7_tests: jck_tests
417
418jck7compiler: JCK7_HOME=$(JCK7COMPILER_HOME)
419jck7compiler: JCK_BUNDLE_NAME=compiler
420jck7compiler: jck7_tests
421
422jck7compiler_lang: JCK_BUNDLE_TESTDIRS=lang
423jck7compiler_lang: jck7compiler
424
425jck7runtime: JCK7_HOME=$(JCK7RUNTIME_HOME)
426jck7runtime: JCK_BUNDLE_NAME=runtime
427jck7runtime: jck7_tests
428
429jck7runtime_lang: JCK_BUNDLE_TESTDIRS=lang
430jck7runtime_lang: jck7runtime
431
432jck7devtools: JCK7_HOME=$(JCK7DEVTOOLS_HOME)
433jck7devtools: JCK_BUNDLE_NAME=devtools
434jck7devtools: jck7_tests
435
436jck7devtools_lang: JCK_BUNDLE_TESTDIRS=lang
437jck7devtools_lang: jck7devtools
438
439PHONY_LIST += jck7compiler jck7runtime jck7devtools jck7_tests \
440 jck7compiler_lang jck7runtime_lang jck7devtools_lang
441
442################################################################
J. Duke319a3b92007-12-01 00:00:00 +0000443
444# Phony targets (e.g. these are not filenames)
Kelly O'Hair53b5f6a2009-03-31 16:12:56 -0700445.PHONY: all clean prep $(PHONY_LIST)
446
447################################################################
J. Duke319a3b92007-12-01 00:00:00 +0000448