--- old/make/Javadoc.gmk 2020-05-18 15:18:54.593935687 +0200 +++ new/make/Javadoc.gmk 2020-05-18 15:18:54.464934455 +0200 @@ -221,6 +221,11 @@ 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: @@ -329,6 +334,37 @@ 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 @@ -1372,4 +1408,4 @@ ############################################################# .PHONY: all docs coredocs rel-docs otherdocs rel-coredocs \ - sanitycheckcoredocs $(ALL_OTHER_TARGETS) + sanitycheckcoredocs $(ALL_OTHER_TARGETS) docs-zip