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

##############################################################################
#
# Build properties for defining the JavaFX version number
#
##############################################################################

# NOTE: It is no longer necessary to modify this file to switch the
# milestone to fcs.
#
# By default the milestone is set to early access (ea) for all builds. It
# is overridden by the RE build script, which passes "-PMILESTONE_FCS=true"
# to gradle when the BUILD_MILESTONE env variable is set to "fcs". This
# will cause the milestone to become "fcs" and the suffix to become blank.
jfx.release.milestone=ea
jfx.release.suffix=-ea

# UPDATE THE FOLLOWING VALUES FOR A NEW RELEASE
jfx.release.name=8u172
jfx.release.major.version=8
jfx.release.minor.version=0
jfx.release.micro.version=172

##############################################################################
#
# Build properties for generating javadoc
#
##############################################################################

javadoc.bottom=<font size="-1"><a href="http://bugreport.java.com/bugreport/" target="_blank">Submit a bug or feature</a><br>For further API reference and developer documentation, see <a href="https://docs.oracle.com/javase/8/docs/index.html" target="_blank">Java SE Documentation</a>. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.<br> <a href="https://docs.oracle.com/javase/8/docs/legal/cpyr.html" target="_blank">Copyright</a> &copy; 2008, 2017, Oracle and/or its affiliates. All rights reserved. Use is subject to <a href="http://download.oracle.com/otndocs/jcp/java_se-8-mrel-spec/license.html" target="_blank">license terms</a>. Also see the <a target="_blank" href="http://www.oracle.com/technetwork/java/redist-137594.html" target="_blank">documentation redistribution policy</a>.</font>

javadoc.title=JavaFX 8
javadoc.header=JavaFX&nbsp;8

##############################################################################
#
# Build properties for defining the version of JDK used to build FX
#
# jfx.build.jdk.buildnum should be set to the JDK build number used to
# compile FX. This variable is read by the Hudson build scripts to
# select the JDK.
#
# jfx.build.jdk.buildnum.min should be set to the lowest version that
# supports building FX (which must be <= jfx.build.jdk.buildnum)
#
##############################################################################

jfx.build.jdk.version=1.8.0_40
jfx.build.jdk.buildnum=27
jfx.build.jdk.buildnum.min=26
