#
# Copyright (c) 2006, 2014, 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.
#

##############
#
# Global settings
#

# The current release name
my.jdk.update.version=66
jprt.tools.default.release=jdk8u60

# Check if this is the equivalent of a hotspot push job
# Interpret -testset hotspot to mean exactly that
my.is.hotspot.job.hotspot=true
my.is.hotspot.job=${my.is.hotspot.job.${jprt.test.set}}

# Disable syncing the source after builds and tests are done
jprt.sync.push=${my.is.hotspot.job ? false : true}

# Directories to be excluded from the source bundles
jprt.bundle.exclude.src.dirs=build dist webrev

# Use configure when building
jprt.build.use.configure=true

# Set make target to use for different build flavors
jprt.build.flavor.debugOpen.target=jprt_bundle
jprt.build.flavor.fastdebug.target=jprt_bundle
jprt.build.flavor.product.target=jprt_bundle
jprt.build.flavor.productOpen.target=jprt_bundle

# Use these configure args to define debug level
jprt.debug.build.configure.args=--with-debug-level=slowdebug
jprt.fastdebug.build.configure.args=--with-debug-level=fastdebug
jprt.product.build.configure.args=--with-debug-level=release
jprt.debugOpen.build.configure.args=${jprt.debug.build.configure.args} --enable-openjdk-only
jprt.fastdebugOpen.build.configure.args=${jprt.fastdebug.build.configure.args} --enable-openjdk-only
jprt.productOpen.build.configure.args=${jprt.product.build.configure.args} --enable-openjdk-only

# Select build flavors and build targets
jprt.build.flavors=${my.is.hotspot.job ? ${my.build.flavors.hotspot} : ${my.build.flavors.default}}
jprt.build.targets=${my.is.hotspot.job ? ${my.build.targets.hotspot} : ${my.build.targets.default}}

# Select test targets - jprt default for jprt.test.set is "default"
jprt.test.targets=${my.test.targets.${jprt.test.set}}
jprt.make.rule.test.targets=${my.make.rule.test.targets.${jprt.test.set}}

# 7155453: Work-around to prevent popups on OSX from blocking test completion
# but the work-around is added to all platforms to be consistent
jprt.jbb.options=-Djava.awt.headless=true

########
#
# Build options (generic)
#

# Configure args common to all builds
# Also allows for additional, testset specific configure arguments to be set
jprt.build.configure.args=						\
    --with-boot-jdk=$ALT_BOOTDIR					\
    --with-jobs=$ALT_PARALLEL_COMPILE_JOBS				\
    --with-update-version=${my.jdk.update.version}			\
    ${my.additional.build.configure.args.${jprt.test.set}}

# i586 is often cross-compiled from 64-bit machines, so need to set target bits explicitly
jprt.i586.build.configure.args=						\
    --with-target-bits=32

# i586 platforms have both client and server, but to allow for overriding the exact configuration
# on a per-build flavor basis the value is set for the individual build flavors
# All other platforms only build server, which is the default setting from configure
my.i586.default.build.configure.args=					\
    --with-jvm-variants=client,server
jprt.i586.debug.build.configure.args=					\
    ${my.i586.default.build.configure.args}				\
    ${jprt.debug.build.configure.args}
jprt.i586.fastdebug.build.configure.args=				\
    ${my.i586.default.build.configure.args}				\
    ${jprt.fastdebug.build.configure.args}
jprt.i586.product.build.configure.args=					\
    ${my.i586.default.build.configure.args}				\
    ${jprt.product.build.configure.args}
jprt.i586.debugOpen.build.configure.args=				\
    ${my.i586.default.build.configure.args}				\
    ${jprt.debugOpen.build.configure.args}
jprt.i586.fastdebugOpen.build.configure.args=				\
    ${my.i586.default.build.configure.args}				\
    ${jprt.fastdebugOpen.build.configure.args}
jprt.i586.productOpen.build.configure.args=				\
    ${my.i586.default.build.configure.args}				\
    ${jprt.productOpen.build.configure.args}

########
#
# Build targets and options (default/jdk)
#

# The default build flavors
my.build.flavors.default=fastdebug,product

# Standard list of jprt build targets for this source tree
my.build.targets.default=						\
    solaris_sparcv9_5.10-{product|fastdebug},				\
    solaris_x64_5.10-{product|fastdebug},				\
    linux_i586_2.6-{product|fastdebug},					\
    linux_x64_2.6-{product|fastdebug},					\
    macosx_x64_10.7-{product|fastdebug},				\
    windows_i586_6.1-{product|fastdebug},				\
    windows_x64_6.1-{product|fastdebug}

