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

# Install test bundle for targets in jprt.test.bundle.targets set
jprt.selective.test.bundle.installation=true

# The current release name
jprt.tools.default.release=jdk9

# Allow concurrent changes to be merged in prior to pushing
jprt.sync.push=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
jprt.build.use.jib=true
jprt.test.use.jib=true
jprt.jib.launcher=common/bin/jib.sh

# Clear out all the build needs as JIB handles this
jprt.jdk9.build.needs=
jprt.macosx.jdk9.build.needs=
jprt.windows_i586.jdk9.build.needs=
jprt.windows_x64.jdk9.build.needs=
jprt.solaris.jdk9.build.needs=
jprt.linux_i586.jdk9.build.needs=
jprt.linux_x64.jdk9.build.needs=
jprt.linux_armv6.jdk9.build.needs=
jprt.linux_armvh.jdk9.build.needs=
jprt.linux_arm64.jdk9.build.needs=
jprt.linux_armsflt.jdk9.build.needs=
jprt.linux_armvfpsflt.jdk9.build.needs=
jprt.linux_armvfphflt.jdk9.build.needs=
jprt.linux_armv6vfphflt.jdk9.build.needs=
jprt.solaris.client.build.needs=
jprt.linux.client.build.needs=
jprt.solaris.jdk9.compiler=
jprt.linux.jdk9.compiler=
jprt.jdk9.test.needs=

# Disable the need for preinstalled Visual Studio and Xcode
jprt.windows.jdk9.compiler=
jprt.windows.6.2.jdk9.compiler=
jprt.windows.6.3.jdk9.compiler=
jprt.windows.jdk9.target.attribute.compilerVS2013.appliesTo.builds=none
jprt.macosx.jdk9.target.attribute.compilerXcode511.appliesTo.builds=none

# Set up the run flavors (jvm variants)
jprt.run.flavors=c1,c2,default,${my.additional.run.flavors}

# Setup jib profiles
jprt.linux_i586.product.build.jib.profile=linux-x86
jprt.linux_x64.product.build.jib.profile=linux-x64
jprt.macosx_x64.product.build.jib.profile=macosx-x64
jprt.solaris_sparcv9.product.build.jib.profile=solaris-sparcv9
jprt.solaris_x64.product.build.jib.profile=solaris-x64
jprt.windows_i586.product.build.jib.profile=windows-x86
jprt.windows_x64.product.build.jib.profile=windows-x64

jprt.linux_i586.fastdebug.build.jib.profile=linux-x86-debug
jprt.linux_x64.fastdebug.build.jib.profile=linux-x64-debug
jprt.macosx_x64.fastdebug.build.jib.profile=macosx-x64-debug
jprt.solaris_sparcv9.fastdebug.build.jib.profile=solaris-sparcv9-debug
jprt.solaris_x64.fastdebug.build.jib.profile=solaris-x64-debug
jprt.windows_i586.fastdebug.build.jib.profile=windows-x86-debug
jprt.windows_x64.fastdebug.build.jib.profile=windows-x64-debug

jprt.linux_i586.slowdebug.build.jib.profile=linux-x86-slowdebug
jprt.linux_x64.slowdebug.build.jib.profile=linux-x64-slowdebug
jprt.macosx_x64.slowdebug.build.jib.profile=macosx-x64-slowdebug
jprt.solaris_sparcv9.slowdebug.build.jib.profile=solaris-sparcv9-slowdebug
jprt.solaris_x64.slowdebug.build.jib.profile=solaris-x64-slowdebug
jprt.windows_i586.slowdebug.build.jib.profile=windows-x86-slowdebug
jprt.windows_x64.slowdebug.build.jib.profile=windows-x64-slowdebug

jprt.linux_i586.productOpen.build.jib.profile=linux-x86-open
jprt.linux_x64.productOpen.build.jib.profile=linux-x64-open
jprt.macosx_x64.productOpen.build.jib.profile=macosx-x64-open
jprt.solaris_sparcv9.productOpen.build.jib.profile=solaris-sparcv9-open
jprt.solaris_x64.productOpen.build.jib.profile=solaris-x64-open
jprt.windows_i586.productOpen.build.jib.profile=windows-x86-open
jprt.windows_x64.productOpen.build.jib.profile=windows-x64-open

