提交 5f8a30fd 编写于 作者: I ihse

8072842: Add support for building native JTReg tests

Reviewed-by: erikj, sla
上级 bc983788
#
# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2015, 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
......@@ -238,12 +238,8 @@ profiles:
mac-bundles:
+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
prepare-test-image:
$(MKDIR) -p $(TEST_IMAGE_DIR)
$(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'
ALL_TARGETS += source-tips bootcycle-images zip-security zip-source strip-binaries \
jrtfs-jar jimages profiles mac-bundles prepare-test-image
jrtfs-jar jimages profiles mac-bundles
################################################################################
# Docs targets
......@@ -257,17 +253,50 @@ docs-jvmtidoc:
ALL_TARGETS += docs-javadoc docs-jvmtidoc
################################################################################
# Test target
# Build tests
#
prepare-test-image:
$(MKDIR) -p $(TEST_IMAGE_DIR)
$(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'
build-test-hotspot-jtreg-native:
+($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
build-test-hotspot-jtreg-native)
test-image-hotspot-jtreg-native:
+($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
test-image-hotspot-jtreg-native)
build-test-jdk-jtreg-native:
+($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
build-test-jdk-jtreg-native)
test-image-jdk-jtreg-native:
+($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
test-image-jdk-jtreg-native)
ALL_TARGETS += prepare-test-image build-test-hotspot-jtreg-native \
test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \
test-image-jdk-jtreg-native
################################################################################
# Run tests
# Run tests specified by $(TEST), or the default test set.
test:
($(CD) $(SRC_ROOT)/test && $(MAKE) $(MAKE_ARGS) -j1 -k MAKEFLAGS= \
JT_HOME=$(JT_HOME) PRODUCT_HOME=$(JDK_IMAGE_DIR) \
ALT_OUTPUTDIR=$(OUTPUT_ROOT) CONCURRENCY=$(JOBS) $(TEST)) || true
$(call RunTests, $(TEST))
test-hotspot-jtreg-native:
$(call RunTests, "hotspot_native_sanity")
test-jdk-jtreg-native:
$(call RunTests, "jdk_native_sanity")
test-make:
($(CD) $(SRC_ROOT)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET))
ALL_TARGETS += test test-make
ALL_TARGETS += test test-hotspot-jtreg-native test-jdk-jtreg-native test-make
################################################################################
# Verification targets
......@@ -398,12 +427,16 @@ else
docs-jvmtidoc: hotspot
test: jimages
test: jimages test-image
verify-modules: exploded-image
test-make: clean-test-make
test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native
test-image-jdk-jtreg-native: build-test-jdk-jtreg-native
endif
################################################################################
......@@ -446,7 +479,7 @@ ALL_MODULE_TARGETS := $(sort $(GENSRC_MODULES) $(JAVA_MODULES) \
# The "exploded image" is a locally runnable JDK in $(BUILD_OUTPUT)/jdk.
exploded-image: $(ALL_MODULE_TARGETS)
# The $(BUILD_OUTPUT)/images directory contain the resulting deliverables,
# The $(BUILD_OUTPUT)/images directory contain the resulting deliverables,
# and in line with this, our targets for creating these are named *-image[s].
# This target builds the product images, e.g. the JRE and JDK image
......@@ -461,7 +494,8 @@ endif
docs-image: docs-javadoc docs-jvmtidoc
# This target builds the test image
test-image: prepare-test-image
test-image: prepare-test-image test-image-hotspot-jtreg-native \
test-image-jdk-jtreg-native
# all-images is the top-most target, it builds all our deliverables ("images").
all-images: product-images test-image docs-image
......@@ -495,6 +529,8 @@ ALL_TARGETS += default jdk images docs all
CLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \
images make-support test-make
CLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS))
CLEAN_TESTS += hotspot-jtreg-native jdk-jtreg-native
CLEAN_TEST_TARGETS += $(addprefix clean-test-, $(CLEAN_TESTS))
CLEAN_PHASES := gensrc java native include
CLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES))
CLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES))
......@@ -510,6 +546,9 @@ clean: $(CLEAN_DIR_TARGETS)
$(CLEAN_DIR_TARGETS):
$(call CleanDir,$(patsubst clean-%, %, $@))
$(CLEAN_TEST_TARGETS):
$(call CleanTest,$(patsubst clean-test-%, %, $@))
$(CLEAN_PHASE_TARGETS):
$(call Clean-$(patsubst clean-%,%, $@))
......@@ -542,8 +581,8 @@ dist-clean: clean
)
$(ECHO) Cleaned everything, you will have to re-run configure.
ALL_TARGETS += clean dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_PHASE_TARGETS) \
$(CLEAN_MODULE_TARGETS) $(CLEAN_MODULE_PHASE_TARGETS)
ALL_TARGETS += clean dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_TEST_TARGETS) \
$(CLEAN_PHASE_TARGETS) $(CLEAN_MODULE_TARGETS) $(CLEAN_MODULE_PHASE_TARGETS)
################################################################################
......
#
# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2015, 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
......@@ -297,6 +297,14 @@ endef
### Convenience functions from Main.gmk
# Run the tests specified by $1.
define RunTests
($(CD) $(SRC_ROOT)/test && $(MAKE) $(MAKE_ARGS) -j1 -k MAKEFLAGS= \
JT_HOME=$(JT_HOME) PRODUCT_HOME=$(JDK_IMAGE_DIR) \
TEST_IMAGE_DIR=$(TEST_IMAGE_DIR) \
ALT_OUTPUTDIR=$(OUTPUT_ROOT) CONCURRENCY=$(JOBS) $1) || true
endef
# Cleans the dir given as $1
define CleanDir
@$(PRINTF) "Cleaning $(strip $1) build artifacts ..."
......@@ -304,6 +312,12 @@ define CleanDir
@$(PRINTF) " done\n"
endef
define CleanTest
@$(PRINTF) "Cleaning test $(strip $1) ..."
@$(RM) -r $(SUPPORT_OUTPUTDIR)/test/$(strip $(subst -,/,$1))
@$(PRINTF) " done\n"
endef
define Clean-gensrc
@$(PRINTF) "Cleaning gensrc $(if $1,for $(strip $1) )..."
@$(RM) -r $(SUPPORT_OUTPUTDIR)/gensrc/$(strip $1)
......
#
# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2015, 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
......@@ -438,11 +438,19 @@ else
endif
# Convenience functions for working around make's limitations with $(filter ).
containing = $(strip $(foreach v,$(strip $2),$(if $(findstring $(strip $1),$v),$v)))
not-containing = $(strip $(foreach v,$(strip $2),$(if $(findstring $(strip $1),$v),,$v)))
containing = \
$(strip $(foreach v,$(strip $2),$(if $(findstring $(strip $1),$v),$v)))
not-containing = \
$(strip $(foreach v,$(strip $2),$(if $(findstring $(strip $1),$v),,$v)))
# Filter out duplicate sub strings while preserving order. Keeps the first occurance.
uniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
uniq = \
$(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
# Return a list of all string elements that are duplicated in $1.
dups = \
$(strip $(foreach v, $(sort $1), $(if $(filter-out 1, \
$(words $(filter $v, $1))), $v)))
# String equals
equals = \
......@@ -568,7 +576,7 @@ endef
################################################################################
# ShellQuote
#
# Quotes a string with single quotes and replaces single quotes with '\'' so
# Quotes a string with single quotes and replaces single quotes with '\'' so
# that the contents survives being given to the shell.
ShellQuote = \
......@@ -590,8 +598,8 @@ WriteFile = \
################################################################################
# DependOnVariable
#
# This macro takes a variable name and puts the value in a file only if the
# value has changed since last. The name of the file is returned. This can be
# This macro takes a variable name and puts the value in a file only if the
# value has changed since last. The name of the file is returned. This can be
# used to create rule dependencies on make variable values. The following
# example would get rebuilt if the value of SOME_VAR was changed:
#
......
#
# Copyright (c) 2015, 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.
#
ifndef _TEST_FILES_COMPILATION_GMK
_TEST_FILES_COMPILATION_GMK := 1
ifeq (,$(_MAKEBASE_GMK))
$(error You must include MakeBase.gmk prior to including TestFilesCompilation.gmk)
endif
include NativeCompilation.gmk
# FIXME: This is a bad fix currently needed due to JDK-8064808 not being resolved.
include $(JDK_TOPDIR)/make/Tools.gmk
# Setup make rules for creating a set of native test files (libraries or
# executables). This will locate native files matching a certain pattern,
# and compile these into libraries or executables.
#
# Parameter 1 is the name of the rule. This name is used as variable prefix,
# and the targets generated are listed in a variable by that name.
#
# Remaining parameters are named arguments. These include:
# TYPE Must be either PROGRAM or LIBRARY.
# SOURCE_DIRS A list of source directories to search
# OUTPUT_DIR Where to put the resulting files
define SetupTestFilesCompilation
$(if $(27),$(error Internal makefile error: Too many arguments to SetupTestFilesCompilation, please update BuildJTRegNative.gmk))
$(call EvalDebugWrapper,$(strip $1),$(call SetupTestFilesCompilationInner,$(strip $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)))
endef
define SetupTestFilesCompilationInner
$(foreach i,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, $(if $(strip $($i)),$1_$(strip $($i)))$(NEWLINE))
$(call LogSetupMacroEntry,SetupTestFileCompilation($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))
$(if $(27),$(error Internal makefile error: Too many arguments to SetupTestFilesCompilation, please update BuildJTRegNative.gmk))
# Check for duplicate base file names. That would have failed later anyhow, but
# this gives a better error message.
$1_DUPLICATED_NAMES := $$(call dups, $$(notdir $$($1_FILE_LIST)))
ifneq ($$($1_DUPLICATED_NAMES), )
$$(error There are duplicate test file names for $1: $$($1_DUPLICATED_NAMES))
endif
# The list to depend on starts out empty
$1 :=
ifeq ($$($1_TYPE), LIBRARY)
$1_PREFIX = lib
$1_OUTPUT_SUBDIR := lib
$1_CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS)
$1_LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN)
else ifeq ($$($1_TYPE), PROGRAM)
$1_PREFIX = exe
$1_OUTPUT_SUBDIR := bin
$1_CFLAGS := $(CFLAGS_JDKEXE) $(CFLAGS_WARNINGS_ARE_ERRORS)
$1_LDFLAGS := $(LDFLAGS_JDKEXE)
else
$$(error Unknown type: $$($1_TYPE))
endif
# Locate all files with the matching prefix
$1_FILE_LIST := \
$$(shell $$(FIND) $$($1_SOURCE_DIRS) -type f -name "$$($1_PREFIX)*.c")
# Setup a compilation for each and every one of them
$$(foreach file, $$($1_FILE_LIST),\
$$(eval name := $$(strip $$(patsubst $$($1_PREFIX)%, %, $$(basename $$(notdir $$(file)))))) \
$$(eval $$(call SetupNativeCompilation, BUILD_TEST_$$(name), \
$$($1_TYPE) := $$(name), \
SRC := $$(patsubst %/,%,$$(dir $$(file))), \
INCLUDE_FILES := $$(notdir $$(file)), \
OBJECT_DIR := $$($1_OUTPUT_DIR)/support/$$($1_PREFIX)$$(name), \
OUTPUT_DIR := $$($1_OUTPUT_DIR)/$$($1_OUTPUT_SUBDIR), \
LANG := C, \
CFLAGS := $$($1_CFLAGS), \
LDFLAGS := $$($1_LDFLAGS), \
OPTIMIZATION := LOW, \
DEBUG_SYMBOLS := true)) \
$$(eval $1 += $$(BUILD_TEST_$$(name)) ) \
)
endef
endif # _TEST_FILES_COMPILATION_GMK
......@@ -28,6 +28,9 @@
# Global settings
#
# Regression tests depend on test bundle
jprt.use.reg.test.bundle=true
# The current release name
jprt.tools.default.release=jdk9
......@@ -456,3 +459,8 @@ my.make.rule.test.targets.hotspot= \
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_serviceability}, \
${my.make.rule.test.targets.hotspot.reg.group:GROUP=jdk_svc_sanity}, \
${my.additional.make.rule.test.targets.hotspot}
# Native jdk and hotspot test targets (testset=nativesanity)
my.make.rule.test.targets.nativesanity= \
${my.test.target.set:TESTNAME=jdk_native_sanity}, \
${my.test.target.set:TESTNAME=hotspot_native_sanity}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册