1 #
   2 # Copyright (c) 2016, 2018, 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 
  26 default: build
  27 
  28 include $(SPEC)
  29 include MakeBase.gmk
  30 include JavaCompilation.gmk
  31 include SetupJavaCompilers.gmk
  32 include NativeCompilation.gmk
  33 
  34 TARGETS :=
  35 
  36 ################################################################################
  37 
  38 FH_BASEDIR := $(TOPDIR)/test/failure_handler
  39 FH_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/failure_handler
  40 FH_JAR := $(FH_SUPPORT)/jtregFailureHandler.jar
  41 
  42 JTREG_JAR := $(JT_HOME)/lib/jtreg.jar
  43 ifeq ($(wildcard $(JTREG_JAR)), )
  44   $(error Cannot build failure handler without jtreg)
  45 endif
  46 # tools.jar is only needed if it exists in the boot jdk
  47 TOOLS_JAR := $(wildcard $(BOOT_JDK)/lib/tools.jar)
  48 
  49 FH_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 
  60 TARGETS += $(BUILD_FAILURE_HANDLER)
  61 
  62 ################################################################################
  63 
  64 ifeq ($(OPENJDK_TARGET_OS), windows)
  65 
  66   $(eval $(call SetupNativeCompilation, BUILD_LIBTIMEOUT_HANDLER, \
  67         NAME := 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 
  78 endif
  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 
  91 IMAGES_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 #
 100 RUN_DIR := $(FH_SUPPORT)/test
 101 # Add the dir of the dll to the path on windows
 102 ifeq ($(OPENJDK_TARGET_OS), windows)
 103   export PATH := $(PATH);$(FH_SUPPORT)
 104 endif
 105 
 106 test:
 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 
 125 build: $(TARGETS)
 126 images: $(IMAGES_TARGETS)
 127 
 128 .PHONY: all images test