#
# 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=40
jprt.tools.default.release=jdk8u${my.jdk.update.version}

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