changeset 2816:e578a44a664d

Merge
author prr
date Fri, 23 Jun 2017 09:53:43 -0700
parents 0ab1563646b3 d67a3f1f057f
children 3c6d0016ac56
files make/CompileJavaModules.gmk
diffstat 14 files changed, 376 insertions(+), 75 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Fri Jun 02 14:46:29 2017 -0700
+++ b/.hgtags	Fri Jun 23 09:53:43 2017 -0700
@@ -425,3 +425,8 @@
 b94be69cbb1d2943b886bf2d458745756df146e4 jdk-10+9
 4c12464a907db4656c1033f56fa49cba643ac629 jdk-9+171
 6558c37afe832582238d338578d598f30c6fdd75 jdk-10+10
+2c25fc24103251f9711a1c280c31e1e41016d90f jdk-9+172
+6b750cdb823a029a25ff2e560302cc2d28a86cb6 jdk-10+11
+88d7fd969e7df0e07a53b201cfd29393ca33ede9 jdk-9+173
+5466f409346e0446ee9a6daeb7f5d75c8fc76823 jdk-9+174
+8d4ed1e06fe184c9cb08c5b708e7d6f5c066644f jdk-10+12
--- a/common/autoconf/generated-configure.sh	Fri Jun 02 14:46:29 2017 -0700
+++ b/common/autoconf/generated-configure.sh	Fri Jun 23 09:53:43 2017 -0700
@@ -688,6 +688,7 @@
 LIBFFI_CFLAGS
 ALSA_LIBS
 ALSA_CFLAGS
+FREETYPE_LICENSE
 FREETYPE_BUNDLE_LIB_PATH
 FREETYPE_LIBS
 FREETYPE_CFLAGS
@@ -1200,6 +1201,7 @@
 with_freetype_lib
 with_freetype_src
 enable_freetype_bundling
+with_freetype_license
 with_alsa
 with_alsa_include
 with_alsa_lib
@@ -2153,6 +2155,7 @@
   --with-freetype-src     specify directory with freetype sources to
                           automatically build the library (experimental,
                           Windows-only)
+  --with-freetype-license if bundling freetype, also bundle this license file
   --with-alsa             specify prefix directory for the alsa package
                           (expecting the libraries under PATH/lib and the
                           headers under PATH/include)
@@ -5186,7 +5189,7 @@
 #CUSTOM_AUTOCONF_INCLUDE
 
 # Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1494858828
+DATE_WHEN_GENERATED=1496926402
 
 ###############################################################################
 #
@@ -57906,6 +57909,12 @@
 fi
 
 
+# Check whether --with-freetype-license was given.
+if test "${with_freetype_license+set}" = set; then :
+  withval=$with_freetype_license;
+fi
+
+
   # Need to specify explicitly since it needs to be overridden on some versions of macosx
   FREETYPE_BASE_NAME=freetype
   FREETYPE_CFLAGS=
@@ -63852,6 +63861,153 @@
 
   fi # end freetype needed
 
