make/test/BuildFailureHandler.gmk
author aefimov
Tue, 25 Jun 2019 00:07:47 +0100
changeset 58631 36c5e85b8597
parent 53683 48ff68e2fe5c
child 58908 73bb9c4002cc
permissions -rw-r--r--
8223892: Improved handling of jar files Reviewed-by: dfuchs, chegar, michaelm, rhalade, ahgross

#
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

default: build

include $(SPEC)
include MakeBase.gmk
include JavaCompilation.gmk
include SetupJavaCompilers.gmk
include NativeCompilation.gmk

TARGETS :=

################################################################################

FH_BASEDIR := $(TOPDIR)/test/failure_handler
FH_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/failure_handler
FH_JAR := $(FH_SUPPORT)/jtregFailureHandler.jar

JTREG_JAR := $(JT_HOME)/lib/jtreg.jar
ifeq ($(wildcard $(JTREG_JAR)), )
  $(error Cannot build failure handler without jtreg)
endif
# tools.jar is only needed if it exists in the boot jdk
TOOLS_JAR := $(wildcard $(BOOT_JDK)/lib/tools.jar)

FH_CLASSPATH := $(call PathList, $(JTREG_JAR) $(TOOLS_JAR))

$(eval $(call SetupJavaCompilation, BUILD_FAILURE_HANDLER, \
    SETUP := GENERATE_OLDBYTECODE, \
    SRC := $(FH_BASEDIR)/src/share/classes $(FH_BASEDIR)/src/share/conf, \
    BIN := $(FH_SUPPORT)/classes, \
    COPY := .properties, \
    CLASSPATH := $(JTREG_JAR) $(TOOLS_JAR), \
    JAR := $(FH_JAR), \
))

TARGETS += $(BUILD_FAILURE_HANDLER)

################################################################################

ifeq ($(call isTargetOs, windows), true)

  $(eval $(call SetupNativeCompilation, BUILD_LIBTIMEOUT_HANDLER, \
        NAME := timeoutHandler, \
        SRC := $(FH_BASEDIR)/src/windows/native/libtimeoutHandler, \
        OBJECT_DIR := $(FH_SUPPORT)/libtimeoutHandler, \
        OUTPUT_DIR := $(FH_SUPPORT), \
        CFLAGS := $(CFLAGS_JDKLIB), \
        LDFLAGS := $(LDFLAGS_JDKLIB), \
        OPTIMIZATION := LOW, \
  ))

  TARGETS += $(BUILD_LIBTIMEOUT_HANDLER)

endif

################################################################################
# Targets for building test-image.
################################################################################

# Copy to hotspot jtreg test image
$(eval $(call SetupCopyFiles, COPY_FH, \
    SRC := $(FH_SUPPORT), \
    DEST := $(TEST_IMAGE_DIR)/failure_handler, \
    FILES := $(FH_JAR) $(BUILD_LIBTIMEOUT_HANDLER), \
))

IMAGES_TARGETS += $(COPY_FH)

################################################################################
# Test the failure handler itself
################################################################################
#
# Use JTREG_TEST_OPTS for test VM options
# Use JTREG_TESTS for jtreg tests parameter
#
RUN_DIR := $(FH_SUPPORT)/test
# Add the dir of the dll to the path on windows
ifeq ($(call isTargetOs, windows), true)
  export PATH := $(PATH);$(FH_SUPPORT)
endif

test:
	$(RM) -r $(RUN_DIR)
	$(MKDIR) -p $(RUN_DIR)
	$(CD) $(FH_BASEDIR)/test && JT_JAVA=$(BOOT_JDK) $(JTREGEXE) \
	    -jdk:$(BOOT_JDK) \
	    $(JTREG_TEST_OPTS) \
	    -timeout:0.1 -va -retain:all \
	    -noreport \
	    -agentvm \
	    -thd:$(FH_JAR) \
	    -th:jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler \
	    -od:$(FH_JAR) \
	    -o:jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver \
	    -w:$(RUN_DIR)/JTwork -r:$(RUN_DIR)/JTreport \
	    $(if $(JTREG_TESTS), $(JTREG_TESTS), .) \
	    || true

################################################################################

build: $(TARGETS)
images: $(IMAGES_TARGETS)

.PHONY: all images test