jprt.linux_i586.fastdebugOpen.build.jib.profile=linux-x86-open-debug
jprt.linux_x64.fastdebugOpen.build.jib.profile=linux-x64-open-debug
jprt.macosx_x64.fastdebugOpen.build.jib.profile=macosx-x64-open-debug
jprt.solaris_sparcv9.fastdebugOpen.build.jib.profile=solaris-sparcv9-open-debug
jprt.solaris_x64.fastdebugOpen.build.jib.profile=solaris-x64-open-debug
jprt.windows_i586.fastdebugOpen.build.jib.profile=windows-x86-open-debug
jprt.windows_x64.fastdebugOpen.build.jib.profile=windows-x64-open-debug

jprt.test.jib.profile=run-test

# Set make target to use for different build flavors
jprt.build.flavor.fastdebugOpen.target=jprt_bundle
jprt.build.flavor.fastdebug.target=jprt_bundle
jprt.build.flavor.product.target=jprt_bundle
jprt.build.flavor.productOpen.target=jprt_bundle
jprt.build.flavor.optimized.target=jprt_bundle
jprt.build.flavor.optimizedOpen.target=jprt_bundle
jprt.build.flavor.slowdebug.target=jprt_bundle

# Use these configure args to define debug level or provide specific
# configuration details not covered by Jib profiles.
jprt.slowdebug.build.configure.args=
jprt.fastdebug.build.configure.args=--disable-precompiled-headers
# Don't disable precompiled headers on windows. It's simply too slow.
jprt.windows_i586.fastdebug.build.configure.args=
jprt.windows_x64.fastdebug.build.configure.args=
jprt.windows_i586.fastdebugOpen.build.configure.args=
jprt.windows_x64.fastdebugOpen.build.configure.args=
jprt.product.build.configure.args=
jprt.optimized.build.configure.args=--with-debug-level=optimized
jprt.slowdebugOpen.build.configure.args=${jprt.slowdebug.build.configure.args}
jprt.fastdebugOpen.build.configure.args=${jprt.fastdebug.build.configure.args}
jprt.productOpen.build.configure.args=${jprt.product.build.configure.args}
jprt.optimizedOpen.build.configure.args=${jprt.product.build.configure.args}


# hotspot testset has custom build flavors and build targets
my.jprt.testsetHasCustomBuildFlavors.hotspot=true
my.jprt.testsetHasCustomBuildTargets.hotspot=true
my.jprt.testsetHasCustomBuildFlavors.buildinfra=true
my.jprt.testsetHasCustomBuildTargets.buildinfra=true

# determine if the specified testset has custom build flavors or build targets
my.jprt.testsetHasCustomBuildFlavors=${my.jprt.testsetHasCustomBuildFlavors.${jprt.test.set}}
my.jprt.testsetHasCustomBuildTargets=${my.jprt.testsetHasCustomBuildTargets.${jprt.test.set}}

# Select build flavors and build targets based on the specified testset
jprt.build.flavors=${my.jprt.testsetHasCustomBuildFlavors ? \
    ${my.build.flavors.${jprt.test.set}} : ${my.build.flavors.default}}
jprt.build.targets=${my.jprt.testsetHasCustomBuildTargets ? \
    ${my.build.targets.${jprt.test.set}} : ${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}}
