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

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

# 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 up the run flavors (jvm variants)
jprt.run.flavors=c1,c2,default,${my.additional.run.flavors}

# 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
jprt.build.flavor.optimized.target=jprt_bundle
jprt.build.flavor.optimizedOpen.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 --disable-precompiled-headers
jprt.product.build.configure.args=--with-debug-level=release
jprt.optimized.build.configure.args=--with-debug-level=optimized
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
jprt.optimizedOpen.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}}
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-boot-jdk=$ALT_BOOTDIR					\
    --with-jobs=$ALT_PARALLEL_COMPILE_JOBS				\
    --with-version-opt=$JPRT_JOB_ID				 	\
    MAKE=$JPRT_MAKE                                                     \
    ${my.additional.build.configure.args.${jprt.test.set}}		\
    ${my.custom.build.configure.args}

# 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
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}
jprt.linux_i586.build.configure.args=					\
    --with-devkit=$GCC492_OEL64_HOME					\
    ${jprt.i586.build.configure.args}
jprt.linux_x64.build.configure.args=					\
    --with-devkit=$GCC492_OEL64_HOME
jprt.macosx_x64.build.configure.args=					\
    --with-devkit=$XCODE63_MACOSX109_HOME
jprt.windows_i586.build.configure.args=					\
    --with-devkit=$VS2013SP4_HOME					\
    ${jprt.i586.build.configure.args}
jprt.windows_x64.build.configure.args=					\
    --with-devkit=$VS2013SP4_HOME

########
#
# 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_2.6-{product|fastdebug},					\
    linux_x64_2.6-{product|fastdebug},					\
    macosx_x64_10.9-{product|fastdebug},				\
    windows_i586_6.2-{product|fastdebug},				\
    windows_x64_6.2-{product|fastdebug}

# 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_2.6-product-{c1|c2}-TESTNAME,				\
    linux_x64_2.6-product-c2-TESTNAME,					\
    macosx_x64_10.9-product-c2-TESTNAME,				\
    windows_i586_6.2-product-c1-TESTNAME,				\
    windows_x64_6.2-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_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,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_2.6-{product|fastdebug},					\
    linux_x64_2.6-{product|fastdebug},			\
    macosx_x64_10.9-{product|fastdebug},				\
    windows_i586_6.2-{product|fastdebug},				\
    windows_x64_6.2-{product|fastdebug},			\
    solaris_x64_5.11-{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.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_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-runThese8_Xcomp_lang,			\
    linux_i586_2.6-product-c1-runThese8_Xcomp_vm,			\
    linux_i586_2.6-fastdebug-c1-runThese8_Xshare,			\
    linux_i586_2.6-fastdebug-c2-runThese8_Xcomp_lang,			\
    linux_i586_2.6-fastdebug-c2-runThese8_Xcomp_vm,			\
    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_CMS,		\
    linux_i586_2.6-{product|fastdebug}-{c1|c2}-GCBasher_G1

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_CMS,			\
    linux_x64_2.6-{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.2-{product|fastdebug}-{c1|c2}-jvm98,			\
    windows_i586_6.2-{product|fastdebug}-c2-jvm98_nontiered,		\
    windows_i586_6.2-{product|fastdebug}-{c1|c2}-scimark,		\
    windows_i586_6.2-product-{c1|c2}-runThese8,				\
    windows_i586_6.2-product-{c1|c2}-runThese8_Xcomp_lang,		\
    windows_i586_6.2-product-{c1|c2}-runThese8_Xcomp_vm,		\
    windows_i586_6.2-fastdebug-c1-runThese8_Xshare,			\
    windows_i586_6.2-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC,	\
    windows_i586_6.2-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC,	\
    windows_i586_6.2-{product|fastdebug}-{c1|c2}-GCBasher_CMS,		\
    windows_i586_6.2-{product|fastdebug}-{c1|c2}-GCBasher_G1

my.test.targets.hotspot.windows.x64=					\
    windows_x64_6.2-{product|fastdebug}-c2-jvm98,			\
    windows_x64_6.2-{product|fastdebug}-c2-jvm98_nontiered,		\
    windows_x64_6.2-{product|fastdebug}-c2-scimark,			\
    windows_x64_6.2-product-c2-runThese8,				\
    windows_x64_6.2-product-c2-runThese8_Xcomp_lang,			\
    windows_x64_6.2-product-c2-runThese8_Xcomp_vm,			\
    windows_x64_6.2-{product|fastdebug}-c2-GCBasher_SerialGC,		\
    windows_x64_6.2-{product|fastdebug}-c2-GCBasher_ParallelGC,		\
    windows_x64_6.2-{product|fastdebug}-c2-GCBasher_CMS,		\
    windows_x64_6.2-{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_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.basicvmtests=                         \
  linux_i586_2.6-*-default-hotspot_basicvmtest,                         \
  linux_x64_2.6-*-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.2-*-default-hotspot_basicvmtest,                       \
  windows_x64_6.2-*-default-hotspot_basicvmtest
  
my.make.rule.test.targets.hotspot.reg.group=				\
  solaris_sparcv9_5.11-fastdebug-c2-GROUP,				\
  solaris_x64_5.11-fastdebug-c2-GROUP,					\
  linux_i586_2.6-fastdebug-c2-GROUP,					\
  linux_x64_2.6-fastdebug-c2-GROUP,					\
  macosx_x64_10.9-fastdebug-c2-GROUP,					\
  windows_i586_6.2-fastdebug-c2-GROUP,					\
  windows_x64_6.2-fastdebug-c2-GROUP,					\
  linux_i586_2.6-fastdebug-c1-GROUP,					\
  windows_i586_6.2-fastdebug-c1-GROUP

# Hotspot jtreg tests
my.make.rule.test.targets.hotspot.reg=						\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_compiler_1},	\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_compiler_2},	\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_compiler_3},	\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_compiler_closed},	\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_gc},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_gc_closed},       \
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_gc_gcold},        \
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_runtime},		\
  ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_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.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}

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