--- a/make/Docs.gmk Tue May 07 18:10:59 2019 +0100
+++ b/make/Docs.gmk Tue May 07 12:32:19 2019 -0700
@@ -32,6 +32,7 @@
include ProcessMarkdown.gmk
include ToolsJdk.gmk
include ZipArchive.gmk
+include TextFileProcessing.gmk
# This is needed to properly setup DOCS_MODULES.
$(eval $(call ReadImportMetaData))
@@ -64,7 +65,7 @@
# URLs
JAVADOC_BASE_URL := https://docs.oracle.com/pls/topic/lookup?ctx=javase$(VERSION_NUMBER)&id=homepage
BUG_SUBMIT_URL := https://bugreport.java.com/bugreport/
-COPYRIGHT_URL := {@docroot}/../legal/copyright.html
+COPYRIGHT_URL := legal/copyright.html
LICENSE_URL := https://www.oracle.com/technetwork/java/javase/terms/license/java$(VERSION_NUMBER)speclicense.html
REDISTRIBUTION_URL := https://www.oracle.com/technetwork/java/redist-137594.html
@@ -148,6 +149,15 @@
HEADER_STYLE := style="margin-top: 14px;"
endif
+# $1 - Relative prefix to COPYRIGHT_URL
+COPYRIGHT_BOTTOM = \
+ <a href="$(strip $1)$(COPYRIGHT_URL)">Copyright</a> \
+ © 1993, $(COPYRIGHT_YEAR), $(FULL_COMPANY_NAME), \
+ $(COMPANY_ADDRESS).<br>All rights reserved. \
+ Use is subject to <a href="$(LICENSE_URL)">license terms</a> and the \
+ <a href="$(REDISTRIBUTION_URL)">documentation redistribution policy</a>. \
+ $(DRAFT_MARKER_STR) <!-- Version $(VERSION_STRING) -->
+
JAVADOC_BOTTOM := \
<a href="$(BUG_SUBMIT_URL)">Report a bug or suggest an enhancement</a><br> \
For further API reference and developer documentation see the \
@@ -157,12 +167,7 @@
of terms, workarounds, and working code examples.<br> \
Java is a trademark or registered trademark of $(FULL_COMPANY_NAME) in \
the US and other countries.<br> \
- <a href="$(COPYRIGHT_URL)">Copyright</a> \
- © 1993, $(COPYRIGHT_YEAR), $(FULL_COMPANY_NAME), \
- $(COMPANY_ADDRESS).<br>All rights reserved. \
- Use is subject to <a href="$(LICENSE_URL)">license terms</a> and the \
- <a href="$(REDISTRIBUTION_URL)">documentation redistribution policy</a>. \
- $(DRAFT_MARKER_STR) <!-- Version $(VERSION_STRING) -->
+ $(call COPYRIGHT_BOTTOM, {@docroot}/../)
JAVADOC_TOP := \
<div style="padding: 6px; text-align: center; font-size: 80%; \
@@ -500,11 +505,11 @@
################################################################################
# Copy JDK specs files
-# For all html documentation in $module/share/specs directories, copy it
+# For all non html/md files in $module/share/specs directories, copy them
# unmodified
ALL_MODULES := $(call FindAllModules)
-COPY_SPEC_FILTER := %.html %.gif %.jpg %.mib %.css
+COPY_SPEC_FILTER := %.gif %.jpg %.mib %.css
$(foreach m, $(ALL_MODULES), \
$(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
@@ -520,6 +525,45 @@
) \
)
+# Create copyright footer files that can be provided as input to pandoc. We
+# need different files for different relative paths to the copyright.html
+# file. The number 0-2 below represent how many extra directory levels down
+# below the specs dir the specs html file is located. Each file name is
+# stored in a variable SPECS_BOTTOM_FILE_$n where $n is 0, 1 or 2.
+SPECS_BOTTOM = <hr/>$(COPYRIGHT_BOTTOM)
+# The legal dir is one ../ below the specs dir, so start with one ../.
+specs_bottom_rel_path := ../
+$(foreach n, 0 1 2, \
+ $(eval SPECS_BOTTOM_FILE_$n := $(SUPPORT_OUTPUTDIR)/docs/full-specs-bottom-$n.txt) \
+ $(eval SPECS_BOTTOM_$n := $(call SPECS_BOTTOM,$(specs_bottom_rel_path))) \
+ $(eval $(SPECS_BOTTOM_FILE_$n): \
+ $(call DependOnVariable, SPECS_BOTTOM_$n) ; \
+ $(PRINTF) '$(SPECS_BOTTOM_$n)' > $$@ \
+ ) \
+ $(eval specs_bottom_rel_path := $(specs_bottom_rel_path)../) \
+)
+
+# For all html files in $module/share/specs directories, copy and add the
+# copyright footer.
+
+$(foreach m, $(ALL_MODULES), \
+ $(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
+ $(foreach d, $(SPECS_$m), \
+ $(foreach f, $(filter %.html, $(call FindFiles, $d)), \
+ $(eval $m_$f_NOF_SUBDIRS := $(words $(subst /, $(SPACE), $(subst $d, , $(dir $f))))) \
+ $(eval $m_$f_NAME := PROCESS_HTML_$m_$(strip $(call RelativePath, $f, $(TOPDIR)))) \
+ $(eval $(call SetupTextFileProcessing, $($m_$f_NAME), \
+ SOURCE_FILES := $f, \
+ SOURCE_BASE_DIR := $d, \
+ OUTPUT_DIR := $(DOCS_OUTPUTDIR)/specs/, \
+ REPLACEMENTS := \
+ </body> => $(SPECS_BOTTOM_$($m_$f_NOF_SUBDIRS))</body>, \
+ )) \
+ $(eval JDK_SPECS_TARGETS += $($($m_$f_NAME))) \
+ ) \
+ ) \
+)
+
ifeq ($(ENABLE_PANDOC), true)
# For all markdown files in $module/share/specs directories, convert them to
# html, if we have pandoc (otherwise we'll just skip this).
@@ -529,15 +573,19 @@
$(foreach m, $(ALL_MODULES), \
$(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
$(foreach d, $(SPECS_$m), \
- $(if $(filter %.md, $(call FindFiles, $d)), \
- $(eval $m_$d_NAME := SPECS_TO_HTML_$m_$(strip $(call RelativePath, $d, $(TOPDIR)))) \
- $(eval $(call SetupProcessMarkdown, $($m_$d_NAME), \
+ $(foreach f, $(filter %.md, $(call FindFiles, $d)), \
+ $(eval $m_$f_NOF_SUBDIRS := $(words $(subst /, $(SPACE), $(subst $d, , $(dir $f))))) \
+ $(eval $m_$f_BOTTOM_FILE := $(SPECS_BOTTOM_FILE_$($m_$f_NOF_SUBDIRS))) \
+ $(eval $m_$f_NAME := SPECS_TO_HTML_$m_$(strip $(call RelativePath, $f, $(TOPDIR)))) \
+ $(eval $(call SetupProcessMarkdown, $($m_$f_NAME), \
SRC := $d, \
- FILES := $(filter %.md, $(call FindFiles, $d)), \
+ FILES := $f, \
DEST := $(DOCS_OUTPUTDIR)/specs/, \
CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
+ OPTIONS := -A $($m_$f_BOTTOM_FILE), \
+ EXTRA_DEPS := $($m_$f_BOTTOM_FILE), \
)) \
- $(eval JDK_SPECS_TARGETS += $($($m_$d_NAME))) \
+ $(eval JDK_SPECS_TARGETS += $($($m_$f_NAME))) \
) \
) \
)
@@ -556,19 +604,21 @@
$(foreach m, $(ALL_MODULES), \
$(eval MAN_$m := $(call FindModuleManDirs, $m)) \
$(foreach d, $(MAN_$m), \
- $(if $(filter %.md, $(call FindFiles, $d)), \
- $(eval $m_$d_NAME := MAN_TO_HTML_$m_$(strip $(call RelativePath, $d, $(TOPDIR)))) \
- $(eval $(call SetupProcessMarkdown, $($m_$d_NAME), \
+ $(foreach f, $(filter %.md, $(call FindFiles, $d)), \
+ $(eval $m_$f_NAME := MAN_TO_HTML_$m_$(strip $(call RelativePath, $f, $(TOPDIR)))) \
+ $(eval $(call SetupProcessMarkdown, $($m_$f_NAME), \
SRC := $d, \
- FILES := $(filter %.md, $(call FindFiles, $d)), \
+ FILES := $f, \
DEST := $(DOCS_OUTPUTDIR)/specs/man, \
FILTER := $(PANDOC_HTML_MANPAGE_FILTER), \
CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
REPLACEMENTS := @@VERSION_SHORT@@ => $(VERSION_SHORT), \
+ OPTIONS := -A $(SPECS_BOTTOM_FILE_1), \
EXTRA_DEPS := $(PANDOC_HTML_MANPAGE_FILTER) \
- $(PANDOC_HTML_MANPAGE_FILTER_JAVASCRIPT), \
+ $(PANDOC_HTML_MANPAGE_FILTER_JAVASCRIPT) \
+ $(SPECS_BOTTOM_FILE_1), \
)) \
- $(eval JDK_SPECS_TARGETS += $($($m_$d_NAME))) \
+ $(eval JDK_SPECS_TARGETS += $($($m_$f_NAME))) \
) \
) \
)
@@ -580,19 +630,23 @@
# Special treatment for generated documentation
JDWP_PROTOCOL := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.jdi/jdwp-protocol.html
-$(eval $(call SetupCopyFiles, COPY_JDWP_PROTOCOL, \
- FILES := $(JDWP_PROTOCOL), \
- DEST := $(DOCS_OUTPUTDIR)/specs/jdwp, \
+$(eval $(call SetupTextFileProcessing, PROCESS_JDWP_PROTOCOL, \
+ SOURCE_FILES := $(JDWP_PROTOCOL), \
+ OUTPUT_DIR := $(DOCS_OUTPUTDIR)/specs/jdwp, \
+ REPLACEMENTS := \
+ </body> => $(SPECS_BOTTOM_1)</body>, \
))
-JDK_SPECS_TARGETS += $(COPY_JDWP_PROTOCOL)
+JDK_SPECS_TARGETS += $(PROCESS_JDWP_PROTOCOL)
# Get jvmti.html from the main jvm variant (all variants' jvmti.html are identical).
JVMTI_HTML ?= $(HOTSPOT_OUTPUTDIR)/variant-$(JVM_VARIANT_MAIN)/gensrc/jvmtifiles/jvmti.html
-$(eval $(call SetupCopyFiles, COPY_JVMTI_HTML, \
- FILES := $(JVMTI_HTML), \
- DEST := $(DOCS_OUTPUTDIR)/specs, \
+$(eval $(call SetupTextFileProcessing, PROCESS_JVMTI_HTML, \
+ SOURCE_FILES := $(JVMTI_HTML), \
+ OUTPUT_DIR := $(DOCS_OUTPUTDIR)/specs/, \
+ REPLACEMENTS := \
+ </body> => $(SPECS_BOTTOM_0)</body>, \
))
-JDK_SPECS_TARGETS += $(COPY_JVMTI_HTML)
+JDK_SPECS_TARGETS += $(PROCESS_JVMTI_HTML)
################################################################################
# Optional target which bundles all generated javadocs into a zip archive.
@@ -610,6 +664,10 @@
ZIP_TARGETS += $(BUILD_JAVADOC_ZIP)
################################################################################
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, Docs-post.gmk))
+
+################################################################################
docs-jdk-api-javadoc: $(JDK_API_JAVADOC_TARGETS) $(JDK_API_CUSTOM_TARGETS)
--- a/make/common/TextFileProcessing.gmk Tue May 07 18:10:59 2019 +0100
+++ b/make/common/TextFileProcessing.gmk Tue May 07 12:32:19 2019 -0700
@@ -58,7 +58,7 @@
# OUTPUT_DIR the directory where we store the processed files.
# OUTPUT_FILE the name of the resulting file. Only allowed if processing a
# single file.
-# SOURCE_BASE_DIR a common root to all SOURCE_DIRS.
+# SOURCE_BASE_DIR a common root to all SOURCE_DIRS or SOURCE_FILES.
# If specified, files will keep the path relative to the base in the
# OUTPUT_DIR. Otherwise, the hierarchy will be flattened into the OUTPUT_DIR.
# INCLUDE_FILES only include files matching these patterns (used only with
@@ -84,9 +84,6 @@
ifneq ($$($1_SOURCE_DIRS),)
$$(error Cannot use both SOURCE_FILES and SOURCE_DIRS (in $1))
endif
- ifneq ($$($1_SOURCE_BASE_DIR),)
- $$(error Cannot use SOURCE_BASE_DIR without SOURCE_DIRS (in $1))
- endif
ifneq ($$($1_EXCLUDE_FILES)$$($1_INCLUDE_FILES),)
$$(error Cannot INCLUDE/EXCLUDE_FILES with SOURCE_FILES (in $1))
endif
@@ -155,9 +152,10 @@
# Convert the REPLACEMENTS syntax ( A => B ; C => D ; ...) to a sed command
# line (-e "s/A/B/g" -e "s/C/D/g" ...), basically by replacing '=>' with '/'
# and ';' with '/g" -e "s/', and adjusting for edge cases.
+ # '&' has special meaning in sed so needs to be escaped.
$1_REPLACEMENTS_COMMAND_LINE := $(SED) -e 's$$($1_SEP)$$(subst $$(SPACE);$$(SPACE),$$($1_SEP)g' \
-e 's$$($1_SEP),$$(subst $$(SPACE)=>$$(SPACE),$$($1_SEP),$$(subst $$(SPACE)=>$$(SPACE);$$(SPACE),$$($1_SEP)$$($1_SEP)g' \
- -e 's$$($1_SEP),$$(strip $$($1_REPLACEMENTS)))))$$($1_SEP)g'
+ -e 's$$($1_SEP),$$(subst &,\&,$$(strip $$($1_REPLACEMENTS))))))$$($1_SEP)g'
else
# We don't have any replacements, just pipe the file through cat.
$1_REPLACEMENTS_COMMAND_LINE := $(CAT)
--- a/src/hotspot/share/prims/jvmti.xml Tue May 07 18:10:59 2019 +0100
+++ b/src/hotspot/share/prims/jvmti.xml Tue May 07 12:32:19 2019 -0700
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="jvmti.xsl"?>
<!--
- Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 2019, 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
@@ -24,7 +24,7 @@
-->
<!DOCTYPE specification [
- <!ELEMENT specification (title, copyright, intro*, functionsection, errorsection,
+ <!ELEMENT specification (title, intro*, functionsection, errorsection,
eventsection, datasection, issuessection, changehistory)>
<!ATTLIST specification label CDATA #REQUIRED
majorversion CDATA #REQUIRED
@@ -34,8 +34,6 @@
<!ELEMENT title (#PCDATA|jvmti|tm)*>
<!ATTLIST title subtitle CDATA #REQUIRED>
- <!ELEMENT copyright ANY>
-
<!ELEMENT intro ANY>
<!ATTLIST intro id CDATA #IMPLIED
label CDATA "">
@@ -367,10 +365,6 @@
<tm>JVM</tm> Tool Interface
</title>
- <copyright>
- Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
- </copyright>
-
<intro id="whatIs" label="What is the JVM Tool Interface?">
The <tm>JVM</tm> Tool Interface (<jvmti/>)
is a programming interface used by development and monitoring tools.
--- a/src/hotspot/share/prims/jvmti.xsl Tue May 07 18:10:59 2019 +0100
+++ b/src/hotspot/share/prims/jvmti.xsl Tue May 07 12:32:19 2019 -0700
@@ -1,6 +1,6 @@
-<?xml version="1.0"?>
+<?xml version="1.0"?>
<!--
- Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 2019, 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
@@ -20,14 +20,14 @@
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.
-
+
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="jvmtiLib.xsl"/>
-<xsl:output method="html" indent="yes"
+<xsl:output method="html" indent="yes"
doctype-system="about:legacy-compat"/>
<xsl:param name="development"></xsl:param>
@@ -119,7 +119,7 @@
<li>
<a href="#DataSection"><b>Data Types</b></a>
<ul>
- <xsl:for-each select="//basetypes">
+ <xsl:for-each select="//basetypes">
<li>
<a>
<xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
@@ -204,7 +204,6 @@
<p id="ChangeHistory"/>
<xsl:apply-templates select="changehistory"/>
</div>
- <xsl:apply-templates select="copyright"/>
</body>
</html>
</xsl:template>
@@ -220,12 +219,6 @@
</h3>
</xsl:template>
-<xsl:template match="copyright">
- <p>
- <xsl:apply-templates/>
- </p>
-</xsl:template>
-
<xsl:template match="functionsection">
<div class="sep"/>
<hr class="thick"/>
@@ -286,7 +279,7 @@
<xsl:apply-templates select="$calltypes" mode="index"/>
</ul>
</xsl:if>
- <xsl:variable name="cattypes"
+ <xsl:variable name="cattypes"
select="(descendant::typedef|descendant::uniontypedef|descendant::capabilitiestypedef|descendant::constants[@kind='enum'])"/>
<xsl:if test="count($cattypes)!=0">
<xsl:value-of select="@label"/> types:
@@ -304,9 +297,9 @@
<xsl:value-of select="@label"/>
</li>
</xsl:for-each>
- </ul>
+ </ul>
</xsl:if>
- <xsl:variable name="catconst"
+ <xsl:variable name="catconst"
select="(descendant::constants[@kind!='enum'])"/>
<xsl:if test="count($catconst)!=0">
<xsl:value-of select="@label"/> flags and constants:
@@ -322,7 +315,7 @@
</a>
</li>
</xsl:for-each>
- </ul>
+ </ul>
</xsl:if>
<xsl:apply-templates select="intro|typedef|uniontypedef|capabilitiestypedef"/>
<div class="sep"/>
@@ -334,7 +327,7 @@
<xsl:attribute name="id">
<xsl:value-of select="@id"/>
</xsl:attribute>
-
+
</hr>
<xsl:apply-templates select="synopsis" mode="body"/>
<blockquote>
@@ -505,7 +498,7 @@
<xsl:when test="contains(@callbacksafe,'safe')">
This function may be called from the callbacks to the
<a href="#Heap">Heap</a> iteration functions, or from the
- event handlers for the
+ event handlers for the
<a href="#GarbageCollectionStart"><code>GarbageCollectionStart</code></a>,
<a href="#GarbageCollectionFinish"><code>GarbageCollectionFinish</code></a>,
and <a href="#ObjectFree"><code>ObjectFree</code></a> events.
@@ -536,7 +529,7 @@
<xsl:for-each select="parameters">
<xsl:apply-templates select="param[position()=1]" mode="signature"/>
<xsl:for-each select="param[position()>1]">
- <xsl:text>,
+ <xsl:text>,
</xsl:text>
<xsl:apply-templates select="." mode="signature"/>
</xsl:for-each>
@@ -932,7 +925,7 @@
</a>
<xsl:apply-templates select="description" mode="brief"/>
</td>
- </tr>
+ </tr>
</xsl:when>
<xsl:otherwise>
<tr>
@@ -949,12 +942,12 @@
</a>
<xsl:apply-templates select="description" mode="brief"/>
</td>
- </tr>
+ </tr>
<tr>
<td>
<pre>
<xsl:apply-templates select="definition"/>
- </pre>
+ </pre>
</td>
</tr>
</xsl:otherwise>
@@ -977,7 +970,7 @@
<xsl:when test=".=''">
<code>
<xsl:value-of select="@id"/>
- </code>
+ </code>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
@@ -994,7 +987,7 @@
<xsl:when test=".=''">
<code>
<xsl:value-of select="@id"/>
- </code>
+ </code>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
@@ -1010,7 +1003,7 @@
<xsl:when test=".=''">
<code>
<xsl:value-of select="@id"/>
- </code>
+ </code>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
@@ -1038,7 +1031,7 @@
<xsl:template match="eventphaselist">
<xsl:variable name="phase" select="@phase"/>
<ul>
- <xsl:for-each select="//eventsection/event[@phase=$phase]">
+ <xsl:for-each select="//eventsection/event[@phase=$phase]">
<li>
<a>
<xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
@@ -1064,7 +1057,7 @@
<cite>
<xsl:text>The Java™ Virtual Machine Specification</xsl:text>
<xsl:if test="count(@chapter)=1">
- <xsl:text>, Chapter </xsl:text>
+ <xsl:text>, Chapter </xsl:text>
<xsl:value-of select="@chapter"/>
</xsl:if>
</cite>
@@ -1155,18 +1148,18 @@
<tr>
<td colspan="2">
<b>Optional Functionality:</b> might not be implemented for all
- virtual machines.
+ virtual machines.
<xsl:choose>
<xsl:when test="count(required)=1">
- The following capability
+ The following capability
</xsl:when>
<xsl:otherwise>
One of the following capabilities
</xsl:otherwise>
</xsl:choose>
- (as returned by
+ (as returned by
<a href="#GetCapabilities"><code>GetCapabilities</code></a>)
- must be true to use this
+ must be true to use this
<xsl:choose>
<xsl:when test="ancestor::function">
function.
@@ -1322,8 +1315,8 @@
<xsl:when test="contains($haserrors,'yes')">
<tr>
<td colspan="2">
- This function returns either a
- <a href="#universal-error">universal error</a>
+ This function returns either a
+ <a href="#universal-error">universal error</a>
or one of the following errors
</td>
</tr>
@@ -1342,7 +1335,7 @@
<xsl:otherwise>
<tr>
<td colspan="{$fullRowColspan}">
- This function returns a
+ This function returns a
<a href="#universal-error">universal error</a>
</td>
</tr>
@@ -1370,7 +1363,7 @@
<xsl:attribute name="href">#jvmtiCapabilities.<xsl:value-of select="@id"/></xsl:attribute>
<code>
<xsl:value-of select="@id"/>
- </code>
+ </code>
</a>.
Use <a href="#AddCapabilities"><code>AddCapabilities</code></a>.
</td>
@@ -1412,7 +1405,7 @@
</tr>
</xsl:if>
</xsl:template>
-
+
<xsl:template match="param" mode="errors2">
<xsl:variable name="haserrors2">
<xsl:apply-templates mode="haserrors2"/>
@@ -1439,7 +1432,7 @@
</tr>
</xsl:if>
</xsl:template>
-
+
<xsl:template match="description" mode="haserrors">
</xsl:template>
@@ -1684,7 +1677,7 @@
</xsl:attribute>
<code>
<xsl:value-of select="ancestor::param/@id"/>
- </code>
+ </code>
</a>
</xsl:template>
@@ -1858,7 +1851,7 @@
</td>
<td>
<pre>
- <xsl:text>void *reserved</xsl:text>
+ <xsl:text>void *reserved</xsl:text>
<xsl:value-of select="$index"/>
<xsl:text>;</xsl:text>
</pre>