jprt.test.bundle.targets=${my.jprt.test.bundle.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-output-sync=recurse						\
    --with-jobs=$ALT_PARALLEL_COMPILE_JOBS				\
    --with-version-opt=$JPRT_JOB_ID				 	\
    ${my.additional.build.configure.args.${jprt.test.set}}		\
    ${my.custom.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.11-{product|fastdebug}, \
    solaris_x64_5.11-{product|fastdebug}, \
    linux_i586_3.8-{product|fastdebug}, \
    linux_x64_3.8-{product|fastdebug}, \
    macosx_x64_10.9-{product|fastdebug}, \
    windows_i586_6.3-{product|fastdebug}, \
    windows_x64_6.3-{product|fastdebug}, \
    ${my.additional.build.targets.default}

# Test target list (no fastdebug & limited c2 testing)
my.test.target.set=							\
    solaris_sparcv9_5.11-product-c2-TESTNAME,				\
    solaris_x64_5.11-product-c2-TESTNAME,				\
    linux_i586_3.8-product-{c1|c2}-TESTNAME,				\
    linux_x64_3.8-product-c2-TESTNAME,					\
    macosx_x64_10.9-product-c2-TESTNAME,				\
    windows_i586_6.3-product-c1-TESTNAME,				\
    windows_x64_6.3-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=svc_tools},                           \
    ${my.make.rule.test.targets.svc.extra}

# JAXP vm test targets (testset=jaxp)
my.test.targets.jaxp=

# JAXP test targets (testset=jaxp)
my.make.rule.test.targets.jaxp=						\
    ${my.test.target.set:TESTNAME=jaxp_all}

# 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_beans},				\
    ${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}                                    \
    ${my.make.rule.test.targets.jaxp}

# JCK test targets in test/Makefile (no windows)
my.test.target.set.jck=							\
    solaris_sparcv9_5.11-product-c2-JCK7TESTRULE,			\
    solaris_x64_5.11-product-c2-JCK7TESTRULE,				\
    linux_i586_3.8-product-c1-JCK7TESTRULE,				\
    linux_x64_3.8-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=						\
    fastdebugOpen,fastdebug,product,productOpen,optimized,optimizedOpen \
    ${my.additional.build.flavors.hotspot}

# Platforms built for hotspot push jobs
my.build.targets.hotspot=						\
    solaris_sparcv9_5.11-{product|fastdebug},				\
    solaris_x64_5.11-{product|fastdebug},				\
    linux_i586_3.8-{product|fastdebug},					\
    linux_x64_3.8-{product|fastdebug},					\
    macosx_x64_10.9-{product|fastdebug},				\
    windows_i586_6.3-{product|fastdebug},				\
    windows_x64_6.3-{product|fastdebug},				\
    solaris_x64_5.11-{fastdebugOpen},					\
    linux_x64_3.8-{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.11-{product|fastdebug}-c2-jvm98,			\
    solaris_sparcv9_5.11-{product|fastdebug}-c2-jvm98_nontiered,	\
    solaris_sparcv9_5.11-{product|fastdebug}-c2-scimark,		\
    solaris_sparcv9_5.11-product-c2-runThese8,				\
    solaris_sparcv9_5.11-{product|fastdebug}-c2-GCBasher_SerialGC,	\
    solaris_sparcv9_5.11-{product|fastdebug}-c2-GCBasher_ParallelGC,	\
    solaris_sparcv9_5.11-{product|fastdebug}-c2-GCBasher_CMS,		\
    solaris_sparcv9_5.11-{product|fastdebug}-c2-GCBasher_G1

my.test.targets.hotspot.solaris.x64=					\
    solaris_x64_5.11-{product|fastdebug}-c2-jvm98,			\
    solaris_x64_5.11-{product|fastdebug}-c2-jvm98_nontiered,		\
    solaris_x64_5.11-{product|fastdebug}-c2-scimark,			\
    solaris_x64_5.11-product-c2-runThese8,				\
    solaris_x64_5.11-product-c2-runThese8_Xcomp_lang,			\
    solaris_x64_5.11-product-c2-runThese8_Xcomp_vm,			\
    solaris_x64_5.11-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    solaris_x64_5.11-{product|fastdebug}-c2-GCBasher_ParallelGC,	\
    solaris_x64_5.11-{product|fastdebug}-c2-GCBasher_CMS,		\
    solaris_x64_5.11-{product|fastdebug}-c2-GCBasher_G1

my.test.targets.hotspot.linux.i586=					\
    linux_i586_3.8-{product|fastdebug}-c2-jvm98,			\
    linux_i586_3.8-{product|fastdebug}-c2-jvm98_nontiered,		\
    linux_i586_3.8-{product|fastdebug}-c2-scimark,			\
    linux_i586_3.8-fastdebug-c2-runThese8_Xcomp_lang,			\
    linux_i586_3.8-fastdebug-c2-runThese8_Xcomp_vm,			\
    linux_i586_3.8-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    linux_i586_3.8-{product|fastdebug}-c2-GCBasher_ParallelGC,		\
    linux_i586_3.8-{product|fastdebug}-c2-GCBasher_CMS,			\
    linux_i586_3.8-{product|fastdebug}-c2-GCBasher_G1

my.test.targets.hotspot.linux.x64=					\
    linux_x64_3.8-{product|fastdebug}-c2-jvm98,				\
    linux_x64_3.8-{product|fastdebug}-c2-jvm98_nontiered,		\
    linux_x64_3.8-{product|fastdebug}-c2-scimark,			\
    linux_x64_3.8-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    linux_x64_3.8-{product|fastdebug}-c2-GCBasher_ParallelGC,		\
    linux_x64_3.8-{product|fastdebug}-c2-GCBasher_CMS,			\
    linux_x64_3.8-{product|fastdebug}-c2-GCBasher_G1

my.test.targets.hotspot.macosx.x64=					\
    macosx_x64_10.9-{product|fastdebug}-c2-jvm98,			\
    macosx_x64_10.9-{product|fastdebug}-c2-jvm98_nontiered,		\
    macosx_x64_10.9-{product|fastdebug}-c2-scimark,			\
    macosx_x64_10.9-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    macosx_x64_10.9-{product|fastdebug}-c2-GCBasher_ParallelGC,		\
    macosx_x64_10.9-{product|fastdebug}-c2-GCBasher_CMS,		\
    macosx_x64_10.9-{product|fastdebug}-c2-GCBasher_G1

my.test.targets.hotspot.windows.i586=					\
    windows_i586_6.3-{product|fastdebug}-c2-jvm98,			\
    windows_i586_6.3-{product|fastdebug}-c2-jvm98_nontiered,		\
    windows_i586_6.3-{product|fastdebug}-c2-scimark,			\
    windows_i586_6.3-product-c2-runThese8,				\
    windows_i586_6.3-product-c2-runThese8_Xcomp_lang,			\
    windows_i586_6.3-product-c2-runThese8_Xcomp_vm,			\
    windows_i586_6.3-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    windows_i586_6.3-{product|fastdebug}-c2-GCBasher_ParallelGC,	\
    windows_i586_6.3-{product|fastdebug}-c2-GCBasher_CMS,		\
    windows_i586_6.3-{product|fastdebug}-c2-GCBasher_G1

my.test.targets.hotspot.windows.x64=					\
    windows_x64_6.3-{product|fastdebug}-c2-jvm98,			\
    windows_x64_6.3-{product|fastdebug}-c2-jvm98_nontiered,		\
    windows_x64_6.3-{product|fastdebug}-c2-scimark,			\
    windows_x64_6.3-product-c2-runThese8,				\
    windows_x64_6.3-product-c2-runThese8_Xcomp_lang,			\
    windows_x64_6.3-product-c2-runThese8_Xcomp_vm,			\
    windows_x64_6.3-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    windows_x64_6.3-{product|fastdebug}-c2-GCBasher_ParallelGC,		\
    windows_x64_6.3-{product|fastdebug}-c2-GCBasher_CMS,		\
    windows_x64_6.3-{product|fastdebug}-c2-GCBasher_G1

# Some basic "smoke" tests for OpenJDK builds
my.test.targets.hotspot.open=						\
    solaris_x64_5.11-{productOpen|fastdebugOpen}-c2-jvm98,		\
    linux_x64_3.8-{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.basicvmtests=                         \
  linux_i586_3.8-*-default-hotspot_basicvmtest,                         \
  linux_x64_3.8-*-default-hotspot_basicvmtest,                          \
  macosx_x64_10.9-*-default-hotspot_basicvmtest,                        \
  solaris_sparcv9_5.11-*-default-hotspot_basicvmtest,                   \
  solaris_x64_5.11-*-default-hotspot_basicvmtest,                       \
  windows_i586_6.3-*-default-hotspot_basicvmtest,                       \
  windows_x64_6.3-*-default-hotspot_basicvmtest

my.make.rule.test.targets.hotspot.gtest= \
  linux_i586_3.8-*-default-hotspot_gtest, \
  linux_x64_3.8-*-default-hotspot_gtest, \
  macosx_x64_10.9-*-default-hotspot_gtest, \
  solaris_sparcv9_5.11-*-default-hotspot_gtest, \
  solaris_x64_5.11-*-default-hotspot_gtest, \
  windows_i586_6.3-*-default-hotspot_gtest, \
  windows_x64_6.3-*-default-hotspot_gtest, \
  ${my.additional.make.rule.test.targets.hotspot.gtest}

my.make.rule.test.targets.hotspot.reg.group=				\
  solaris_sparcv9_5.11-fastdebug-c2-GROUP,				\
  solaris_x64_5.11-fastdebug-c2-GROUP,					\
  linux_i586_3.8-fastdebug-c2-GROUP,					\
  linux_x64_3.8-fastdebug-c2-GROUP,					\
  macosx_x64_10.9-fastdebug-c2-GROUP,					\
  windows_i586_6.3-fastdebug-c2-GROUP,					\
  windows_x64_6.3-fastdebug-c2-GROUP

# Hotspot jtreg tests
my.make.rule.test.targets.hotspot.reg=							\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_compiler_1},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_compiler_2},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_compiler_3},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_compiler_closed},	\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_gc_1},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_gc_2},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_gc_closed},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_gc_gcold},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_runtime},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_serviceability},	\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=jdk_svc_sanity},			\
  ${my.additional.make.rule.test.targets.hotspot.reg}

