make/Javadoc.gmk
changeset 45040 532296e077d3
parent 44990 db3606f423a3
child 45095 704e6f5e9b6d
child 46218 3850de6acd8e
equal deleted inserted replaced
45039:a6583de69bb5 45040:532296e077d3
    24 
    24 
    25 default: all
    25 default: all
    26 
    26 
    27 include $(SPEC)
    27 include $(SPEC)
    28 include MakeBase.gmk
    28 include MakeBase.gmk
       
    29 include Modules.gmk
       
    30 include ProcessMarkdown.gmk
       
    31 include ZipArchive.gmk
    29 include $(JDK_TOPDIR)/make/Tools.gmk
    32 include $(JDK_TOPDIR)/make/Tools.gmk
    30 
    33 include $(JDK_TOPDIR)/make/ModuleTools.gmk
    31 ################################################################################
    34 
    32 
    35 # This is needed to properly setup DOCS_MODULES.
    33 # List of all possible directories for javadoc to look for sources
    36 $(eval $(call ReadImportMetaData))
    34 # Allow custom to overwrite.
    37 
    35 JAVADOC_SOURCE_DIRS = \
    38 ################################################################################
    36       $(SUPPORT_OUTPUTDIR)/gensrc/* \
    39 
    37       $(addsuffix /*, $(IMPORT_MODULES_SRC)) \
    40 # Hook to include the corresponding custom file, if present.
    38       $(JDK_TOPDIR)/src/*/$(OPENJDK_TARGET_OS)/classes \
    41 $(eval $(call IncludeCustomExtension, , Javadoc.gmk))
    39       $(JDK_TOPDIR)/src/*/$(OPENJDK_TARGET_OS_TYPE)/classes \
    42 
    40       $(JDK_TOPDIR)/src/*/share/classes \
    43 ################################################################################
    41       $(HOTSPOT_TOPDIR)/src/*/share/classes \
    44 # Javadoc settings
    42       $(LANGTOOLS_TOPDIR)/src/*/share/classes \
    45 
    43       $(NASHORN_TOPDIR)/src/*/share/classes \
    46 # On top of the sources that was used to compile the JDK, we need some
    44       $(CORBA_TOPDIR)/src/*/share/classes \
    47 # extra java.rmi sources that are used just for javadoc.
    45       $(JAXP_TOPDIR)/src/*/share/classes \
    48 MODULES_SOURCE_PATH := $(call PathList, $(call GetModuleSrcPath) \
    46       $(JAXWS_TOPDIR)/src/*/share/classes \
    49     $(SUPPORT_OUTPUTDIR)/rmic/* $(JDK_TOPDIR)/src/*/share/doc/stub)
    47       $(SUPPORT_OUTPUTDIR)/rmic/* \
       
    48       $(JDK_TOPDIR)/src/*/share/doc/stub \
       
    49       #
       
    50 
    50 
    51 # Should we use -Xdocrootparent? Allow custom to overwrite.
    51 # Should we use -Xdocrootparent? Allow custom to overwrite.
    52 DOCROOTPARENT_FLAG = TRUE
    52 DOCROOTPARENT_FLAG ?= TRUE
    53 
    53 
    54 # URLs
    54 # URLs
    55 JAVADOC_BASE_URL := http://docs.oracle.com/javase/$(VERSION_SPECIFICATION)/docs
    55 JAVADOC_BASE_URL := http://www.oracle.com/pls/topic/lookup?ctx=javase9&id=homepage
    56 BUG_SUBMIT_URL := http://bugreport.java.com/bugreport/
    56 BUG_SUBMIT_URL := http://bugreport.java.com/bugreport/
    57 
    57 COPYRIGHT_URL := {@docroot}/../legal/cpyr.html
    58 ################################################################################
    58 LICENSE_URL := http://www.oracle.com/technetwork/java/javase/terms/license/java9speclicense.html
    59 # Text snippets
    59 REDISTRIBUTION_URL := http://www.oracle.com/technetwork/java/redist-137594.html
    60 
    60 
    61 FULL_COMPANY_NAME := Oracle and/or its affiliates
       
    62 COMPANY_ADDRESS := 500 Oracle Parkway<br>Redwood Shores, CA 94065 USA
       
    63 BUG_SUBMIT_LINE := <a href="$(BUG_SUBMIT_URL)">Submit a bug or feature</a>
       
    64 
       
    65 COMMON_BOTTOM_TEXT := $(BUG_SUBMIT_LINE)<br> Java is a trademark or registered \
       
    66     trademark of $(FULL_COMPANY_NAME) in the US and other countries.
       
    67 
       
    68 CORE_BOTTOM_COPYRIGHT_URL := {@docroot}/../legal/cpyr.html
       
    69 CORE_BOTTOM_TEXT := \
       
    70     $(BUG_SUBMIT_LINE) \
       
    71     <br>For further API reference and developer documentation, see \
       
    72     <a href="$(JAVADOC_BASE_URL)/index.html" target="_blank">Java SE \
       
    73     Documentation</a>. That documentation contains more detailed, \
       
    74     developer-targeted descriptions, with conceptual overviews, definitions of \
       
    75     terms, workarounds, and working code examples.
       
    76 
       
    77 ifeq ($(VERSION_IS_GA), true)
       
    78   DRAFT_MARKER :=
       
    79   DRAFT_WINDOW_TITLE_MARKER :=
       
    80   EARLYACCESS_TOP :=
       
    81 else
       
    82   # We need a draft format when not building the GA version.
       
    83   DRAFT_MARKER := <br><strong>DRAFT&nbsp;$(VERSION_STRING)</strong>
       
    84   ifeq ($(VERSION_BUILD), 0)
       
    85     DRAFT_WINDOW_TITLE_MARKER := $(SPACE)[ad-hoc build]
       
    86   else
       
    87     DRAFT_WINDOW_TITLE_MARKER := $(SPACE)[build $(VERSION_BUILD)]
       
    88   endif
       
    89   EARLYACCESS_TOP := \
       
    90       <div style="background-color: $(HASH)EEEEEE"><div style="padding: 6px; \
       
    91       margin-top: 2px; margin-bottom: 6px; margin-left: 6px; margin-right: \
       
    92       6px; text-align: justify; font-size: 80%; font-family: Helvetica, Arial, \
       
    93       sans-serif; font-weight: normal;">Please note that the specifications \
       
    94       and other information contained herein are not final and are subject to \
       
    95       change. The information is being made available to you solely for \
       
    96       purpose of evaluation.</div></div>
       
    97 endif
       
    98 
       
    99 ################################################################################
       
   100 # Special treatment for the core package list. All separate "small" javadoc
       
   101 # invocation needs to be able to see the core package list.
       
   102 
       
   103 ALL_PKG_DIRS := $(dir $(filter %.java, $(call CacheFind, \
       
   104     $(wildcard $(JAVADOC_SOURCE_DIRS)))))
       
   105 ALL_SRC_PREFIXES := $(addsuffix /%, $(wildcard $(JAVADOC_SOURCE_DIRS)))
       
   106 ALL_PKG_DIRNAMES := $(foreach prefix, $(ALL_SRC_PREFIXES), \
       
   107     $(patsubst $(prefix),%, $(filter $(prefix), $(ALL_PKG_DIRS))))
       
   108 ALL_PACKAGES := $(sort $(subst /,., $(patsubst %/, %, $(ALL_PKG_DIRNAMES))))
       
   109 
       
   110 # Core packages are all packages beginning with java, javax or org, except a few
       
   111 # excludes.
       
   112 JAVA_PACKAGES := $(filter java.%, $(ALL_PACKAGES))
       
   113 JAVAX_PACKAGES := $(filter javax.%, $(ALL_PACKAGES))
       
   114 ORG_PACKAGES := $(filter org.%, $(ALL_PACKAGES))
       
   115 
       
   116 # Allow custom makefile to add more excluded packages
       
   117 CORE_EXCLUDED_PACKAGES += \
       
   118     java.awt.dnd.peer \
       
   119     java.awt.peer \
       
   120     javax.smartcardio \
       
   121     org.jcp.xml.dsig.internal% \
       
   122     org.w3c.dom.css \
       
   123     org.w3c.dom.html \
       
   124     org.w3c.dom.stylesheets \
       
   125     org.w3c.dom.xpath \
       
   126     org.graalvm.compiler.% \
       
   127     #
       
   128 
       
   129 CORE_PACKAGES := $(filter-out $(CORE_EXCLUDED_PACKAGES), \
       
   130     $(JAVA_PACKAGES) $(JAVAX_PACKAGES) $(ORG_PACKAGES))
       
   131 
       
   132 CORE_PACKAGES_LIST_DIR := $(SUPPORT_OUTPUTDIR)/docs/core-packages
       
   133 CORE_PACKAGES_LIST_FILE := $(CORE_PACKAGES_LIST_DIR)/package-list
       
   134 
       
   135 CORE_PACKAGES_VARDEPS_FILE := $(call DependOnVariable, CORE_PACKAGES, \
       
   136     $(CORE_PACKAGES_LIST_FILE).vardeps)
       
   137 
       
   138 $(CORE_PACKAGES_LIST_FILE): $(CORE_PACKAGES_VARDEPS_FILE)
       
   139 	$(call MakeDir, $(@D))
       
   140 	$(eval $(call ListPathsSafely, CORE_PACKAGES, $@))
       
   141 
       
   142 ################################################################################
       
   143 # Support functions for SetupJavadocGeneration
       
   144 
       
   145 # Generate the text used in the -bottom argument.
       
   146 # Note that COPYRIGHT_YEAR is the current year (from spec.gmk)
       
   147 # Arguments:
       
   148 # arg 1: first copyright year
       
   149 # arg 2: copyright url (optional)
       
   150 # arg 3: free-form text snippet (optional)
       
   151 define GenerateBottom
       
   152   <span style="font-size:smaller">$(if $(strip $3), $(strip $3))<br> $(if \
       
   153       $(strip $2),<a href="$(strip $2)">Copyright</a>,Copyright) \
       
   154       &copy; $(strip $1), $(COPYRIGHT_YEAR), $(FULL_COMPANY_NAME). \
       
   155       $(COMPANY_ADDRESS). All rights reserved.</span>
       
   156 endef
       
   157 
       
   158 # Speed up finding by filling cache
       
   159 $(eval $(call FillCacheFind, $(wildcard $(JAVADOC_SOURCE_DIRS))))
       
   160 
    61 
   161 # In order to get a specific ordering it's necessary to specify the total
    62 # In order to get a specific ordering it's necessary to specify the total
   162 # ordering of tags as the tags are otherwise ordered in order of definition.
    63 # ordering of tags as the tags are otherwise ordered in order of definition.
   163 DEFAULT_JAVADOC_TAGS := \
    64 JAVADOC_TAGS := \
   164     -tag beaninfo:X \
    65     -tag beaninfo:X \
   165     -tag revised:X \
    66     -tag revised:X \
   166     -tag since.unbundled:X \
    67     -tag since.unbundled:X \
   167     -tag spec:X \
    68     -tag spec:X \
   168     -tag specdefault:X \
    69     -tag specdefault:X \
   172     -tag 'implSpec:a:Implementation Requirements:' \
    73     -tag 'implSpec:a:Implementation Requirements:' \
   173     -tag 'implNote:a:Implementation Note:' \
    74     -tag 'implNote:a:Implementation Note:' \
   174     -tag param \
    75     -tag param \
   175     -tag return \
    76     -tag return \
   176     -tag throws \
    77     -tag throws \
       
    78     -taglet build.tools.taglet.ModuleGraph \
   177     -tag since \
    79     -tag since \
   178     -tag version \
    80     -tag version \
   179     -tag serialData \
    81     -tag serialData \
   180     -tag factory \
    82     -tag factory \
   181     -tag see \
    83     -tag see \
   182     -tag 'jvms:a:See <cite>The Java&trade; Virtual Machine Specification</cite>:' \
    84     -tag 'jvms:a:See <cite>The Java&trade; Virtual Machine Specification</cite>:' \
   183     -tag 'jls:a:See <cite>The Java&trade; Language Specification</cite>:' \
    85     -tag 'jls:a:See <cite>The Java&trade; Language Specification</cite>:' \
       
    86     -taglet build.tools.taglet.ExtLink \
   184     -taglet build.tools.taglet.Incubating \
    87     -taglet build.tools.taglet.Incubating \
   185     -tagletpath $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
    88     -tagletpath $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
       
    89     $(CUSTOM_JAVADOC_TAGS) \
   186     #
    90     #
   187 
    91 
   188 DEFAULT_JAVADOC_OPTIONS := -XDignore.symbol.file=true -use -keywords -notimestamp \
    92 # Which doclint checks to ignore
   189     -serialwarn -encoding ISO-8859-1 -breakiterator --system none
    93 JAVADOC_DISABLED_DOCLINT := accessibility html missing syntax reference
   190 
    94 
   191 ################################################################################
    95 # The initial set of options for javadoc
   192 # Setup make rules for running javadoc.
    96 JAVADOC_OPTIONS := -XDignore.symbol.file=true -use -keywords -notimestamp \
   193 #
    97     -serialwarn -encoding ISO-8859-1 -breakiterator -splitIndex --system none \
   194 # Parameter 1 is the name of the rule. This name is used as variable prefix,
    98     -html5 -javafx --expand-requires transitive
   195 # and the targets generated are listed in a variable by that name. Note that
    99 
   196 # the index.html file will work as a "touch file" for all the magnitude of
   100 # Should we add DRAFT stamps to the generated javadoc?
   197 # files that are generated by javadoc.
   101 ifeq ($(VERSION_IS_GA), true)
       
   102   IS_DRAFT := false
       
   103 else
       
   104   IS_DRAFT := true
       
   105 endif
       
   106 
       
   107 ################################################################################
       
   108 # General text snippets
       
   109 
       
   110 FULL_COMPANY_NAME := Oracle and/or its affiliates
       
   111 COMPANY_ADDRESS := 500 Oracle Parkway<br>Redwood Shores, CA 94065 USA
       
   112 
       
   113 ifeq ($(IS_DRAFT), true)
       
   114   DRAFT_MARKER_STR := <br><strong>DRAFT $(VERSION_STRING)</strong>
       
   115   ifeq ($(VERSION_BUILD), 0)
       
   116     DRAFT_MARKER_TITLE := [ad-hoc build]
       
   117   else
       
   118     DRAFT_MARKER_TITLE := [build $(VERSION_BUILD)]
       
   119   endif
       
   120 endif
       
   121 
       
   122 JAVADOC_WINDOW_TITLE := Java Platform SE $(VERSION_SPECIFICATION) \
       
   123     $(DRAFT_MARKER_TITLE)
       
   124 
       
   125 JAVADOC_HEADER_TITLE := $(subst $(SPACE),&nbsp;,$(strip \
       
   126     <strong>Java&trade; Platform<br>Standard Ed. \
       
   127     $(VERSION_SPECIFICATION)</strong>$(DRAFT_MARKER_STR)))
       
   128 
       
   129 JAVADOC_BOTTOM := \
       
   130     <span style="font-size:smaller"> \
       
   131     <a href="$(BUG_SUBMIT_URL)">Submit a bug or feature</a><br> \
       
   132     For further API reference and developer documentation, see \
       
   133     <a href="$(JAVADOC_BASE_URL)/index.html" target="_blank">Java SE \
       
   134     Documentation</a>. That documentation contains more detailed, \
       
   135     developer-targeted descriptions, with conceptual overviews, definitions \
       
   136     of terms, workarounds, and working code examples.<br> \
       
   137     Java is a trademark or registered trademark of $(FULL_COMPANY_NAME) in \
       
   138     the US and other countries.<br> \
       
   139     <a href="$(COPYRIGHT_URL)">Copyright</a> \
       
   140     &copy; 1993, $(COPYRIGHT_YEAR), $(FULL_COMPANY_NAME). \
       
   141     $(COMPANY_ADDRESS). All rights reserved. \
       
   142     Use is subject to <a href="$(LICENSE_URL)">license terms</a>. Also see the \
       
   143     <a href="$(REDISTRIBUTION_URL)">documentation redistribution policy</a>. \
       
   144     $(DRAFT_MARKER_STR)</span>
       
   145 
       
   146 JAVADOC_TOP := \
       
   147     <div style="background-color: $(HASH)EEEEEE"><div style="padding: 6px; \
       
   148     margin-top: 2px; margin-bottom: 6px; margin-left: 6px; margin-right: \
       
   149     6px; text-align: justify; font-size: 80%; font-family: Helvetica, Arial, \
       
   150     sans-serif; font-weight: normal;">Please note that the specifications \
       
   151     and other information contained herein are not final and are subject to \
       
   152     change. The information is being made available to you solely for \
       
   153     purpose of evaluation.</div></div>
       
   154 
       
   155 ################################################################################
       
   156 # JDK javadoc titles/text snippets
       
   157 
       
   158 JDK_JAVADOC_DOC_TITLE := Java&trade; Platform, Standard Edition Development Kit \
       
   159     (JDK&trade;) $(VERSION_SPECIFICATION)<br>API Specification
       
   160 
       
   161 ################################################################################
       
   162 # Java SE javadoc titles/text snippets
       
   163 
       
   164 JAVASE_JAVADOC_DOC_TITLE := Java&trade; Platform, Standard Edition \
       
   165     $(VERSION_SPECIFICATION)<br>API Specification
       
   166 
       
   167 ################################################################################
       
   168 # Functions
       
   169 
       
   170 # Helper function for creating a png file from a dot file generated by the
       
   171 # GenGraphs tool.
       
   172 # param 1: SetupJavadocGeneration namespace ($1)
       
   173 # param 2: module name
       
   174 #
       
   175 define setup_gengraph_dot_to_png
       
   176   $1_$2_DOT_SRC :=  $$($1_GENGRAPHS_DIR)/$2.dot
       
   177   $1_$2_PNG_TARGET := $$($1_TARGET_DIR)/$2-graph.png
       
   178 
       
   179     # For each module needing a graph, create a png file from the dot file
       
   180     # generated by the GenGraphs tool and store it in the target dir.
       
   181     $$($1_$2_PNG_TARGET): $$($1_GENGRAPHS_MARKER)
       
   182 	$$(call MakeDir, $$(@D))
       
   183 	$$(call ExecuteWithLog, $$($1_$2_DOT_SRC), \
       
   184 	    $$(DOT) -Tpng -o $$($1_$2_PNG_TARGET) $$($1_$2_DOT_SRC))
       
   185 
       
   186   $1_MODULEGRAPH_TARGETS += $$($1_$2_PNG_TARGET)
       
   187 endef
       
   188 
       
   189 ################################################################################
       
   190 # Setup make rules for creating the API documentation, using javadoc and other
       
   191 # tools if needed.
       
   192 #
       
   193 # Parameter 1 is the name of the rule. This name is used as variable prefix.
       
   194 # Targets generated are returned as $1_JAVADOC_TARGETS and
       
   195 # $1_MODULEGRAPH_TARGETS. Note that the index.html file will work as a "touch
       
   196 # file" for all the magnitude of files that are generated by javadoc.
   198 #
   197 #
   199 # Remaining parameters are named arguments. These include:
   198 # Remaining parameters are named arguments. These include:
   200 #   MODULES - Modules to include
   199 #   MODULES - Modules to generate javadoc for
   201 #   PACKAGES - Packages to include
   200 #   NAME - The name of the javadoc compilation, to be presented to the user
   202 #   IS_CORE - Set to TRUE for the Core API package which needs special treatment
   201 #   TARGET_DIR - Where to store the output
   203 #   API_ROOT - Where to base the documentation (jre or jdk)
   202 #   OVERVIEW - Path to an html overview file
   204 #   DEST_DIR - A directory relative to the API root
   203 #   DOC_TITLE - Title to use in -doctitle.
   205 #   OVERVIEW - Path to a html overview file
   204 #   WINDOW_TITLE - Title to use in -windowtitle.
   206 #   TITLE - Default title to use for the more specific versions below
   205 #   HEADER_TITLE - Title to use in -header.
   207 #   WINDOW_TITLE - Title to use in -windowtitle. Computed from TITLE if empty.
   206 #   BOTTOM_TEXT - Text to use in -bottom.
   208 #   HEADER_TITLE - Title to use in -header. Computed from TITLE if empty.
   207 #   TOP_TEXT - Text to use in -top.
   209 #   DOC_TITLE - Title to use in -doctitle. Computed from TITLE if empty.
   208 #
   210 #   FIRST_COPYRIGHT_YEAR - First year this bundle was introduced
   209 SetupApiDocsGeneration = $(NamedParamsMacroTemplate)
   211 #   DISABLED_DOCLINT - Doclint warnings to exclude.
   210 define SetupApiDocsGenerationBody
   212 #   DOCLINT_PACKAGES - Optional -Xdoclint/package value
   211 
   213 #   SPLIT_INDEX - Enable -splitIndex (split index-all.html if it is too large)
   212   # Figure out all modules, both specified and transitive, that will be processed
   214 #   BOTTOM_COPYRIGHT_URL - Copyright URL to use in -bottom
   213   # by javadoc.
   215 #   BOTTOM_TEXT - Extra text to use in -bottom
   214   $1_TRANSITIVE_MODULES := $$(call FindTransitiveDepsForModules, $$($1_MODULES))
   216 #   EXTRA_TOP - Additional -top data
   215   $1_ALL_MODULES := $$(sort $$($1_MODULES) $$($1_TRANSITIVE_MODULES))
   217 #
   216 
   218 SetupJavadocGeneration = $(NamedParamsMacroTemplate)
   217   ifeq ($$(ENABLE_FULL_DOCS), true)
   219 define SetupJavadocGenerationBody
   218     # Tell the ModuleGraph taglet to generate html links to soon-to-be-created
   220   ifeq ($$($1_IS_CORE), TRUE)
   219     # png files with module graphs.
   221     $1_JAVA := $$(JAVA)
   220     $1_JAVA_ARGS += -DenableModuleGraph=true
   222     $1_OUTPUT_DIRNAME := api
   221   endif
   223   else
   222 
   224     $1_JAVA := $$(JAVA_SMALL)
   223   # Always include tags and basic options
   225     $1_OUTPUT_DIRNAME := $$($1_API_ROOT)/api/$$($1_DEST_DIR)
   224   $1_OPTIONS := $$(JAVADOC_TAGS) $$(JAVADOC_OPTIONS)
   226 
   225 
   227     # Compute a relative path to core root.
   226   $1_OPTIONS += -overview $$($1_OVERVIEW)
   228     # The non-core api javadocs need to be able to access the root of the core
   227   $1_OPTIONS += --module-source-path $$(MODULES_SOURCE_PATH)
   229     # api directory, so for jdk/api or jre/api to get to the core api/
   228   $1_OPTIONS += --module $$(call CommaList, $$($1_MODULES))
   230     # directory we would use this
   229 
   231     $1_RELATIVE_CORE_DIR := $$(call DirToDotDot, $$($1_OUTPUT_DIRNAME))/api
   230   # Create a string like "-Xdoclint:all,-syntax,-html,..."
   232 
   231   $1_OPTIONS += -Xdoclint:all,$$(call CommaList, $$(addprefix -, \
   233     # We need to tell javadoc the directory in which to find the core package-list
   232       $$(JAVADOC_DISABLED_DOCLINT)))
   234     $1_OPTIONS += -linkoffline $$($1_RELATIVE_CORE_DIR) $$(CORE_PACKAGES_LIST_DIR)
   233 
   235 
   234   ifeq ($$($$DOCROOTPARENT_FLAG), TRUE)
   236     $1_DEPS += $(CORE_PACKAGES_LIST_FILE)
   235     $1_OPTIONS += -Xdocrootparent $$(JAVADOC_BASE_URL)
   237   endif
   236   endif
   238 
   237 
   239   $1_OPTIONS += --add-modules $$(call CommaList, $$($1_MODULES))
       
   240 
       
   241   ifneq ($$($1_DISABLED_DOCLINT), )
       
   242     # Create a string like ",-syntax,-html"
       
   243     $1_DOCLINT_EXCEPTIONS := ,$$(call CommaList, $$(addprefix -, $$($1_DISABLED_DOCLINT)))
       
   244   endif
       
   245   $1_OPTIONS += -Xdoclint:all$$($1_DOCLINT_EXCEPTIONS)
       
   246 
       
   247   ifneq ($$($1_DOCLINT_PACKAGES), )
       
   248     $1_OPTIONS += -Xdoclint/package:$$(call CommaList, $$($1_DOCLINT_PACKAGES))
       
   249   endif
       
   250 
       
   251   ifeq ($$($1_DOC_TITLE), )
       
   252     $1_DOC_TITLE := $$($1_TITLE)
       
   253   endif
       
   254   $1_OPTIONS += -doctitle '$$($1_DOC_TITLE)'
   238   $1_OPTIONS += -doctitle '$$($1_DOC_TITLE)'
   255 
   239   $1_OPTIONS += -windowtitle '$$($1_WINDOW_TITLE)'
   256   ifeq ($$($1_WINDOW_TITLE), )
   240   $1_OPTIONS += -header '$$($1_HEADER_TITLE)'
   257     $1_WINDOW_TITLE := $$(strip $$(subst &trade;,, $$($1_TITLE)))
   241   $1_OPTIONS += -bottom '$$($1_BOTTOM_TEXT)'
   258   endif
   242   ifeq ($$(IS_DRAFT), true)
   259   $1_OPTIONS += -windowtitle '$$($1_WINDOW_TITLE)$$(DRAFT_WINDOW_TITLE_MARKER)'
   243     $1_OPTIONS += -top '$$($1_TOP_TEXT)'
   260 
   244   endif
   261   ifeq ($$($1_HEADER_TITLE), )
       
   262     $1_HEADER_TITLE := $$(strip $$(subst &trade;,, $$($1_TITLE)))
       
   263   endif
       
   264   $1_OPTIONS += -header '<strong>$$($1_HEADER_TITLE)</strong>$$(DRAFT_MARKER)'
       
   265 
       
   266   ifneq ($$($1_EXTRA_TOP), )
       
   267     $1_OPTIONS += -top '$$($1_EXTRA_TOP)'
       
   268   endif
       
   269 
       
   270   ifeq ($$($1_BOTTOM_TEXT), )
       
   271     $1_BOTTOM_TEXT := $(COMMON_BOTTOM_TEXT)
       
   272   endif
       
   273   $1_BOTTOM := $$(call GenerateBottom, $$($1_FIRST_COPYRIGHT_YEAR), \
       
   274       $$($1_BOTTOM_COPYRIGHT_URL), $$($1_BOTTOM_TEXT))
       
   275   $1_OPTIONS += -bottom '$$($1_BOTTOM)$$(DRAFT_MARKER)'
       
   276 
       
   277   ifneq ($$($1_OVERVIEW), )
       
   278     $1_OPTIONS += -overview $$($1_OVERVIEW)
       
   279     $1_DEPS +=  $$($1_OVERVIEW)
       
   280   endif
       
   281 
       
   282   ifneq ($$($1_SPLIT_INDEX), )
       
   283     $1_OPTIONS += -splitIndex
       
   284   endif
       
   285 
       
   286   ifneq ($$($DOCROOTPARENT_FLAG), )
       
   287     $1_OPTIONS += -Xdocrootparent $(JAVADOC_BASE_URL)
       
   288   endif
       
   289 
       
   290   $1_VARDEPS := $$($1_OPTIONS) $$($1_PACKAGES)
       
   291   $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
       
   292        $$(SUPPORT_OUTPUTDIR)/docs/$1.vardeps)
       
   293 
   245 
   294   # Do not store debug level options in VARDEPS.
   246   # Do not store debug level options in VARDEPS.
   295   ifneq ($$(LOG_LEVEL), trace)
   247   ifneq ($$(LOG_LEVEL), trace)
   296     $1_OPTIONS += -quiet
   248     $1_LOG_OPTION += -quiet
   297   else
   249   else
   298     $1_OPTIONS += -verbose
   250     $1_LOG_OPTION += -verbose
   299   endif
   251   endif
   300 
   252 
   301   $1_PACKAGE_DEPS := $$(call CacheFind, $$(wildcard $$(foreach p, \
   253   $1_VARDEPS := $$($1_JAVA_ARGS) $$($1_OPTIONS) $$(MODULES_SOURCE_PATH) \
   302       $$(subst .,/,$$(strip $$($1_PACKAGES))), \
   254       $$($1_ALL_MODULES)
   303       $$(addsuffix /$$p, $$(wildcard $$(JAVADOC_SOURCE_DIRS))))))
   255   $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
   304 
   256       $$(SUPPORT_OUTPUTDIR)/docs/$1.vardeps)
   305   # If there are many packages, use an @-file...
   257 
   306   ifneq ($$(word 17, $$($1_PACKAGES)), )
   258   # Get a list of all files in all the source dirs for all included modules
   307     $1_PACKAGES_FILE := $$(SUPPORT_OUTPUTDIR)/docs/$1.packages
   259   $1_SOURCE_DEPS := $$(call CacheFind, $$(wildcard $$(foreach module, \
   308     $1_PACKAGES_ARG := @$$($1_PACKAGES_FILE)
   260       $$($1_ALL_MODULES), $$(call FindModuleSrcDirs, $$(module)))))
   309   else
   261 
   310     $1_PACKAGES_ARG := $$($1_PACKAGES)
   262   # Javadoc creates a lot of files but use index.html as a marker
   311   endif
   263   $$($1_TARGET_DIR)/index.html: $$(BUILD_TOOLS_JDK) $$($1_VARDEPS_FILE) \
   312 
   264       $$($1_SOURCE_DEPS) $$($1_OVERVIEW)
   313   # The index.html which is a marker for all the output from javadoc.
   265 	$$(call LogWarn, Generating $$($1_NAME) API javadoc for \
   314   $1_INDEX_FILE := $$(JAVADOC_OUTPUTDIR)/$$($1_OUTPUT_DIRNAME)/index.html
   266 	    $$(words $$($1_ALL_MODULES)) modules)
   315 
   267 	$$(call LogInfo, Javadoc modules: $$($1_ALL_MODULES))
   316   # Rule for actually running javadoc
   268 	$$(call MakeDir, $$($1_TARGET_DIR))
   317   $$($1_INDEX_FILE): $(BUILD_TOOLS_JDK) $$($1_VARDEPS_FILE) $$($1_PACKAGE_DEPS) $$($1_DEPS)
   269 	$$(call ExecuteWithLog, $$(SUPPORT_OUTPUTDIR)/docs/$1, \
   318 	$$(call LogWarn, Generating Javadoc from $$(words $$($1_PACKAGES)) package(s) for $$($1_OUTPUT_DIRNAME))
   270 	    $$(JAVA) -Djava.awt.headless=true $$($1_JAVA_ARGS) \
   319 	$$(call MakeDir, $$(@D))
   271 	        $$(NEW_JAVADOC) -d $$($1_TARGET_DIR) \
   320         ifneq ($$($1_PACKAGES_FILE), )
   272 	        $$(JAVADOC_TAGS) $$($1_OPTIONS) $$($1_LOG_OPTION))
   321 	  $$(eval $$(call ListPathsSafely, $1_PACKAGES, $$($1_PACKAGES_FILE)))
   273 
   322         endif
   274   $1_JAVADOC_TARGETS := $$($1_TARGET_DIR)/index.html
   323 	$$(call ExecuteWithLog, $$(SUPPORT_OUTPUTDIR)/docs/$1.javadoc, \
   275 
   324 	    $$($1_JAVA) -Djava.awt.headless=true $(NEW_JAVADOC) -d $$(@D) \
   276   ifeq ($$(ENABLE_FULL_DOCS), true)
   325 	        $$(DEFAULT_JAVADOC_TAGS) $$(DEFAULT_JAVADOC_OPTIONS) \
   277     # We have asked ModuleGraph to generate links to png files. Now we must
   326 	        --module-source-path $$(call PathList, $$(JAVADOC_SOURCE_DIRS)) \
   278     # produce the png files.
   327 	        $$($1_OPTIONS) $$($1_PACKAGES_ARG))
   279 
   328 
   280     # Locate which modules has the @moduleGraph tag in their module-info.java
   329   # The output returned will be the index.html file
   281     $1_MODULES_NEEDING_GRAPH := $$(strip $$(foreach m, $$($1_ALL_MODULES), \
   330   $1 := $$($1_INDEX_FILE)
   282       $$(if $$(shell $$(GREP) -e @moduleGraph \
       
   283           $$(wildcard $$(addsuffix /module-info.java, \
       
   284           $$(call FindModuleSrcDirs, $$m)))), \
       
   285         $$m) \
       
   286     ))
       
   287 
       
   288     # First we run the GenGraph tool. It will query the module structure of the
       
   289     # running JVM and output .dot files for all existing modules.
       
   290     GENGRAPHS_PROPS := \
       
   291         $$(JDK_TOPDIR)/make/src/classes/build/tools/jigsaw/javadoc-graphs.properties
       
   292 
       
   293     $1_GENGRAPHS_DIR := $$(SUPPORT_OUTPUTDIR)/docs/$1-gengraphs
       
   294     $1_GENGRAPHS_MARKER := $$($1_GENGRAPHS_DIR)/_gengraphs_run.marker
       
   295 
       
   296     $$($1_GENGRAPHS_MARKER): $$(BUILD_JIGSAW_TOOLS) $$(GENGRAPHS_PROPS)
       
   297 	$$(call LogInfo, Running gengraphs for $$($1_NAME) API documentation)
       
   298 	$$(call MakeDir, $$($1_GENGRAPHS_DIR))
       
   299 	$$(call ExecuteWithLog, $$($1_GENGRAPHS_DIR)/gengraphs, \
       
   300 	    $$(TOOL_GENGRAPHS) --spec --output $$($1_GENGRAPHS_DIR) \
       
   301 	    --dot-attributes $$(GENGRAPHS_PROPS) && \
       
   302 	    $$(TOUCH) $$($1_GENGRAPHS_MARKER))
       
   303 
       
   304     # For each module needing a graph, create a png file from the dot file
       
   305     # generated by the GenGraphs tool and store it in the target dir.
       
   306     # They will depend on $1_GENGRAPHS_MARKER, and will be added to $1.
       
   307     $$(foreach m, $$($1_MODULES_NEEDING_GRAPH), \
       
   308       $$(eval $$(call setup_gengraph_dot_to_png,$1,$$m)) \
       
   309     )
       
   310   endif
   331 endef
   311 endef
   332 
   312 
   333 ################################################################################
   313 ################################################################################
   334 
   314 # Setup generation of the JDK API documentation (javadoc + modulegraph)
   335 $(eval $(call SetupJavadocGeneration, coredocs, \
   315 
   336     MODULES := java.se.ee, \
   316 # All modules to have docs generated by docs-jdk-api target
   337     PACKAGES := $(CORE_PACKAGES), \
   317 JDK_JAVADOC_MODULES := $(sort $(DOCS_MODULES))
   338     IS_CORE := TRUE, \
   318 
   339     OVERVIEW := $(JDK_TOPDIR)/src/java.base/share/classes/overview-core.html, \
   319 JDK_JAVADOC_OVERVIEW := $(JDK_TOPDIR)/src/java.base/share/classes/overview-core.html
   340     WINDOW_TITLE := Java Platform SE $(VERSION_SPECIFICATION), \
   320 
   341     HEADER_TITLE := Java&trade;&nbsp;Platform<br>Standard&nbsp;Ed.&nbsp;$(VERSION_SPECIFICATION), \
   321 $(eval $(call SetupApiDocsGeneration, JDK_API, \
   342     DOC_TITLE := Java&trade; Platform$(COMMA) Standard Edition \
   322     MODULES := $(JDK_JAVADOC_MODULES), \
   343       $(VERSION_SPECIFICATION)<br>API Specification, \
   323     NAME := JDK, \
   344     FIRST_COPYRIGHT_YEAR := 1993, \
   324     TARGET_DIR := $(JAVADOC_OUTPUTDIR)/api, \
   345     DISABLED_DOCLINT := accessibility html missing syntax, \
   325     OVERVIEW := $(JDK_JAVADOC_OVERVIEW), \
   346     DOCLINT_PACKAGES := -org.omg.* jdk.internal.logging.*, \
   326     DOC_TITLE := $(JDK_JAVADOC_DOC_TITLE), \
   347     SPLIT_INDEX := TRUE, \
   327     WINDOW_TITLE := $(JAVADOC_WINDOW_TITLE), \
   348     BOTTOM_COPYRIGHT_URL := $(CORE_BOTTOM_COPYRIGHT_URL), \
   328     HEADER_TITLE := $(JAVADOC_HEADER_TITLE), \
   349     BOTTOM_TEXT := $(CORE_BOTTOM_TEXT), \
   329     BOTTOM_TEXT := $(JAVADOC_BOTTOM), \
   350     EXTRA_TOP := $(EARLYACCESS_TOP), \
   330     TOP_TEXT := $(JAVADOC_TOP), \
   351 ))
   331 ))
   352 
   332 
   353 TARGETS += $(coredocs)
   333 # Targets generated are returned in JDK_API_JAVADOC_TARGETS and
   354 
   334 # JDK_API_MODULEGRAPH_TARGETS.
   355 ################################################################################
   335 
   356 
   336 ################################################################################
   357 $(eval $(call SetupJavadocGeneration, docletapi, \
   337 # Setup generation of the Java SE API documentation (javadoc + modulegraph)
   358     MODULES := jdk.javadoc, \
   338 
   359     PACKAGES := \
   339 # The Java SE module scope is just java.se.ee and it's transitive modules.
   360         jdk.javadoc.doclet \
   340 JAVASE_JAVADOC_MODULES := java.se.ee
   361         jdk.javadoc.doclet.taglet \
   341 
   362         jdk.javadoc.doclets, \
   342 JAVASE_JAVADOC_OVERVIEW := $(JDK_TOPDIR)/src/java.base/share/classes/overview-core.html
   363     API_ROOT := jdk, \
   343 
   364     DEST_DIR := javadoc/doclet, \
   344 $(eval $(call SetupApiDocsGeneration, JAVASE_API, \
   365     TITLE := Doclet API, \
   345     MODULES := $(JAVASE_JAVADOC_MODULES), \
   366     FIRST_COPYRIGHT_YEAR := 1993, \
   346     NAME := Java SE, \
   367 ))
   347     TARGET_DIR := $(IMAGES_OUTPUTDIR)/javase-docs/api, \
   368 
   348     OVERVIEW := $(JAVASE_JAVADOC_OVERVIEW), \
   369 TARGETS += $(docletapi)
   349     DOC_TITLE := $(JAVASE_JAVADOC_DOC_TITLE), \
   370 
   350     WINDOW_TITLE := $(JAVADOC_WINDOW_TITLE), \
   371 ################################################################################
   351     HEADER_TITLE := $(JAVADOC_HEADER_TITLE), \
   372 
   352     BOTTOM_TEXT := $(JAVADOC_BOTTOM), \
   373 $(eval $(call SetupJavadocGeneration, old-docletapi, \
   353     TOP_TEXT := $(JAVADOC_TOP), \
   374     MODULES := jdk.javadoc, \
   354 ))
   375     PACKAGES := com.sun.javadoc, \
   355 
   376     API_ROOT := jdk, \
   356 # Targets generated are returned in JAVASE_API_JAVADOC_TARGETS and
   377     DEST_DIR := javadoc/old/doclet, \
   357 # JAVASE_API_MODULEGRAPH_TARGETS.
   378     TITLE := Doclet API, \
   358 
   379     FIRST_COPYRIGHT_YEAR := 1993, \
   359 ################################################################################
   380 ))
   360 # Copy JDK specs files
   381 
   361 
   382 TARGETS += $(old-docletapi)
   362 # For all html documentation in $module/share/specs directories, copy it
   383 
   363 # unmodified
   384 ################################################################################
   364 
   385 
   365 ALL_MODULES := $(call FindAllModules)
   386 $(eval $(call SetupJavadocGeneration, tagletapi, \
   366 COPY_SPEC_FILTER := %.html %.gif %.jpg %.mib %.css
   387     MODULES := jdk.javadoc, \
   367 
   388     PACKAGES := com.sun.tools.doclets, \
   368 $(foreach m, $(ALL_MODULES), \
   389     API_ROOT := jdk, \
   369   $(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
   390     DEST_DIR := javadoc/old/taglet, \
   370   $(if $(SPECS_$m), \
   391     TITLE := Taglet API, \
   371     $(eval $(call SetupCopyFiles, COPY_$m, \
   392     FIRST_COPYRIGHT_YEAR := 1993, \
   372         SRC := $(SPECS_$m), \
   393 ))
   373         FILES := $(filter $(COPY_SPEC_FILTER), $(call CacheFind, $(SPECS_$m))), \
   394 
   374         DEST := $(JAVADOC_OUTPUTDIR)/specs/, \
   395 TARGETS += $(tagletapi)
   375     )) \
   396 
   376     $(eval JDK_SPECS_TARGETS += $(COPY_$m)) \
   397 ################################################################################
   377   ) \
   398 
   378 )
   399 $(eval $(call SetupJavadocGeneration, domapi, \
   379 
   400     MODULES := \
   380 # Copy the global resources
   401         java.xml \
   381 GLOBAL_SPECS_RESOURCES_DIR := $(JDK_TOPDIR)/make/data/docs-resources/specs
   402         jdk.xml.dom, \
   382 $(eval $(call SetupCopyFiles, COPY_GLOBAL_RESOURCES, \
   403     PACKAGES := \
   383     SRC := $(GLOBAL_SPECS_RESOURCES_DIR), \
   404         org.w3c.dom \
   384     FILES := $(call CacheFind, $(GLOBAL_SPECS_RESOURCES_DIR)), \
   405         org.w3c.dom.bootstrap \
   385     DEST := $(JAVADOC_OUTPUTDIR)/specs/, \
   406         org.w3c.dom.ls \
   386 ))
   407         org.w3c.dom.ranges \
   387 JDK_SPECS_TARGETS += $(COPY_GLOBAL_RESOURCES)
   408         org.w3c.dom.traversal \
   388 
   409         org.w3c.dom.html \
   389 ifeq ($(ENABLE_FULL_DOCS), true)
   410         org.w3c.dom.stylesheets \
   390   # For all markdown files in $module/share/specs directories, convert them to
   411         org.w3c.dom.css \
   391   # html.
   412         org.w3c.dom.events \
   392 
   413         org.w3c.dom.views, \
   393   GLOBAL_SPECS_DEFAULT_CSS_FILE := $(JAVADOC_OUTPUTDIR)/specs/resources/jdk-default.css
   414     API_ROOT := jre, \
   394 
   415     DEST_DIR := plugin/dom, \
   395   $(foreach m, $(ALL_MODULES), \
   416     TITLE := Common DOM API, \
   396     $(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
   417     FIRST_COPYRIGHT_YEAR := 2005, \
   397     $(foreach d, $(SPECS_$m), \
   418     DISABLED_DOCLINT := accessibility html missing, \
   398       $(if $(filter %.md, $(call CacheFind, $d)), \
   419     SPLIT_INDEX := TRUE, \
   399         $(eval $(call SetupProcessMarkdown, CONVERT_MARKDOWN_$m_$(patsubst $(TOPDIR)/%,%,$d), \
   420 ))
   400             SRC := $d, \
   421 
   401             FILES := $(filter %.md, $(call CacheFind, $d)), \
   422 TARGETS += $(domapi)
   402             DEST := $(JAVADOC_OUTPUTDIR)/specs/, \
   423 
   403             CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
   424 ################################################################################
   404         )) \
   425 
   405       ) \
   426 $(eval $(call SetupJavadocGeneration, jdi, \
   406       $(eval JDK_SPECS_TARGETS += $(CONVERT_MARKDOWN_$m_$(patsubst $(TOPDIR)/%,%,$d))) \
   427     MODULES := jdk.jdi, \
   407     ) \
   428     PACKAGES := \
   408   )
   429         com.sun.jdi \
   409 endif
   430         com.sun.jdi.event \
   410 
   431         com.sun.jdi.request \
   411 # Special treatment for generated documentation
   432         com.sun.jdi.connect \
   412 
   433         com.sun.jdi.connect.spi, \
   413 JDWP_PROTOCOL := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.jdi/jdwp-protocol.html
   434     API_ROOT := jdk, \
   414 $(eval $(call SetupCopyFiles, COPY_JDWP_PROTOCOL, \
   435     DEST_DIR := jpda/jdi, \
   415     FILES := $(JDWP_PROTOCOL), \
   436     OVERVIEW := $(JDK_TOPDIR)/src/jdk.jdi/share/classes/jdi-overview.html, \
   416     DEST := $(JAVADOC_OUTPUTDIR)/specs/jdwp, \
   437     TITLE := Java&trade; Debug Interface, \
   417 ))
   438     FIRST_COPYRIGHT_YEAR := 1999, \
   418 JDK_SPECS_TARGETS += $(COPY_JDWP_PROTOCOL)
   439     DISABLED_DOCLINT := accessibility missing syntax, \
   419 
   440     SPLIT_INDEX := TRUE, \
   420 # Get jvmti.html from the main jvm variant (all variants' jvmti.html are identical).
   441 ))
   421 JVMTI_HTML := $(HOTSPOT_OUTPUTDIR)/variant-$(JVM_VARIANT_MAIN)/gensrc/jvmtifiles/jvmti.html
   442 
       
   443 TARGETS += $(jdi)
       
   444 
       
   445 ################################################################################
       
   446 
       
   447 $(eval $(call SetupJavadocGeneration, jaas, \
       
   448     MODULES := jdk.security.auth, \
       
   449     PACKAGES := \
       
   450         com.sun.security.auth \
       
   451         com.sun.security.auth.callback \
       
   452         com.sun.security.auth.login \
       
   453         com.sun.security.auth.module, \
       
   454     API_ROOT := jre, \
       
   455     DEST_DIR := security/jaas/spec, \
       
   456     OVERVIEW := $(JDK_TOPDIR)/src/jdk.security.auth/share/classes/jaas-overview.html, \
       
   457     TITLE := Java&trade; Authentication and Authorization Service, \
       
   458     FIRST_COPYRIGHT_YEAR := 1998, \
       
   459     DISABLED_DOCLINT := missing, \
       
   460 ))
       
   461 
       
   462 TARGETS += $(jaas)
       
   463 
       
   464 ################################################################################
       
   465 
       
   466 $(eval $(call SetupJavadocGeneration, jgss, \
       
   467     MODULES := jdk.security.jgss, \
       
   468     PACKAGES := com.sun.security.jgss, \
       
   469     API_ROOT := jre, \
       
   470     DEST_DIR := security/jgss/spec, \
       
   471     OVERVIEW := $(JDK_TOPDIR)/src/java.security.jgss/share/classes/jgss-overview.html, \
       
   472     TITLE := Java&trade; GSS-API Utilities, \
       
   473     FIRST_COPYRIGHT_YEAR := 2000, \
       
   474 ))
       
   475 
       
   476 TARGETS += $(jgss)
       
   477 
       
   478 ################################################################################
       
   479 
       
   480 $(eval $(call SetupJavadocGeneration, smartcardio, \
       
   481     MODULES := java.smartcardio, \
       
   482     PACKAGES := javax.smartcardio, \
       
   483     API_ROOT := jre, \
       
   484     DEST_DIR := security/smartcardio/spec, \
       
   485     TITLE := Java&trade; Smart Card I/O, \
       
   486     FIRST_COPYRIGHT_YEAR := 2005, \
       
   487 ))
       
   488 
       
   489 TARGETS += $(smartcardio)
       
   490 
       
   491 ################################################################################
       
   492 
       
   493 $(eval $(call SetupJavadocGeneration, httpserver, \
       
   494     MODULES := jdk.httpserver, \
       
   495     PACKAGES := \
       
   496         com.sun.net.httpserver \
       
   497         com.sun.net.httpserver.spi, \
       
   498     API_ROOT := jre, \
       
   499     DEST_DIR := net/httpserver/spec, \
       
   500     TITLE := Java&trade; HTTP Server, \
       
   501     FIRST_COPYRIGHT_YEAR := 2005, \
       
   502     DISABLED_DOCLINT := accessibility missing syntax, \
       
   503 ))
       
   504 
       
   505 TARGETS += $(httpserver)
       
   506 
       
   507 ################################################################################
       
   508 
       
   509 $(eval $(call SetupJavadocGeneration, httpclient, \
       
   510     MODULES := jdk.incubator.httpclient, \
       
   511     PACKAGES := \
       
   512         jdk.incubator.http, \
       
   513     API_ROOT := jre, \
       
   514     DEST_DIR := incubator/httpclient/spec, \
       
   515     TITLE := Java&trade; HTTP Client API (incubator module), \
       
   516     FIRST_COPYRIGHT_YEAR := 2015, \
       
   517     DISABLED_DOCLINT := accessibility missing syntax, \
       
   518 ))
       
   519 
       
   520 TARGETS += $(httpclient)
       
   521 
       
   522 ################################################################################
       
   523 
       
   524 $(eval $(call SetupJavadocGeneration, jsobject, \
       
   525     MODULES := jdk.jsobject, \
       
   526     PACKAGES := netscape.javascript, \
       
   527     API_ROOT := jre, \
       
   528     DEST_DIR := plugin/jsobject, \
       
   529     FIRST_COPYRIGHT_YEAR := 1993, \
       
   530     TITLE := Java&trade; JSObject Doc, \
       
   531 ))
       
   532 
       
   533 TARGETS += $(jsobject)
       
   534 
       
   535 ################################################################################
       
   536 
       
   537 $(eval $(call SetupJavadocGeneration, mgmt, \
       
   538     MODULES := jdk.management, \
       
   539     PACKAGES := com.sun.management, \
       
   540     API_ROOT := jre, \
       
   541     DEST_DIR := management/extension, \
       
   542     OVERVIEW := $(JDK_TOPDIR)/src/java.management/share/classes/mgmt-overview.html, \
       
   543     TITLE := Monitoring and Management Interface for the Java&trade; Platform, \
       
   544     FIRST_COPYRIGHT_YEAR := 2003, \
       
   545     DISABLED_DOCLINT := accessibility missing reference, \
       
   546 ))
       
   547 
       
   548 TARGETS += $(mgmt)
       
   549 
       
   550 ################################################################################
       
   551 
       
   552 $(eval $(call SetupJavadocGeneration, attach, \
       
   553     MODULES := jdk.attach, \
       
   554     PACKAGES := \
       
   555         com.sun.tools.attach \
       
   556         com.sun.tools.attach.spi, \
       
   557     API_ROOT := jdk, \
       
   558     DEST_DIR := attach/spec, \
       
   559     TITLE := Attach API, \
       
   560     FIRST_COPYRIGHT_YEAR := 2005, \
       
   561     DISABLED_DOCLINT := reference, \
       
   562 ))
       
   563 
       
   564 TARGETS += $(attach)
       
   565 
       
   566 ################################################################################
       
   567 
       
   568 $(eval $(call SetupJavadocGeneration, jconsole, \
       
   569     MODULES := jdk.jconsole, \
       
   570     PACKAGES := com.sun.tools.jconsole, \
       
   571     API_ROOT := jdk, \
       
   572     DEST_DIR := jconsole/spec, \
       
   573     TITLE := JConsole API, \
       
   574     FIRST_COPYRIGHT_YEAR := 2006, \
       
   575 ))
       
   576 
       
   577 TARGETS += $(jconsole)
       
   578 
       
   579 ################################################################################
       
   580 
       
   581 $(eval $(call SetupJavadocGeneration, jshellapi, \
       
   582     MODULES := jdk.jshell, \
       
   583     PACKAGES := \
       
   584         jdk.jshell \
       
   585         jdk.jshell.spi \
       
   586         jdk.jshell.execution \
       
   587         jdk.jshell.tool, \
       
   588     API_ROOT := jdk, \
       
   589     DEST_DIR := jshell, \
       
   590     TITLE := JShell API, \
       
   591     FIRST_COPYRIGHT_YEAR := 2015, \
       
   592     SPLIT_INDEX := TRUE, \
       
   593 ))
       
   594 
       
   595 TARGETS += $(jshellapi)
       
   596 
       
   597 ################################################################################
       
   598 
       
   599 $(eval $(call SetupJavadocGeneration, treeapi, \
       
   600     MODULES := jdk.compiler, \
       
   601     PACKAGES := \
       
   602         com.sun.source.doctree \
       
   603         com.sun.source.tree \
       
   604         com.sun.source.util, \
       
   605     API_ROOT := jdk, \
       
   606     DEST_DIR := javac/tree, \
       
   607     TITLE := Compiler Tree API, \
       
   608     FIRST_COPYRIGHT_YEAR := 2005, \
       
   609     SPLIT_INDEX := TRUE, \
       
   610 ))
       
   611 
       
   612 TARGETS += $(treeapi)
       
   613 
       
   614 ################################################################################
       
   615 
       
   616 $(eval $(call SetupJavadocGeneration, nashornapi, \
       
   617     MODULES := jdk.scripting.nashorn, \
       
   618     PACKAGES := \
       
   619         jdk.nashorn.api.scripting \
       
   620         jdk.nashorn.api.tree, \
       
   621     API_ROOT := jdk, \
       
   622     DEST_DIR := nashorn, \
       
   623     TITLE := Nashorn API, \
       
   624     FIRST_COPYRIGHT_YEAR := 2014, \
       
   625     SPLIT_INDEX := TRUE, \
       
   626 ))
       
   627 
       
   628 TARGETS += $(nashornapi)
       
   629 
       
   630 ################################################################################
       
   631 
       
   632 $(eval $(call SetupJavadocGeneration, dynalinkapi, \
       
   633     MODULES := jdk.dynalink, \
       
   634     PACKAGES := \
       
   635         jdk.dynalink \
       
   636         jdk.dynalink.beans \
       
   637         jdk.dynalink.linker \
       
   638         jdk.dynalink.linker.support \
       
   639         jdk.dynalink.support, \
       
   640     API_ROOT := jdk, \
       
   641     DEST_DIR := dynalink, \
       
   642     TITLE := Dynalink API, \
       
   643     FIRST_COPYRIGHT_YEAR := 2015, \
       
   644 ))
       
   645 
       
   646 TARGETS += $(dynalinkapi)
       
   647 
       
   648 ################################################################################
       
   649 
       
   650 $(eval $(call SetupJavadocGeneration, sctp, \
       
   651     MODULES := jdk.sctp, \
       
   652     PACKAGES := com.sun.nio.sctp, \
       
   653     API_ROOT := jre, \
       
   654     DEST_DIR := nio/sctp/spec, \
       
   655     TITLE := SCTP API, \
       
   656     FIRST_COPYRIGHT_YEAR := 2009, \
       
   657 ))
       
   658 
       
   659 TARGETS += $(sctp)
       
   660 
       
   661 ################################################################################
       
   662 
       
   663 $(eval $(call SetupJavadocGeneration, jaccess, \
       
   664     MODULES := jdk.accessibility, \
       
   665     PACKAGES := com.sun.java.accessibility.util, \
       
   666     API_ROOT := jre, \
       
   667     DEST_DIR := accessibility/jaccess/spec, \
       
   668     TITLE := JACCESS API, \
       
   669     FIRST_COPYRIGHT_YEAR := 2002, \
       
   670 ))
       
   671 
       
   672 TARGETS += $(jaccess)
       
   673 
       
   674 ################################################################################
       
   675 
       
   676 $(eval $(call SetupJavadocGeneration, jdknet, \
       
   677     MODULES := jdk.net, \
       
   678     PACKAGES := jdk.net, \
       
   679     API_ROOT := jre, \
       
   680     DEST_DIR := net/socketoptions/spec, \
       
   681     TITLE := jdk.net API, \
       
   682     FIRST_COPYRIGHT_YEAR := 2014, \
       
   683     DISABLED_DOCLINT := missing, \
       
   684 ))
       
   685 
       
   686 TARGETS += $(jdknet)
       
   687 
       
   688 ################################################################################
       
   689 # Copy JDWP html file
       
   690 
       
   691 JDWP_HTML := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.jdi/jdwp-protocol.html
       
   692 
       
   693 $(eval $(call SetupCopyFiles, COPY_JDWP_HTML, \
       
   694     FILES := $(JDWP_HTML), \
       
   695     DEST := $(JAVADOC_OUTPUTDIR)/platform/jpda/jdwp, \
       
   696 ))
       
   697 
       
   698 COPY_TARGETS += $(COPY_JDWP_HTML)
       
   699 
       
   700 ################################################################################
       
   701 # Copy JVMTI html file
       
   702 
       
   703 # Pick jvmti.html from any jvm variant, they are all the same.
       
   704 JVMTI_HTML := $(firstword \
       
   705     $(wildcard $(HOTSPOT_OUTPUTDIR)/variant-*/gensrc/jvmtifiles/jvmti.html))
       
   706 
       
   707 $(eval $(call SetupCopyFiles, COPY_JVMTI_HTML, \
   422 $(eval $(call SetupCopyFiles, COPY_JVMTI_HTML, \
   708     FILES := $(JVMTI_HTML), \
   423     FILES := $(JVMTI_HTML), \
   709     DEST := $(JAVADOC_OUTPUTDIR)/platform/jvmti, \
   424     DEST := $(JAVADOC_OUTPUTDIR)/specs, \
   710 ))
   425 ))
   711 
   426 JDK_SPECS_TARGETS += $(COPY_JVMTI_HTML)
   712 COPY_TARGETS += $(COPY_JVMTI_HTML)
       
   713 
   427 
   714 ################################################################################
   428 ################################################################################
   715 # Optional target which bundles all generated javadocs into a zip archive.
   429 # Optional target which bundles all generated javadocs into a zip archive.
   716 
   430 
   717 JAVADOC_ARCHIVE_NAME := jdk-$(VERSION_STRING)-docs.zip
   431 JAVADOC_ZIP_NAME := jdk-$(VERSION_STRING)-docs.zip
   718 JAVADOC_ARCHIVE_ASSEMBLY_DIR := $(SUPPORT_OUTPUTDIR)/docs/zip-docs
   432 JAVADOC_ZIP_FILE := $(OUTPUT_ROOT)/bundles/$(JAVADOC_ZIP_NAME)
   719 JAVADOC_ARCHIVE_DIR := $(OUTPUT_ROOT)/bundles
   433 
   720 JAVADOC_ARCHIVE := $(JAVADOC_ARCHIVE_DIR)/$(JAVADOC_ARCHIVE_NAME)
   434 $(eval $(call SetupZipArchive, BUILD_JAVADOC_ZIP, \
   721 
   435     SRC := $(JAVADOC_OUTPUTDIR), \
   722 $(JAVADOC_ARCHIVE): $(TARGETS) $(COPY_TARGETS)
   436     ZIP := $(JAVADOC_ZIP_FILE), \
   723 	$(call LogInfo, Compressing javadoc to single $(JAVADOC_ARCHIVE_NAME))
   437     EXTRA_DEPS := $(JDK_API_JAVADOC_TARGETS) $(JDK_API_MODULEGRAPH_TARGETS) \
   724 	$(MKDIR) -p $(JAVADOC_ARCHIVE_DIR)
   438         $(JDK_SPECS_TARGETS), \
   725 	$(RM) -r $(JAVADOC_ARCHIVE_ASSEMBLY_DIR)
   439 ))
   726 	$(MKDIR) -p $(JAVADOC_ARCHIVE_ASSEMBLY_DIR)
   440 
   727 	all_roots=`$(FIND) $(JAVADOC_OUTPUTDIR) | $(GREP) index.html | grep -v old/doclet`; \
   441 ZIP_TARGETS += $(BUILD_JAVADOC_ZIP)
   728 	pushd $(JAVADOC_ARCHIVE_ASSEMBLY_DIR); \
   442 
   729 	for index_file in $${all_roots} ; do \
   443 ################################################################################
   730 	  target_dir=`dirname $${index_file}`; \
   444 
   731 	  name=`$(ECHO) $${target_dir} | $(SED) "s;/spec;;" | $(SED) "s;.*/;;"`; \
   445 docs-jdk-api-javadoc: $(JDK_API_JAVADOC_TARGETS)
   732 	  $(LN) -s $${target_dir}  $${name}; \
   446 
   733 	done; \
   447 docs-jdk-api-modulegraph: $(JDK_API_MODULEGRAPH_TARGETS)
   734 	$(ZIPEXE) -q -r $(JAVADOC_ARCHIVE) * ; \
   448 
   735 	popd ;
   449 docs-javase-api-javadoc: $(JAVASE_API_JAVADOC_TARGETS)
   736 
   450 
   737 ZIP_TARGETS += $(JAVADOC_ARCHIVE)
   451 docs-javase-api-modulegraph: $(JAVASE_API_MODULEGRAPH_TARGETS)
   738 
   452 
   739 ################################################################################
   453 docs-jdk-specs: $(JDK_SPECS_TARGETS)
   740 
       
   741 # Hook to include the corresponding custom file, if present.
       
   742 $(eval $(call IncludeCustomExtension, , Javadoc.gmk))
       
   743 
       
   744 ################################################################################
       
   745 
       
   746 docs-javadoc: $(BUILD_TOOLS_JDK) $(TARGETS)
       
   747 
       
   748 docs-copy: $(COPY_TARGETS)
       
   749 
   454 
   750 docs-zip: $(ZIP_TARGETS)
   455 docs-zip: $(ZIP_TARGETS)
   751 
   456 
   752 all: docs-javadoc docs-copy docs-zip
   457 all: docs-jdk-api-javadoc docs-jdk-api-modulegraph docs-javase-api-javadoc \
   753 
   458     docs-javase-api-modulegraph docs-jdk-specs docs-zip
   754 .PHONY: default all docs-javadoc docs-copy docs-zip
   459 
       
   460 .PHONY: default all docs-jdk-api-javadoc docs-jdk-api-modulegraph \
       
   461     docs-javase-api-javadoc docs-javase-api-modulegraph docs-jdk-specs docs-zip