BuildFailureHandler.gmk revision 2013:55cf2b46a77a
1#
2# Copyright (c) 2016, Oracle and/or its affiliates. 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.  Oracle designates this
8# particular file as subject to the "Classpath" exception as provided
9# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22# or visit www.oracle.com if you need additional information or have any
23# questions.
24#
25
26default: build
27
28include $(SPEC)
29include MakeBase.gmk
30include JavaCompilation.gmk
31include SetupJavaCompilers.gmk
32include NativeCompilation.gmk
33
34TARGETS :=
35
36################################################################################
37
38FH_BASEDIR := $(SRC_ROOT)/test/failure_handler
39FH_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/failure_handler
40FH_JAR := $(FH_SUPPORT)/jtregFailureHandler.jar
41
42JTREG_JAR := $(JT_HOME)/lib/jtreg.jar
43ifeq ($(wildcard $(JTREG_JAR)), )
44  $(error Cannot build failure handler without jtreg)
45endif
46# tools.jar is only needed if it exists in the boot jdk
47TOOLS_JAR := $(wildcard $(BOOT_JDK)/lib/tools.jar)
48
49FH_CLASSPATH := $(call PathList, $(JTREG_JAR) $(TOOLS_JAR))
50
51$(eval $(call SetupJavaCompilation, BUILD_FAILURE_HANDLER, \
52    SETUP := GENERATE_OLDBYTECODE, \
53    SRC := $(FH_BASEDIR)/src/share/classes $(FH_BASEDIR)/src/share/conf, \
54    BIN := $(FH_SUPPORT)/classes, \
55    COPY := .properties, \
56    CLASSPATH := $(JTREG_JAR) $(TOOLS_JAR), \
57    JAR := $(FH_JAR), \
58))
59
60TARGETS += $(BUILD_FAILURE_HANDLER)
61
62################################################################################
63
64ifeq ($(OPENJDK_TARGET_OS), windows)
65
66  $(eval $(call SetupNativeCompilation, BUILD_LIBTIMEOUT_HANDLER, \
67        LIBRARY := timeoutHandler, \
68        SRC := $(FH_BASEDIR)/src/windows/native/libtimeoutHandler, \
69        OBJECT_DIR := $(FH_SUPPORT)/libtimeoutHandler, \
70        OUTPUT_DIR := $(FH_SUPPORT), \
71        CFLAGS := $(CFLAGS_JDKLIB), \
72        LDFLAGS := $(LDFLAGS_JDKLIB), \
73        OPTIMIZATION := LOW, \
74  ))
75
76  TARGETS += $(BUILD_LIBTIMEOUT_HANDLER)
77
78endif
79
80################################################################################
81# Targets for building test-image.
82################################################################################
83
84# Copy to hotspot jtreg test image
85$(eval $(call SetupCopyFiles, COPY_FH, \
86    SRC := $(FH_SUPPORT), \
87    DEST := $(TEST_IMAGE_DIR)/failure_handler, \
88    FILES := $(FH_JAR) $(BUILD_LIBTIMEOUT_HANDLER), \
89))
90
91IMAGES_TARGETS += $(COPY_FH)
92
93################################################################################
94# Test the failure handler itself
95################################################################################
96#
97# Use JTREG_TEST_OPTS for test VM options
98# Use JTREG_TESTS for jtreg tests parameter
99#
100RUN_DIR := $(FH_SUPPORT)/test
101# Add the dir of the dll to the path on windows
102ifeq ($(OPENJDK_TARGET_OS), windows)
103  export PATH := $(PATH);$(FH_SUPPORT)
104endif
105
106test:
107	$(RM) -r $(RUN_DIR)
108	$(MKDIR) -p $(RUN_DIR)
109	$(CD) $(FH_BASEDIR)/test && JT_JAVA=$(BOOT_JDK) $(JTREGEXE) \
110	    -jdk:$(BOOT_JDK) \
111	    $(JTREG_TEST_OPTS) \
112	    -timeout:0.1 -va -retain:all \
113	    -noreport \
114	    -agentvm \
115	    -thd:$(FH_JAR) \
116	    -th:jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler \
117	    -od:$(FH_JAR) \
118	    -o:jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver \
119	    -w:$(RUN_DIR)/JTwork -r:$(RUN_DIR)/JTreport \
120	    $(if $(JTREG_TESTS), $(JTREG_TESTS), .) \
121	    || true
122
123################################################################################
124
125build: $(TARGETS)
126images: $(IMAGES_TARGETS)
127
128.PHONY: all images test
129