# Other Makefile based Hotspot tests
my.make.rule.test.targets.hotspot.other=                                \
  ${my.make.rule.test.targets.hotspot.basicvmtests},                    \
  ${my.make.rule.test.targets.hotspot.gtest},                           \
  ${my.additional.make.rule.test.targets.hotspot.other}

# All the makefile based tests to run
my.make.rule.test.targets.hotspot=                                      \
  ${my.make.rule.test.targets.hotspot.reg}                              \
  ${my.make.rule.test.targets.hotspot.other}

# Install the test bundle for the testset hotspot jtreg tests
# (but not for the other Makefile based tests)
my.jprt.test.bundle.targets.hotspot= \
  ${my.make.rule.test.targets.hotspot.reg}, \
  ${my.make.rule.test.targets.hotspot.gtest}

# 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}

# Install the test bundle for the nativesanity jtreg tests
my.jprt.test.bundle.targets.nativesanity=${my.make.rule.test.targets.nativesanity}

################################################################################
# Testset buildinfra
my.build.flavors.buildinfra = \
    product,fastdebug,slowdebug, \
    ${my.additional.build.flavors.buildinfra}

# Platforms built for hotspot push jobs
my.build.targets.buildinfra = \
    solaris_sparcv9_5.11-{product|fastdebug|slowdebug}, \
    solaris_x64_5.11-{product|fastdebug|slowdebug}, \
    linux_i586_3.8-{product|fastdebug|slowdebug}, \
    linux_x64_3.8-{product|fastdebug|slowdebug}, \
    macosx_x64_10.9-{product|fastdebug|slowdebug}, \
    windows_i586_6.3-{product|fastdebug|slowdebug}, \
    windows_x64_6.3-{product|fastdebug|slowdebug}, \
    ${my.additional.build.targets.buildinfra}

my.test.targets.buildinfra = \
    ${my.test.targets.default}, \
    ${my.test.targets.hotspot}

my.make.rule.test.targets.buildinfra = \
    ${my.make.rule.test.targets.default}, \
    ${my.make.rule.test.targets.hotspot}