# Test target list (no fastdebug & limited c2 testing)
my.test.target.set=							\
    solaris_sparcv9_5.10-product-c2-TESTNAME,				\
    solaris_x64_5.10-product-c2-TESTNAME,				\
    linux_i586_2.6-product-{c1|c2}-TESTNAME,				\
    linux_x64_2.6-product-c2-TESTNAME,					\
    macosx_x64_10.7-product-c2-TESTNAME,				\
    windows_i586_6.1-product-c1-TESTNAME,				\
    windows_x64_6.1-product-c2-TESTNAME

# Default vm test targets (testset=default)
my.test.targets.default=						\
    ${my.test.target.set:TESTNAME=jvm98},				\
    ${my.test.target.set:TESTNAME=scimark}

# Default jdk test targets (testset=default)
my.make.rule.test.targets.default=					\
    ${my.test.target.set:TESTNAME=langtools_jtreg},			\
    ${my.test.target.set:TESTNAME=jdk_lang},				\
    ${my.test.target.set:TESTNAME=jdk_math},				\
    ${my.test.target.set:TESTNAME=jdk_util}
    
# Default vm test targets (testset=core)
my.test.targets.core=

# Core jdk test targets (testset=core)
my.make.rule.test.targets.core=						\
    ${my.test.target.set:TESTNAME=jdk_lang},				\
    ${my.test.target.set:TESTNAME=jdk_math},				\
    ${my.test.target.set:TESTNAME=jdk_util},				\
    ${my.test.target.set:TESTNAME=jdk_io},				\
    ${my.test.target.set:TESTNAME=jdk_net},				\
    ${my.test.target.set:TESTNAME=jdk_nio},				\
    ${my.test.target.set:TESTNAME=jdk_security1},			\
    ${my.test.target.set:TESTNAME=jdk_security2},			\
    ${my.test.target.set:TESTNAME=jdk_security3},			\
    ${my.test.target.set:TESTNAME=jdk_security4},			\
    ${my.test.target.set:TESTNAME=jdk_rmi},				\
    ${my.test.target.set:TESTNAME=jdk_text},				\
    ${my.test.target.set:TESTNAME=jdk_time},				\
    ${my.test.target.set:TESTNAME=jdk_other},				\
    ${my.test.target.set:TESTNAME=core_tools}

# Svc vm test targets (testset=svc)
my.test.targets.svc=

# Core jdk test targets (testset=svc)
my.make.rule.test.targets.svc=						\
    ${my.test.target.set:TESTNAME=jdk_management},			\
    ${my.test.target.set:TESTNAME=jdk_instrument},			\
    ${my.test.target.set:TESTNAME=jdk_jmx},				\
    ${my.test.target.set:TESTNAME=jdk_jdi},				\
    ${my.test.target.set:TESTNAME=jdk_jfr},				\
    ${my.test.target.set:TESTNAME=jdk_rm},				\
    ${my.test.target.set:TESTNAME=svc_tools}

# All vm test targets (testset=all)
my.test.targets.all=							\
    ${my.test.targets.default},						\
    ${my.test.target.set:TESTNAME=runThese},				\
    ${my.test.target.set:TESTNAME=jbb_default}

# All jdk test targets (testset=all)
my.make.rule.test.targets.all=						\
    ${my.make.rule.test.targets.core},					\
    ${my.make.rule.test.targets.svc},					\
    ${my.test.target.set:TESTNAME=jdk_awt},				\
    ${my.test.target.set:TESTNAME=jdk_beans1},				\
    ${my.test.target.set:TESTNAME=jdk_beans2},				\
    ${my.test.target.set:TESTNAME=jdk_beans3},				\
    ${my.test.target.set:TESTNAME=jdk_sound},				\
    ${my.test.target.set:TESTNAME=jdk_swing}

# PIT vm test targets (testset=pit)
my.test.targets.pit=							\
   ${my.test.targets.all}

# PIT jdk test targets (testset=pit)
my.make.rule.test.targets.pit=						\
    ${my.test.target.set:TESTNAME=langtools_jtreg},			\
    ${my.make.rule.test.targets.core},					\
    ${my.make.rule.test.targets.svc}

# JCK test targets in test/Makefile (no windows)
my.test.target.set.jck=							\
    solaris_sparcv9_5.10-product-c2-JCK7TESTRULE,			\
    solaris_x64_5.10-product-c2-JCK7TESTRULE,				\
    linux_i586_2.6-product-c1-JCK7TESTRULE,				\
    linux_x64_2.6-product-c2-JCK7TESTRULE