+  FREETYPE_LICENSE=""
+  if test "x$with_freetype_license" = "xyes"; then
+    as_fn_error $? "--with-freetype-license must have a value" "$LINENO" 5
+  elif test "x$with_freetype_license" != "x"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype license" >&5
+$as_echo_n "checking for freetype license... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_freetype_license" >&5
+$as_echo "$with_freetype_license" >&6; }
+    FREETYPE_LICENSE="$with_freetype_license"
+
+  # Only process if variable expands to non-empty
+
+  if test "x$FREETYPE_LICENSE" != x; then
+    if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$FREETYPE_LICENSE"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of FREETYPE_LICENSE" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-style (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    FREETYPE_LICENSE="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&6;}
+  fi
+
+    elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$FREETYPE_LICENSE"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    FREETYPE_LICENSE="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+    else
+      # We're on a unix platform. Hooray! :)
+      path="$FREETYPE_LICENSE"
+      has_space=`$ECHO "$path" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&6;}
+        as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+      fi
+
+      # Use eval to expand a potential ~
+      eval path="$path"
+      if test ! -f "$path" && test ! -d "$path"; then
+        as_fn_error $? "The path of FREETYPE_LICENSE, which resolves as \"$path\", is not found." "$LINENO" 5
+      fi
+
+      if test -d "$path"; then
+        FREETYPE_LICENSE="`cd "$path"; $THEPWDCMD -L`"
+      else
+        dir="`$DIRNAME "$path"`"
+        base="`$BASENAME "$path"`"
+        FREETYPE_LICENSE="`cd "$dir"; $THEPWDCMD -L`/$base"
+      fi
+    fi
+  fi
+
+    if test ! -f "$FREETYPE_LICENSE"; then
+      as_fn_error $? "$FREETYPE_LICENSE cannot be found" "$LINENO" 5
+    fi
+  fi
+
+
 
 
 
--- a/common/autoconf/lib-freetype.m4	Fri Jun 02 14:46:29 2017 -0700
+++ b/common/autoconf/lib-freetype.m4	Fri Jun 23 09:53:43 2017 -0700
@@ -194,6 +194,8 @@
       [specify directory with freetype sources to automatically build the library (experimental, Windows-only)])])
   AC_ARG_ENABLE(freetype-bundling, [AS_HELP_STRING([--disable-freetype-bundling],
       [disable bundling of the freetype library with the build result @<:@enabled on Windows or when using --with-freetype, disabled otherwise@:>@])])
+  AC_ARG_WITH(freetype-license, [AS_HELP_STRING([--with-freetype-license],
+      [if bundling freetype, also bundle this license file])])
 
   # Need to specify explicitly since it needs to be overridden on some versions of macosx
   FREETYPE_BASE_NAME=freetype
@@ -443,7 +445,21 @@
 
   fi # end freetype needed
 
+  FREETYPE_LICENSE=""
+  if test "x$with_freetype_license" = "xyes"; then
+    AC_MSG_ERROR([--with-freetype-license must have a value])
+  elif test "x$with_freetype_license" != "x"; then
+    AC_MSG_CHECKING([for freetype license])
+    AC_MSG_RESULT([$with_freetype_license])
+    FREETYPE_LICENSE="$with_freetype_license"
+    BASIC_FIXUP_PATH(FREETYPE_LICENSE)
+    if test ! -f "$FREETYPE_LICENSE"; then
+      AC_MSG_ERROR([$FREETYPE_LICENSE cannot be found])
+    fi
+  fi
+
   AC_SUBST(FREETYPE_BUNDLE_LIB_PATH)
   AC_SUBST(FREETYPE_CFLAGS)
   AC_SUBST(FREETYPE_LIBS)
+  AC_SUBST(FREETYPE_LICENSE)
 ])
--- a/common/autoconf/spec.gmk.in	Fri Jun 02 14:46:29 2017 -0700
+++ b/common/autoconf/spec.gmk.in	Fri Jun 23 09:53:43 2017 -0700
@@ -312,6 +312,7 @@
 FREETYPE_LIBS:=@FREETYPE_LIBS@
 FREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
 FREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
+FREETYPE_LICENSE=@FREETYPE_LICENSE@
 CUPS_CFLAGS:=@CUPS_CFLAGS@
 ALSA_LIBS:=@ALSA_LIBS@
 ALSA_CFLAGS:=@ALSA_CFLAGS@
--- a/common/conf/jib-profiles.js	Fri Jun 02 14:46:29 2017 -0700
+++ b/common/conf/jib-profiles.js	Fri Jun 23 09:53:43 2017 -0700
@@ -387,7 +387,7 @@
     // on such hardware.
     if (input.build_cpu == "sparcv9") {
        var cpu_brand = $EXEC("bash -c \"kstat -m cpu_info | grep brand | head -n1 | awk '{ print \$2 }'\"");
-       if (cpu_brand.trim().match('SPARC-.7')) {
+       if (cpu_brand.trim().match('SPARC-.[78]')) {
            boot_jdk_revision = "8u20";
            boot_jdk_subdirpart = "1.8.0_20";
        }
@@ -893,6 +893,16 @@
             }
         });
 
+    // The windows ri profile needs to add the freetype license file
+    profilesRiFreetype = {
+        "windows-x86-ri": {
+            configure_args: "--with-freetype-license="
+                + input.get("freetype", "install_path")
+                + "/freetype-2.7.1-v120-x86/freetype.md"
+        }
+    };
+    profiles = concatObjects(profiles, profilesRiFreetype);
+
     // Generate the missing platform attributes
     profiles = generatePlatformAttributes(profiles);
     profiles = generateDefaultMakeTargetsConfigureArg(common, profiles);
--- a/make/CompileJavaModules.gmk	Fri Jun 02 14:46:29 2017 -0700
+++ b/make/CompileJavaModules.gmk	Fri Jun 23 09:53:43 2017 -0700
@@ -42,8 +42,7 @@
 
 ################################################################################
 
-java.base_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*' -XDstringConcat=inline \
-    --doclint-format html4
+java.base_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*' -XDstringConcat=inline
 java.base_COPY := .icu .dat .spp content-types.properties hijrah-config-islamic-umalqura.properties
 java.base_CLEAN := intrinsic.properties
 
--- a/make/CreateJmods.gmk	Fri Jun 02 14:46:29 2017 -0700
+++ b/make/CreateJmods.gmk	Fri Jun 23 09:53:43 2017 -0700
@@ -81,6 +81,7 @@
 
 LEGAL_NOTICES := \
     $(SUPPORT_OUTPUTDIR)/modules_legal/java.base \
+    $(wildcard $(SUPPORT_OUTPUTDIR)/modules_legal/$(MODULE)) \
     $(call FindModuleLegalDirs, $(MODULE)) \
     #
 
--- a/make/Docs.gmk	Fri Jun 02 14:46:29 2017 -0700
+++ b/make/Docs.gmk	Fri Jun 23 09:53:43 2017 -0700
@@ -36,11 +36,23 @@
 $(eval $(call ReadImportMetaData))
 
 ################################################################################
-
 # Hook to include the corresponding custom file, if present.
 $(eval $(call IncludeCustomExtension, , Docs.gmk))
 
 ################################################################################
+# This file generates all documentation for OpenJDK.
+#
+# We will generate API documentation for two different selections of the source
+# code: "Java SE", which contains just the modules covered by the top-level
+# module java.se.ee, and "JDK", which covers all of Java SE and also all
+# other available modules that should be documented, including imported modules,
+# if any.
+#
+# We will also generate separate, free-standing specifications from either
+# markdown or existing html files.
+#
+
+################################################################################
 # Javadoc settings
 
 # On top of the sources that was used to compile the JDK, we need some
@@ -106,6 +118,8 @@
 FULL_COMPANY_NAME := Oracle and/or its affiliates
 COMPANY_ADDRESS := 500 Oracle Parkway<br>Redwood Shores, CA 94065 USA
 
+JAVA_PLATFORM := Java&trade; Platform
+
 ifeq ($(IS_DRAFT), true)
   DRAFT_MARKER_STR := <br><strong>DRAFT $(VERSION_STRING)</strong>
   ifeq ($(VERSION_BUILD), 0)
@@ -113,15 +127,12 @@
   else
     DRAFT_MARKER_TITLE := [build $(VERSION_BUILD)]
   endif
+  DRAFT_TEXT := Please note that the specifications and other information \
+      contained herein are not final and are subject to change. The \
+      information is being made available to you solely for purpose of \
+      evaluation.
 endif
 
-JAVADOC_WINDOW_TITLE := Java Platform SE $(VERSION_SPECIFICATION) \
-    $(DRAFT_MARKER_TITLE)
-
-JAVADOC_HEADER_TITLE := $(subst $(SPACE),&nbsp;,$(strip \
-    <strong>Java&trade; Platform<br>Standard Ed. \
-    $(VERSION_SPECIFICATION)</strong>$(DRAFT_MARKER_STR)))
-
 JAVADOC_BOTTOM := \
     <span style="font-size:smaller"> \
     <a href="$(BUG_SUBMIT_URL)">Submit a bug or feature</a><br> \
@@ -143,27 +154,24 @@
     <div style="background-color: $(HASH)EEEEEE"><div style="padding: 6px; \
     margin-top: 2px; margin-bottom: 6px; margin-left: 6px; margin-right: \
     6px; text-align: justify; font-size: 80%; font-family: Helvetica, Arial, \
-    sans-serif; font-weight: normal;">Please note that the specifications \
-    and other information contained herein are not final and are subject to \
-    change. The information is being made available to you solely for \
-    purpose of evaluation.</div></div>
+    sans-serif; font-weight: normal;">$(DRAFT_TEXT)</div></div>
 
 ################################################################################
 # JDK javadoc titles/text snippets
 
-JDK_JAVADOC_DOC_TITLE := Java&trade; Platform, Standard Edition Development Kit \
-    (JDK&trade;) $(VERSION_SPECIFICATION)<br>API Specification
+JDK_SHORT_NAME := JDK&trade; $(VERSION_SPECIFICATION)
+JDK_LONG_NAME := Standard Edition Development Kit (JDK&trade;) $(VERSION_SPECIFICATION)
 
 ################################################################################
 # Java SE javadoc titles/text snippets
 
-JAVASE_JAVADOC_DOC_TITLE := Java&trade; Platform, Standard Edition \
-    $(VERSION_SPECIFICATION)<br>API Specification
+JAVASE_SHORT_NAME := SE $(VERSION_SPECIFICATION)
+JAVASE_LONG_NAME := Standard Edition $(VERSION_SPECIFICATION)
 
 ################################################################################
+# Index page text titles/snippets
 
-JDK_INDEX_TITLE := Java&trade; Platform, Standard Edition Development Kit \
-    (JDK&trade;) $(VERSION_SPECIFICATION) Specification<br>$(DRAFT_MARKER_TITLE)
+JDK_INDEX_TITLE := $(JAVA_PLATFORM), $(JDK_LONG_NAME) Specification $(DRAFT_MARKER_TITLE)
 
 ################################################################################
 # Functions
@@ -187,9 +195,53 @@
   $1_MODULEGRAPH_TARGETS += $$($1_$2_PNG_TARGET)
 endef
 
+# Helper function to create the overview.html file to use with the -overview
+# javadoc option.
+# Returns the filename as $1_OVERVIEW.
+#
+# param 1: SetupJavadocGeneration namespace ($1)
+define create_overview_file
+  $1_OVERVIEW_TEXT := \
+      <!DOCTYPE html> \
+      <html><head></head><body> \
+      <p>This document is the API specification for $$($1_FULL_NAME).</p> \
+      #
+  ifneq ($$($1_GROUPS),)
+    $1_OVERVIEW_TEXT += \
+        <p>For an overview of the full specification, grouped by usage, see the <a href="../index.html">$$(JAVA_PLATFORM), $$($1_LONG_NAME) Specification</a>.</p> \
+        <dl> \
+        #
+    $1_OVERVIEW_TEXT += $$(foreach g, $$($1_GROUPS), \
+        <dt><a href="\#$$g">$$($$g_GROUP_NAME)</a></dt> \
+        <dd>$$($$g_GROUP_DESCRIPTION)</dt> \
+    )
+    $1_OVERVIEW_TEXT += \
+        </dl> \
+        #
+  endif
+  ifeq ($$(IS_DRAFT), true)
+    $1_OVERVIEW_TEXT += \
+        <p><strong>$$(DRAFT_TEXT)</strong></p> \
+        #
+  endif
+  $1_OVERVIEW_TEXT += \
+      </body></html> \
+      #
+
+  $1_OVERVIEW := $$(SUPPORT_OUTPUTDIR)/docs/$1-overview.html
+
+  $1_OVERVIEW_VARDEPS_FILE := $$(call DependOnVariable, $1_OVERVIEW_TEXT, \
+      $$($1_OVERVIEW).vardeps)
+
+  $$($1_OVERVIEW): $$($1_OVERVIEW_VARDEPS_FILE)
+	$$(call LogInfo, Creating overview.html for $1)
+	$$(call MakeDir, $$(@D))
+	$$(PRINTF) > $$@ '$$($1_OVERVIEW_TEXT)'
+endef
+
 ################################################################################
-# Setup make rules for creating the API documentation, using javadoc and other
-# tools if needed.
+# Setup make rules to create an API documentation collection, using javadoc and
+# other tools if needed.
 #
 # Parameter 1 is the name of the rule. This name is used as variable prefix.
 # Targets generated are returned as $1_JAVADOC_TARGETS and
@@ -198,14 +250,10 @@
 #
 # Remaining parameters are named arguments. These include:
 #   MODULES - Modules to generate javadoc for
-#   NAME - The name of the javadoc compilation, to be presented to the user
+#   GROUPS - Name of the groups to divide the modules into, if any
+#   SHORT_NAME - The short name of this documentation collection
+#   LONG_NAME - The long name of this documentation collection
 #   TARGET_DIR - Where to store the output
-#   OVERVIEW - Path to an html overview file
-#   DOC_TITLE - Title to use in -doctitle.
-#   WINDOW_TITLE - Title to use in -windowtitle.
-#   HEADER_TITLE - Title to use in -header.
-#   BOTTOM_TEXT - Text to use in -bottom.
-#   TOP_TEXT - Text to use in -top.
 #
 SetupApiDocsGeneration = $(NamedParamsMacroTemplate)
 define SetupApiDocsGenerationBody
@@ -224,7 +272,6 @@
   # Always include tags and basic options
   $1_OPTIONS := $$(JAVADOC_TAGS) $$(JAVADOC_OPTIONS)
 
-  $1_OPTIONS += -overview $$($1_OVERVIEW)
   $1_OPTIONS += --module-source-path $$(MODULES_SOURCE_PATH)
   $1_OPTIONS += --module $$(call CommaList, $$($1_MODULES))
 
@@ -232,12 +279,20 @@
   $1_OPTIONS += -Xdoclint:all,$$(call CommaList, $$(addprefix -, \
       $$(JAVADOC_DISABLED_DOCLINT)))
 
+  $1_FULL_NAME := $$(JAVA_PLATFORM), $$($1_LONG_NAME) \
+      $$(DRAFT_MARKER_TITLE)
+  $1_DOC_TITLE := $$($1_FULL_NAME)<br>API Specification
+  $1_WINDOW_TITLE := $$(subst &trade;,,$$(JAVA_PLATFORM) $$($1_SHORT_NAME)) \
+    $$(DRAFT_MARKER_TITLE)
+  $1_HEADER_TITLE := <strong>$$(JAVA_PLATFORM)<br>$$($1_SHORT_NAME)</strong> \
+      $$(DRAFT_MARKER_STR)
+
   $1_OPTIONS += -doctitle '$$($1_DOC_TITLE)'
   $1_OPTIONS += -windowtitle '$$($1_WINDOW_TITLE)'
   $1_OPTIONS += -header '$$($1_HEADER_TITLE)'
-  $1_OPTIONS += -bottom '$$($1_BOTTOM_TEXT)'
+  $1_OPTIONS += -bottom '$$(JAVADOC_BOTTOM)'
   ifeq ($$(IS_DRAFT), true)
-    $1_OPTIONS += -top '$$($1_TOP_TEXT)'
+    $1_OPTIONS += -top '$$(JAVADOC_TOP)'
   endif
 
   # Do not store debug level options in VARDEPS.
@@ -247,6 +302,15 @@
     $1_LOG_OPTION += -verbose
   endif
 
+  # Generate the overview.html file. This will return the filename in
+  # $1_OVERVIEW.
+  $$(eval $$(call create_overview_file,$1))
+  $1_OPTIONS += -overview $$($1_OVERVIEW)
+
+  $$(foreach g, $$($1_GROUPS), \
+    $$(eval $1_OPTIONS += -group "$$($$g_GROUP_NAME)" "$$($$g_GROUP_MODULES)") \
+  )
+
   $1_VARDEPS := $$($1_JAVA_ARGS) $$($1_OPTIONS) $$(MODULES_SOURCE_PATH) \
       $$($1_ALL_MODULES)
   $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
@@ -259,7 +323,7 @@
   # Javadoc creates a lot of files but use index.html as a marker
   $$($1_TARGET_DIR)/index.html: $$(BUILD_TOOLS_JDK) $$($1_VARDEPS_FILE) \
       $$($1_SOURCE_DEPS) $$($1_OVERVIEW)
-	$$(call LogWarn, Generating $$($1_NAME) API javadoc for \
+	$$(call LogWarn, Generating $1 javadoc for \
 	    $$(words $$($1_ALL_MODULES)) modules)
 	$$(call LogInfo, Javadoc modules: $$($1_ALL_MODULES))
 	$$(call MakeDir, $$($1_TARGET_DIR))
@@ -291,7 +355,7 @@
     $1_GENGRAPHS_MARKER := $$($1_GENGRAPHS_DIR)/_gengraphs_run.marker
 
     $$($1_GENGRAPHS_MARKER): $$(BUILD_JIGSAW_TOOLS) $$(GENGRAPHS_PROPS)
-	$$(call LogInfo, Running gengraphs for $$($1_NAME) API documentation)
+	$$(call LogInfo, Running gengraphs for $1 documentation)
 	$$(call MakeDir, $$($1_GENGRAPHS_DIR))
 	$$(call ExecuteWithLog, $$($1_GENGRAPHS_DIR)/gengraphs, \
 	    $$(TOOL_GENGRAPHS) --spec --output $$($1_GENGRAPHS_DIR) \
@@ -310,21 +374,49 @@
 ################################################################################
 # Setup generation of the JDK API documentation (javadoc + modulegraph)
 
+# Define the groups of the JDK API documentation
+JavaSE_GROUP_NAME := Java SE
+JavaSE_GROUP_MODULES := $(call ColonList, $(sort java.se.ee \
+    $(call FindTransitiveIndirectDepsForModules, java.se.ee)))
+JavaSE_GROUP_DESCRIPTION := \
+    The Java Platform, Standard Edition ("Java SE") APIs define the core Java \
+    platform for general-purpose computing. These APIs are in modules with \
+    names starting with the string "java.". \
+    #
+JDK_GROUPS += JavaSE
+
+JDK_GROUP_NAME := JDK
+JDK_GROUP_MODULES := jdk.*
+JDK_GROUP_DESCRIPTION := \
+    The Java Development Kit ("JDK") APIs define an implementation of the Java \
+    SE Platform which may include platform-specific details. These APIs are in \
+    modules with names starting with the string "jdk.". \
+    #
+JDK_GROUPS += JDK
+
+# If we are importing JavaFX, we need a JavaFX group. In an ideal world, this
+# would have been abstracted away to a more proper generic handling of imported
+# modules.
+ifneq ($(findstring javafx., $(IMPORTED_MODULES)), )
+  JavaFX_GROUP_NAME := JavaFX
+  JavaFX_GROUP_MODULES := javafx.*
+  JavaFX_GROUP_DESCRIPTION := \
+      The JavaFX APIs define a set of user interface (UI) controls, graphics, \
+      media, and web packages for developing rich client applications. These \
+      APIs are in modules with names starting with the string "javafx.". \
+      #
+  JDK_GROUPS += JavaFX
+endif
+
 # All modules to have docs generated by docs-jdk-api target
-JDK_JAVADOC_MODULES := $(sort $(DOCS_MODULES))
-
-JDK_JAVADOC_OVERVIEW := $(JDK_TOPDIR)/src/java.base/share/classes/overview-core.html
+JDK_MODULES := $(sort $(DOCS_MODULES))
 
 $(eval $(call SetupApiDocsGeneration, JDK_API, \
-    MODULES := $(JDK_JAVADOC_MODULES), \
-    NAME := JDK, \
+    MODULES := $(JDK_MODULES), \
+    GROUPS := $(JDK_GROUPS), \
+    SHORT_NAME := $(JDK_SHORT_NAME), \
+    LONG_NAME := $(JDK_LONG_NAME), \
     TARGET_DIR := $(DOCS_OUTPUTDIR)/api, \
-    OVERVIEW := $(JDK_JAVADOC_OVERVIEW), \
-    DOC_TITLE := $(JDK_JAVADOC_DOC_TITLE), \
-    WINDOW_TITLE := $(JAVADOC_WINDOW_TITLE), \
-    HEADER_TITLE := $(JAVADOC_HEADER_TITLE), \
-    BOTTOM_TEXT := $(JAVADOC_BOTTOM), \
-    TOP_TEXT := $(JAVADOC_TOP), \
 ))
 
 # Targets generated are returned in JDK_API_JAVADOC_TARGETS and
@@ -335,20 +427,13 @@
 
 # The Java SE module scope is just java.se.ee and it's transitive indirect
 # exports.
-JAVASE_JAVADOC_MODULES := java.se.ee
-
-JAVASE_JAVADOC_OVERVIEW := $(JDK_TOPDIR)/src/java.base/share/classes/overview-core.html
+JAVASE_MODULES := java.se.ee
 
 $(eval $(call SetupApiDocsGeneration, JAVASE_API, \
-    MODULES := $(JAVASE_JAVADOC_MODULES), \
-    NAME := Java SE, \
+    MODULES := $(JAVASE_MODULES), \
+    SHORT_NAME := $(JAVASE_SHORT_NAME), \
+    LONG_NAME := $(JAVASE_LONG_NAME), \
     TARGET_DIR := $(IMAGES_OUTPUTDIR)/javase-docs/api, \
-    OVERVIEW := $(JAVASE_JAVADOC_OVERVIEW), \
-    DOC_TITLE := $(JAVASE_JAVADOC_DOC_TITLE), \
-    WINDOW_TITLE := $(JAVADOC_WINDOW_TITLE), \
-    HEADER_TITLE := $(JAVADOC_HEADER_TITLE), \
-    BOTTOM_TEXT := $(JAVADOC_BOTTOM), \
-    TOP_TEXT := $(JAVADOC_TOP), \
 ))
 
 # Targets generated are returned in JAVASE_API_JAVADOC_TARGETS and
--- a/make/Main.gmk	Fri Jun 02 14:46:29 2017 -0700
+++ b/make/Main.gmk	Fri Jun 23 09:53:43 2017 -0700
@@ -843,7 +843,7 @@
   build-test-hotspot-jtreg-native: buildtools-jdk \
       hotspot-$(JVM_VARIANT_MAIN)-libs
 
-  build-test-jdk-jtreg-native: buildtools-jdk
+  build-test-jdk-jtreg-native: buildtools-jdk java.base-libs
 
   test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native
 
--- a/make/common/MakeBase.gmk	Fri Jun 02 14:46:29 2017 -0700
+++ b/make/common/MakeBase.gmk	Fri Jun 23 09:53:43 2017 -0700
@@ -978,6 +978,17 @@
   )
 
 ################################################################################
+# Converts a space separated list to a colon separated list.
+#
+# Replacing double-colon with a single colon is to workaround the issue with
+# some version of make on windows that doesn't substitute spaces with one colon
+# properly.
+ColonList = \
+  $(strip \
+      $(subst ::,:,$(subst $(SPACE),:,$(strip $1))) \
+  )
+
+################################################################################
 
 # Hook to include the corresponding custom file, if present.
 $(eval $(call IncludeCustomExtension, , common/MakeBase.gmk))
--- a/make/common/Modules.gmk	Fri Jun 02 14:46:29 2017 -0700
+++ b/make/common/Modules.gmk	Fri Jun 23 09:53:43 2017 -0700
@@ -175,10 +175,13 @@
     jdk.policytool \
     jdk.rmic \
     jdk.scripting.nashorn \
+    jdk.scripting.nashorn.shell \
     jdk.sctp \
     jdk.security.auth \
     jdk.security.jgss \
+    jdk.xml.bind \
     jdk.xml.dom \
+    jdk.xml.ws \
     jdk.zipfs \
     #
 
--- a/make/jprt.properties	Fri Jun 02 14:46:29 2017 -0700
+++ b/make/jprt.properties	Fri Jun 23 09:53:43 2017 -0700
@@ -174,7 +174,13 @@
 # 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}}
+
+# Not all test targets need the test image
+jprt.test.bundle.targets=\
+  ${my.make.rule.test.targets.hotspot.reg}, \
+  ${my.make.rule.test.targets.hotspot.gtest} \
+  ${my.make.rule.test.targets.nativesanity} \
+  ${my.test.target.set:TESTNAME=jdk_lang}
 
 # 7155453: Work-around to prevent popups on OSX from blocking test completion
 # but the work-around is added to all platforms to be consistent
@@ -473,20 +479,11 @@
   ${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 = \
--- a/test/lib/jdk/test/lib/Platform.java	Fri Jun 02 14:46:29 2017 -0700
+++ b/test/lib/jdk/test/lib/Platform.java	Fri Jun 23 09:53:43 2017 -0700
@@ -23,6 +23,10 @@
 
 package jdk.test.lib;
 
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.regex.Pattern;
 
 public class Platform {
@@ -228,7 +232,7 @@
     public static boolean canPtraceAttachLinux() throws Exception {
 
         // SELinux deny_ptrace:
-        String deny_ptrace = Utils.fileAsString("/sys/fs/selinux/booleans/deny_ptrace");
+        String deny_ptrace = fileAsString("/sys/fs/selinux/booleans/deny_ptrace");
         if (deny_ptrace != null && deny_ptrace.contains("1")) {
             // ptrace will be denied:
             return false;
@@ -239,7 +243,7 @@
         // 1 - restricted ptrace: a process must be a children of the inferior or user is root
         // 2 - only processes with CAP_SYS_PTRACE may use ptrace or user is root
         // 3 - no attach: no processes may use ptrace with PTRACE_ATTACH
-        String ptrace_scope = Utils.fileAsString("/proc/sys/kernel/yama/ptrace_scope");
+        String ptrace_scope = fileAsString("/proc/sys/kernel/yama/ptrace_scope");
         if (ptrace_scope != null) {
             if (ptrace_scope.startsWith("3")) {
                 return false;
@@ -265,4 +269,10 @@
                       .matcher(osArch)
                       .matches();
     }
+
+    private static String fileAsString(String filename) throws IOException {
+        Path filePath = Paths.get(filename);
+        if (!Files.exists(filePath)) return null;
+        return new String(Files.readAllBytes(filePath));
+    }
 }
--- a/test/lib/jdk/test/lib/compiler/CompilerUtils.java	Fri Jun 02 14:46:29 2017 -0700
+++ b/test/lib/jdk/test/lib/compiler/CompilerUtils.java	Fri Jun 23 09:53:43 2017 -0700
@@ -39,7 +39,6 @@
  * This class consists exclusively of static utility methods for invoking the
  * java compiler.
  */
-
 public final class CompilerUtils {
     private CompilerUtils() { }
 
@@ -52,13 +51,21 @@
      *
      * @return true if the compilation is successful
      *
-     * @throws IOException if there is an I/O error scanning the source tree or
-     *                     creating the destination directory
+     * @throws IOException
+     *         if there is an I/O error scanning the source tree or
+     *         creating the destination directory
+     * @throws UnsupportedOperationException
+     *         if there is no system java compiler
      */
-    public static boolean compile(Path source, Path destination, String ... options)
+    public static boolean compile(Path source, Path destination, String... options)
         throws IOException
     {
         JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+        if (compiler == null) {
+            // no compiler available
+            throw new UnsupportedOperationException("Unable to get system java compiler. "
+                    + "Perhaps, jdk.compiler module is not available.");
+        }
         StandardJavaFileManager jfm = compiler.getStandardFileManager(null, null, null);
 
         List<Path> sources