make/Javadoc.gmk
Print this page
*** 219,228 ****
--- 219,233 ----
COREAPI_DOCSDIR = $(DOCSDIR)/api
JDK_API_DOCSDIR = $(DOCSDIR)/jdk/api
JRE_API_DOCSDIR = $(DOCSDIR)/jre/api
PLATFORM_DOCSDIR = $(DOCSDIR)/platform
+ JAVADOC_ARCHIVE_NAME := jdk-$(FULL_VERSION)-docs.zip
+ JAVADOC_ARCHIVE_ASSEMBLY_DIR := $(DOCSTMPDIR)/docs-zip
+ JAVADOC_ARCHIVE_DIR := $(OUTPUT_ROOT)/bundles
+ JAVADOC_ARCHIVE := $(JAVADOC_ARCHIVE_DIR)/$(JAVADOC_ARCHIVE_NAME)
+
# The non-core api javadocs need to be able to access the root of the core
# api directory, so for jdk/api or jre/api to get to the core api/
# directory we would use this:
JDKJRE2COREAPI = ../../api
*** 327,336 ****
--- 332,372 ----
#
all: docs
docs: coredocs otherdocs
+ #
+ # Optional target which bundles all generated javadocs into a zip
+ # archive. The dependency on docs is handled in Main.gmk. Incremental
+ # building of docs is currently broken so if you invoke docs-zip after
+ # docs, the docs are always rebuilt.
+ #
+
+ docs-zip: $(JAVADOC_ARCHIVE)
+
+ #
+ # Add the core docs as prerequisite to the archive to trigger a rebuild
+ # if the core docs were rebuilt. Ideally any doc rebuild should trigger
+ # this, but the way prerequisites are currently setup in this file, that
+ # is hard to achieve.
+ #
+
+ $(JAVADOC_ARCHIVE): $(COREAPI_INDEX_FILE)
+ @$(ECHO) $(LOG_INFO) "Compressing javadoc to single $(JAVADOC_ARCHIVE_NAME)"
+ $(MKDIR) -p $(JAVADOC_ARCHIVE_DIR)
+ $(RM) -r $(JAVADOC_ARCHIVE_ASSEMBLY_DIR)
+ $(MKDIR) -p $(JAVADOC_ARCHIVE_ASSEMBLY_DIR)
+ all_roots=`$(FIND) $(DOCSDIR) | $(GREP) index.html | grep -v old/doclet `; \
+ pushd $(JAVADOC_ARCHIVE_ASSEMBLY_DIR); \
+ for index_file in $${all_roots} ; do \
+ target_dir=`dirname $${index_file}`; \
+ name=`$(ECHO) $${target_dir} | $(SED) "s;/spec;;" | $(SED) "s;.*/;;"`; \
+ $(LN) -s $${target_dir} $${name}; \
+ done; \
+ $(ZIP) -q -r $(JAVADOC_ARCHIVE) * ; \
+ popd ;
+
#################################################################
# Production Targets -- USE THESE TARGETS WHEN:
# a) You're generating docs outside of release engineering's
# standard control build.
# b) The docs will be pushed to the web and/or included in
*** 1370,1375 ****
# * MILESTONE defaults to internal unless set to beta, rc, or fcs on command line
#
#############################################################
.PHONY: all docs coredocs rel-docs otherdocs rel-coredocs \
! sanitycheckcoredocs $(ALL_OTHER_TARGETS)
--- 1406,1411 ----
# * MILESTONE defaults to internal unless set to beta, rc, or fcs on command line
#
#############################################################
.PHONY: all docs coredocs rel-docs otherdocs rel-coredocs \
! sanitycheckcoredocs $(ALL_OTHER_TARGETS) docs-zip