# JCK testset targets
my.make.rule.test.targets.jck=						\
    ${my.test.target.set.jck:JCK7TESTRULE=jck7devtools},		\
    ${my.test.target.set.jck:JCK7TESTRULE=jck7runtime},			\
    ${my.test.target.set.jck:JCK7TESTRULE=jck7compiler}


#############
#
# Hotspot related settings (testset=hotspot)
#

# The hotspot build flavors
my.build.flavors.hotspot=						\
    debugOpen,fastdebug,product,productOpen,				\
    ${my.additional.build.flavors.hotspot}

# Platforms built for hotspot push jobs
my.build.targets.hotspot=						\
    solaris_sparcv9_5.10-{product|fastdebug|optimized},			\
    solaris_x64_5.10-{product|fastdebug},				\
    linux_i586_2.6-{product|fastdebug},					\
    linux_x64_2.6-{product|fastdebug|optimized},			\
    macosx_x64_10.7-{product|fastdebug},				\
    windows_i586_6.1-{product|fastdebug},				\
    windows_x64_6.1-{product|fastdebug|optimized},			\
    solaris_x64_5.10-{debugOpen},					\
    linux_x64_2.6-{productOpen},					\
    ${my.additional.build.targets.hotspot}

# Tests to run on the various platforms for hotspot push jobs
my.test.targets.hotspot.solaris.sparcv9=				\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-jvm98,			\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-jvm98_nontiered,	\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-scimark,		\
    solaris_sparcv9_5.10-product-c2-runThese,				\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCBasher_SerialGC,	\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCBasher_ParallelGC,	\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCBasher_ParNewGC,	\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCBasher_CMS,		\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCBasher_G1,		\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCBasher_ParOldGC,	\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCOld_SerialGC,		\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCOld_ParallelGC,	\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCOld_ParNewGC,		\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCOld_CMS,		\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCOld_G1,		\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-GCOld_ParOldGC,		\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-jbb_default_nontiered,	\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-jbb_SerialGC,		\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-jbb_ParallelGC,		\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-jbb_CMS,		\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-jbb_G1,			\
    solaris_sparcv9_5.10-{product|fastdebug}-c2-jbb_ParOldGC

my.test.targets.hotspot.solaris.x64=					\
    solaris_x64_5.10-{product|fastdebug}-c2-jvm98,			\
    solaris_x64_5.10-{product|fastdebug}-c2-jvm98_nontiered,		\
    solaris_x64_5.10-{product|fastdebug}-c2-scimark,			\
    solaris_x64_5.10-product-c2-runThese,				\
    solaris_x64_5.10-product-c2-runThese_Xcomp,				\
    solaris_x64_5.10-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    solaris_x64_5.10-{product|fastdebug}-c2-GCBasher_ParallelGC,	\
    solaris_x64_5.10-{product|fastdebug}-c2-GCBasher_ParNewGC,		\
    solaris_x64_5.10-{product|fastdebug}-c2-GCBasher_CMS,		\
    solaris_x64_5.10-{product|fastdebug}-c2-GCBasher_G1,		\
    solaris_x64_5.10-{product|fastdebug}-c2-GCBasher_ParOldGC,		\
    solaris_x64_5.10-{product|fastdebug}-c2-GCOld_SerialGC,		\
    solaris_x64_5.10-{product|fastdebug}-c2-GCOld_ParallelGC,		\
    solaris_x64_5.10-{product|fastdebug}-c2-GCOld_ParNewGC,		\
    solaris_x64_5.10-{product|fastdebug}-c2-GCOld_CMS,			\
    solaris_x64_5.10-{product|fastdebug}-c2-GCOld_G1,			\
    solaris_x64_5.10-{product|fastdebug}-c2-GCOld_ParOldGC,		\
    solaris_x64_5.10-{product|fastdebug}-c2-jbb_default_nontiered,	\
    solaris_x64_5.10-{product|fastdebug}-c2-jbb_SerialGC,		\
    solaris_x64_5.10-{product|fastdebug}-c2-jbb_ParallelGC,		\
    solaris_x64_5.10-{product|fastdebug}-c2-GCOld_CMS,			\
    solaris_x64_5.10-{product|fastdebug}-c2-GCOld_G1,			\
    solaris_x64_5.10-{product|fastdebug}-c2-GCOld_ParOldGC

