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