8072842: Add support for building native JTReg tests
Reviewed-by: erikj, sla
This commit is contained in:
parent
44cc65ae49
commit
f6875fea5b
@ -1,5 +1,5 @@
|
||||
#
|
||||
# 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)
|
||||
|
||||
################################################################################
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# 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)
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# 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:
|
||||
#
|
||||
|
105
make/common/TestFilesCompilation.gmk
Normal file
105
make/common/TestFilesCompilation.gmk
Normal file
@ -0,0 +1,105 @@
|
||||
#
|
||||
# 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}
|
||||
|
Loading…
x
Reference in New Issue
Block a user