my.test.targets.hotspot.linux.i586=					\
    linux_i586_2.6-{product|fastdebug}-{c1|c2}-jvm98,			\
    linux_i586_2.6-{product|fastdebug}-c2-jvm98_nontiered,		\
    linux_i586_2.6-{product|fastdebug}-{c1|c2}-scimark,			\
    linux_i586_2.6-product-c1-runThese_Xcomp,				\
    linux_i586_2.6-fastdebug-c1-runThese_Xshare,			\
    linux_i586_2.6-fastdebug-c2-runThese_Xcomp,				\
    linux_i586_2.6-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC,	\
    linux_i586_2.6-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC,	\
    linux_i586_2.6-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC,	\
    linux_i586_2.6-{product|fastdebug}-{c1|c2}-GCBasher_CMS,		\
    linux_i586_2.6-{product|fastdebug}-{c1|c2}-GCBasher_G1,		\
    linux_i586_2.6-{product|fastdebug}-{c1|c2}-GCBasher_ParOldGC,	\
    linux_i586_2.6-product-{c1|c2}-GCOld_SerialGC,			\
    linux_i586_2.6-product-{c1|c2}-GCOld_ParallelGC,			\
    linux_i586_2.6-product-{c1|c2}-GCOld_ParNewGC,			\
    linux_i586_2.6-product-{c1|c2}-GCOld_CMS,				\
    linux_i586_2.6-product-{c1|c2}-GCOld_G1,				\
    linux_i586_2.6-product-{c1|c2}-GCOld_ParOldGC,			\
    linux_i586_2.6-{product|fastdebug}-c1-jbb_SerialGC,			\
    linux_i586_2.6-{product|fastdebug}-c2-jbb_default_nontiered,	\
    linux_i586_2.6-{product|fastdebug}-c1-jbb_ParallelGC,		\
    linux_i586_2.6-{product|fastdebug}-c1-jbb_CMS,			\
    linux_i586_2.6-{product|fastdebug}-c1-jbb_G1,			\
    linux_i586_2.6-{product|fastdebug}-c1-jbb_ParOldGC

my.test.targets.hotspot.linux.x64=					\
    linux_x64_2.6-{product|fastdebug}-c2-jvm98,				\
    linux_x64_2.6-{product|fastdebug}-c2-jvm98_nontiered,		\
    linux_x64_2.6-{product|fastdebug}-c2-scimark,			\
    linux_x64_2.6-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    linux_x64_2.6-{product|fastdebug}-c2-GCBasher_ParallelGC,		\
    linux_x64_2.6-{product|fastdebug}-c2-GCBasher_ParNewGC,		\
    linux_x64_2.6-{product|fastdebug}-c2-GCBasher_CMS,			\
    linux_x64_2.6-{product|fastdebug}-c2-GCBasher_G1,			\
    linux_x64_2.6-{product|fastdebug}-c2-GCBasher_ParOldGC,		\
    linux_x64_2.6-{product|fastdebug}-c2-GCOld_SerialGC,		\
    linux_x64_2.6-{product|fastdebug}-c2-GCOld_ParallelGC,		\
    linux_x64_2.6-{product|fastdebug}-c2-GCOld_ParNewGC,		\
    linux_x64_2.6-{product|fastdebug}-c2-GCOld_CMS,			\
    linux_x64_2.6-{product|fastdebug}-c2-GCOld_G1,			\
    linux_x64_2.6-{product|fastdebug}-c2-GCOld_ParOldGC,		\
    linux_x64_2.6-{product|fastdebug}-c2-jbb_default_nontiered,		\
    linux_x64_2.6-{product|fastdebug}-c2-jbb_ParallelGC,		\
    linux_x64_2.6-{product|fastdebug}-c2-jbb_G1,			\
    linux_x64_2.6-{product|fastdebug}-c2-jbb_ParOldGC

