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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -238,12 +238,8 @@ profiles:
|
|||||||
mac-bundles:
|
mac-bundles:
|
||||||
+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
|
+($(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 \
|
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
|
# Docs targets
|
||||||
@ -257,17 +253,50 @@ docs-jvmtidoc:
|
|||||||
ALL_TARGETS += docs-javadoc 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:
|
test:
|
||||||
($(CD) $(SRC_ROOT)/test && $(MAKE) $(MAKE_ARGS) -j1 -k MAKEFLAGS= \
|
$(call RunTests, $(TEST))
|
||||||
JT_HOME=$(JT_HOME) PRODUCT_HOME=$(JDK_IMAGE_DIR) \
|
|
||||||
ALT_OUTPUTDIR=$(OUTPUT_ROOT) CONCURRENCY=$(JOBS) $(TEST)) || true
|
test-hotspot-jtreg-native:
|
||||||
|
$(call RunTests, "hotspot_native_sanity")
|
||||||
|
|
||||||
|
test-jdk-jtreg-native:
|
||||||
|
$(call RunTests, "jdk_native_sanity")
|
||||||
|
|
||||||
test-make:
|
test-make:
|
||||||
($(CD) $(SRC_ROOT)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET))
|
($(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
|
# Verification targets
|
||||||
@ -398,12 +427,16 @@ else
|
|||||||
|
|
||||||
docs-jvmtidoc: hotspot
|
docs-jvmtidoc: hotspot
|
||||||
|
|
||||||
test: jimages
|
test: jimages test-image
|
||||||
|
|
||||||
verify-modules: exploded-image
|
verify-modules: exploded-image
|
||||||
|
|
||||||
test-make: clean-test-make
|
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
|
endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -461,7 +494,8 @@ endif
|
|||||||
docs-image: docs-javadoc docs-jvmtidoc
|
docs-image: docs-javadoc docs-jvmtidoc
|
||||||
|
|
||||||
# This target builds the test image
|
# 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 is the top-most target, it builds all our deliverables ("images").
|
||||||
all-images: product-images test-image docs-image
|
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 \
|
CLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \
|
||||||
images make-support test-make
|
images make-support test-make
|
||||||
CLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS))
|
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_PHASES := gensrc java native include
|
||||||
CLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES))
|
CLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES))
|
||||||
CLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES))
|
CLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES))
|
||||||
@ -510,6 +546,9 @@ clean: $(CLEAN_DIR_TARGETS)
|
|||||||
$(CLEAN_DIR_TARGETS):
|
$(CLEAN_DIR_TARGETS):
|
||||||
$(call CleanDir,$(patsubst clean-%, %, $@))
|
$(call CleanDir,$(patsubst clean-%, %, $@))
|
||||||
|
|
||||||
|
$(CLEAN_TEST_TARGETS):
|
||||||
|
$(call CleanTest,$(patsubst clean-test-%, %, $@))
|
||||||
|
|
||||||
$(CLEAN_PHASE_TARGETS):
|
$(CLEAN_PHASE_TARGETS):
|
||||||
$(call Clean-$(patsubst clean-%,%, $@))
|
$(call Clean-$(patsubst clean-%,%, $@))
|
||||||
|
|
||||||
@ -542,8 +581,8 @@ dist-clean: clean
|
|||||||
)
|
)
|
||||||
$(ECHO) Cleaned everything, you will have to re-run configure.
|
$(ECHO) Cleaned everything, you will have to re-run configure.
|
||||||
|
|
||||||
ALL_TARGETS += clean dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_PHASE_TARGETS) \
|
ALL_TARGETS += clean dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_TEST_TARGETS) \
|
||||||
$(CLEAN_MODULE_TARGETS) $(CLEAN_MODULE_PHASE_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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -297,6 +297,14 @@ endef
|
|||||||
|
|
||||||
### Convenience functions from Main.gmk
|
### 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
|
# Cleans the dir given as $1
|
||||||
define CleanDir
|
define CleanDir
|
||||||
@$(PRINTF) "Cleaning $(strip $1) build artifacts ..."
|
@$(PRINTF) "Cleaning $(strip $1) build artifacts ..."
|
||||||
@ -304,6 +312,12 @@ define CleanDir
|
|||||||
@$(PRINTF) " done\n"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define CleanTest
|
||||||
|
@$(PRINTF) "Cleaning test $(strip $1) ..."
|
||||||
|
@$(RM) -r $(SUPPORT_OUTPUTDIR)/test/$(strip $(subst -,/,$1))
|
||||||
|
@$(PRINTF) " done\n"
|
||||||
|
endef
|
||||||
|
|
||||||
define Clean-gensrc
|
define Clean-gensrc
|
||||||
@$(PRINTF) "Cleaning gensrc $(if $1,for $(strip $1) )..."
|
@$(PRINTF) "Cleaning gensrc $(if $1,for $(strip $1) )..."
|
||||||
@$(RM) -r $(SUPPORT_OUTPUTDIR)/gensrc/$(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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -438,11 +438,19 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# Convenience functions for working around make's limitations with $(filter ).
|
# Convenience functions for working around make's limitations with $(filter ).
|
||||||
containing = $(strip $(foreach v,$(strip $2),$(if $(findstring $(strip $1),$v),$v)))
|
containing = \
|
||||||
not-containing = $(strip $(foreach v,$(strip $2),$(if $(findstring $(strip $1),$v),,$v)))
|
$(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.
|
# 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
|
# String equals
|
||||||
equals = \
|
equals = \
|
||||||
|
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
|
# Global settings
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Regression tests depend on test bundle
|
||||||
|
jprt.use.reg.test.bundle=true
|
||||||
|
|
||||||
# The current release name
|
# The current release name
|
||||||
jprt.tools.default.release=jdk9
|
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=hotspot_serviceability}, \
|
||||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=jdk_svc_sanity}, \
|
${my.make.rule.test.targets.hotspot.reg.group:GROUP=jdk_svc_sanity}, \
|
||||||
${my.additional.make.rule.test.targets.hotspot}
|
${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