Makefile revision 2467:399e657450f7
1# 2# Copyright (c) 2010, 2015, 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# 27# Makefile to run tests from multiple sibling directories 28# 29 30# Root of the forest that was built 31TOPDIR=.. 32 33# This makefile depends on the availability of sibling directories. 34LANGTOOLS_DIR=$(TOPDIR)/langtools 35JDK_DIR=$(TOPDIR)/jdk 36JAXP_DIR=$(TOPDIR)/jaxp 37HOTSPOT_DIR=$(TOPDIR)/hotspot 38 39# Macro to run a test target in a subdir 40define SUBDIR_TEST # subdirectory target 41if [ -d $1 ] ; then \ 42 if [ -r $1/test/Makefile ] ; then \ 43 $(MAKE) --no-print-directory -k -C $1/test $2 ; \ 44 else \ 45 echo "ERROR: File does not exist: $1/test/Makefile"; \ 46 exit 1; \ 47 fi; \ 48else \ 49 echo "WARNING: No testing done, directory does not exist: $1"; \ 50fi 51endef 52 53# Default test target (core) 54default: jdk_core langtools_jtreg jaxp_all 55 56# All testing 57all: jdk_all langtools_all jaxp_all 58 59# Bring in closed test targets if present 60-include $(TOPDIR)/closed/test/Makefile 61 62ifeq ($(TEST_JOBS), 0) 63 ifeq ($(shell $(EXPR) $(JOBS) \> 50), 1) 64 # JTReg cannot handle more than 50 in concurrency 65 JDK_TEST_JOBS=50 66 else 67 JDK_TEST_JOBS=$(JOBS) 68 endif 69else 70 JDK_TEST_JOBS=$(TEST_JOBS) 71endif 72# Test targets 73langtools_% : 74 @$(NO_STOPPING)$(call SUBDIR_TEST, $(LANGTOOLS_DIR), CONCURRENCY=$(JDK_TEST_JOBS) JT_JAVA=$(PRODUCT_HOME) JTREG_HOME=$(JT_HOME) TEST="$(subst langtools_,,$@)" $(subst langtools_,,$@)) 75 76jdk_% core_%s svc_%: 77 @$(NO_STOPPING)$(call SUBDIR_TEST, $(JDK_DIR), CONCURRENCY=$(JDK_TEST_JOBS) TEST="$@" $@) 78 79jaxp_%: 80 @$(NO_STOPPING)$(call SUBDIR_TEST, $(JAXP_DIR), CONCURRENCY=$(JDK_TEST_JOBS) TEST="$@" $@) 81 82SUB_MAKE_ARGS := 83ifneq ($(TEST_JOBS), 0) 84 ifneq ($(TEST_JOBS), ) 85 SUB_MAKE_ARGS += CONCURRENCY=$(TEST_JOBS) 86 endif 87endif 88hotspot_%: 89 @$(NO_STOPPING)$(call SUBDIR_TEST, $(HOTSPOT_DIR), $(SUB_MAKE_ARGS) TEST="$@" $@) 90 91# 92# jtreg_tests 93# 94# Invocation: 95# 96# make jtreg_tests TESTDIRS=<test-dirs> TEST_SELECTION=<path to test or jtreg group> TEST_OUTPUT_DIR=<path> 97# 98# where <test-dirs> is something like '../<component>/test/runtime', 99# <component> in turn being one of the top level directories (for 100# example 'hotspot'). 101# 102# The below will strip the path prefix and delegate to the 103# corresponding ../<component>/test/Makefile. 104 105ifneq ($(TESTDIRS),) 106# Extract the component from ../<component>/... 107COMPONENT=$(word 2,$(subst /, ,$(TESTDIRS))) 108 109# Strip off the ../<component>/test prefix and pass the rest as TESTDIRS 110# to the delegate Makefile 111TESTDIRS_TESTS=$(patsubst ../$(COMPONENT)/test/%,%,$(TESTDIRS)) 112endif 113 114jtreg_tests: 115 @$(NO_STOPPING)$(call SUBDIR_TEST, $(TOPDIR)/$(COMPONENT), TESTDIRS=$(TESTDIRS_TESTS) $@) 116 117################################################################ 118 119# Phony targets (e.g. these are not filenames) 120.PHONY: all clean 121 122################################################################ 123