my.test.targets.hotspot.macosx.x64=					\
    macosx_x64_10.7-{product|fastdebug}-c2-jvm98,			\
    macosx_x64_10.7-{product|fastdebug}-c2-jvm98_nontiered,		\
    macosx_x64_10.7-{product|fastdebug}-c2-scimark,			\
    macosx_x64_10.7-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    macosx_x64_10.7-{product|fastdebug}-c2-GCBasher_ParallelGC,		\
    macosx_x64_10.7-{product|fastdebug}-c2-GCBasher_ParNewGC,		\
    macosx_x64_10.7-{product|fastdebug}-c2-GCBasher_CMS,		\
    macosx_x64_10.7-{product|fastdebug}-c2-GCBasher_G1,			\
    macosx_x64_10.7-{product|fastdebug}-c2-GCBasher_ParOldGC,		\
    macosx_x64_10.7-{product|fastdebug}-c2-GCOld_SerialGC,		\
    macosx_x64_10.7-{product|fastdebug}-c2-GCOld_ParallelGC,		\
    macosx_x64_10.7-{product|fastdebug}-c2-GCOld_ParNewGC,		\
    macosx_x64_10.7-{product|fastdebug}-c2-GCOld_CMS,			\
    macosx_x64_10.7-{product|fastdebug}-c2-GCOld_G1,			\
    macosx_x64_10.7-{product|fastdebug}-c2-GCOld_ParOldGC,		\
    macosx_x64_10.7-{product|fastdebug}-c2-jbb_default_nontiered,	\
    macosx_x64_10.7-{product|fastdebug}-c2-jbb_ParallelGC,		\
    macosx_x64_10.7-{product|fastdebug}-c2-jbb_G1,			\
    macosx_x64_10.7-{product|fastdebug}-c2-jbb_ParOldGC

my.test.targets.hotspot.windows.i586=					\
    windows_i586_6.1-{product|fastdebug}-{c1|c2}-jvm98,			\
    windows_i586_6.1-{product|fastdebug}-c2-jvm98_nontiered,		\
    windows_i586_6.1-{product|fastdebug}-{c1|c2}-scimark,		\
    windows_i586_6.1-product-{c1|c2}-runThese,				\
    windows_i586_6.1-product-{c1|c2}-runThese_Xcomp,			\
    windows_i586_6.1-fastdebug-c1-runThese_Xshare,			\
    windows_i586_6.1-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC,	\
    windows_i586_6.1-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC,	\
    windows_i586_6.1-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC,	\
    windows_i586_6.1-{product|fastdebug}-{c1|c2}-GCBasher_CMS,		\
    windows_i586_6.1-{product|fastdebug}-{c1|c2}-GCBasher_G1,		\
    windows_i586_6.1-{product|fastdebug}-{c1|c2}-GCBasher_ParOldGC,	\
    windows_i586_6.1-product-{c1|c2}-GCOld_SerialGC,			\
    windows_i586_6.1-product-{c1|c2}-GCOld_ParallelGC,			\
    windows_i586_6.1-product-{c1|c2}-GCOld_ParNewGC,			\
    windows_i586_6.1-product-{c1|c2}-GCOld_CMS,				\
    windows_i586_6.1-product-{c1|c2}-GCOld_G1,				\
    windows_i586_6.1-product-{c1|c2}-GCOld_ParOldGC,			\
    windows_i586_6.1-{product|fastdebug}-{c1|c2}-jbb_default,		\
    windows_i586_6.1-{product|fastdebug}-c2-jbb_default_nontiered,	\
    windows_i586_6.1-product-{c1|c2}-jbb_ParallelGC,			\
    windows_i586_6.1-product-{c1|c2}-jbb_CMS,				\
    windows_i586_6.1-product-{c1|c2}-jbb_G1,				\
    windows_i586_6.1-product-{c1|c2}-jbb_ParOldGC

my.test.targets.hotspot.windows.x64=					\
    windows_x64_6.1-{product|fastdebug}-c2-jvm98,			\
    windows_x64_6.1-{product|fastdebug}-c2-jvm98_nontiered,		\
    windows_x64_6.1-{product|fastdebug}-c2-scimark,			\
    windows_x64_6.1-product-c2-runThese,				\
    windows_x64_6.1-product-c2-runThese_Xcomp,				\
    windows_x64_6.1-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    windows_x64_6.1-{product|fastdebug}-c2-GCBasher_ParallelGC,		\
    windows_x64_6.1-{product|fastdebug}-c2-GCBasher_ParNewGC,		\
    windows_x64_6.1-{product|fastdebug}-c2-GCBasher_CMS,		\
    windows_x64_6.1-{product|fastdebug}-c2-GCBasher_G1,			\
    windows_x64_6.1-{product|fastdebug}-c2-GCBasher_ParOldGC,		\
    windows_x64_6.1-{product|fastdebug}-c2-GCOld_SerialGC,		\
    windows_x64_6.1-{product|fastdebug}-c2-GCOld_ParallelGC,		\
    windows_x64_6.1-{product|fastdebug}-c2-GCOld_ParNewGC,		\
    windows_x64_6.1-{product|fastdebug}-c2-GCOld_CMS,			\
    windows_x64_6.1-{product|fastdebug}-c2-GCOld_G1,			\
    windows_x64_6.1-{product|fastdebug}-c2-GCOld_ParOldGC,		\
    windows_x64_6.1-{product|fastdebug}-c2-jbb_default,			\
    windows_x64_6.1-{product|fastdebug}-c2-jbb_default_nontiered,	\
    windows_x64_6.1-product-c2-jbb_CMS,					\
    windows_x64_6.1-product-c2-jbb_ParallelGC,				\
    windows_x64_6.1-product-c2-jbb_G1,					\
    windows_x64_6.1-product-c2-jbb_ParOldGC

