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