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