# Some basic "smoke" tests for OpenJDK builds
my.test.targets.hotspot.open=						\
    solaris_x64_5.10-{productOpen|fastdebugOpen}-c2-jvm98,		\
    linux_x64_2.6-{productOpen|fastdebugOpen}-c2-jvm98

# The complete list of test targets for jprt
my.test.targets.hotspot=						\
  ${my.test.targets.hotspot.open},					\
  ${my.test.targets.hotspot.solaris.sparcv9},				\
  ${my.test.targets.hotspot.solaris.x64},				\
  ${my.test.targets.hotspot.linux.i586},				\
  ${my.test.targets.hotspot.linux.x64},					\
  ${my.test.targets.hotspot.macosx.x64},				\
  ${my.test.targets.hotspot.windows.i586},				\
  ${my.test.targets.hotspot.windows.x64},				\
  ${my.test.targets.hotspot.solaris.sparcv9},				\
  ${my.test.targets.hotspot.solaris.x64},				\
  ${my.test.targets.hotspot.linux.x64},					\
  ${my.test.targets.hotspot.windows.i586},				\
  ${my.test.targets.hotspot.windows.x64},				\
  ${my.additional.test.targets.hotspot}


# Make file based test targets

my.make.rule.test.targets.hotspot.clienttests=				\
  linux_i586_2.6-*-c1-hotspot_clienttest,				\
  windows_i586_6.1-*-c1-hotspot_clienttest

my.make.rule.test.targets.hotspot.servertests=				\
  solaris_sparcv9_5.10-*-c2-hotspot_servertest,				\
  solaris_x64_5.10-*-c2-hotspot_servertest,				\
  linux_i586_2.6-*-c2-hotspot_servertest,				\
  linux_x64_2.6-*-c2-hotspot_servertest,				\
  macosx_x64_10.7-*-c2-hotspot_servertest,				\
  windows_i586_6.1-*-c2-hotspot_servertest,				\
  windows_x64_6.1-*-c2-hotspot_servertest

my.make.rule.test.targets.hotspot.internalvmtests=			\
  solaris_sparcv9_5.10-fastdebug-c2-hotspot_internalvmtests,		\
  solaris_x64_5.10-fastdebug-c2-hotspot_internalvmtests,		\
  linux_i586_2.6-fastdebug-c2-hotspot_internalvmtests,			\
  linux_x64_2.6-fastdebug-c2-hotspot_internalvmtests,			\
  macosx_x64_10.7-fastdebug-c2-hotspot_internalvmtests,			\
  windows_i586_6.1-fastdebug-c2-hotspot_internalvmtests,		\
  windows_x64_6.1-fastdebug-c2-hotspot_internalvmtests

my.make.rule.test.targets.hotspot.reg.group=				\
  solaris_sparcv9_5.10-{product|fastdebug}-c2-GROUP,            	\
  solaris_x64_5.10-{product|fastdebug}-c2-GROUP,		        \
  linux_i586_2.6-{product|fastdebug}-c2-GROUP,				\
  linux_x64_2.6-{product|fastdebug}-c2-GROUP,				\
  windows_i586_6.1-{product|fastdebug}-c2-GROUP,			\
  windows_x64_6.1-{product|fastdebug}-c2-GROUP,				\
  linux_i586_2.6-{product|fastdebug}-c1-GROUP,				\
  windows_i586_6.1-{product|fastdebug}-c1-GROUP

my.make.rule.test.targets.hotspot=					\
  ${my.make.rule.test.targets.hotspot.clienttests},			\
  ${my.make.rule.test.targets.hotspot.servertests},			\
  ${my.make.rule.test.targets.hotspot.internalvmtests},			\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_wbapitest},	\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_compiler},	\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_gc},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_runtime},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_serviceability},	\
  ${my.additional.make.rule.test.targets.hotspot}
