github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/make/core/droiddoc.mk (about)

     1  #
     2  # Copyright (C) 2008 The Android Open Source Project
     3  #
     4  # Licensed under the Apache License, Version 2.0 (the "License");
     5  # you may not use this file except in compliance with the License.
     6  # You may obtain a copy of the License at
     7  #
     8  #      http://www.apache.org/licenses/LICENSE-2.0
     9  #
    10  # Unless required by applicable law or agreed to in writing, software
    11  # distributed under the License is distributed on an "AS IS" BASIS,
    12  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  # See the License for the specific language governing permissions and
    14  # limitations under the License.
    15  #
    16  
    17  $(call record-module-type,DROIDDOC)
    18  ###########################################################
    19  ## Common logic to both droiddoc and javadoc
    20  ###########################################################
    21  LOCAL_IS_HOST_MODULE := $(call true-or-empty,$(LOCAL_IS_HOST_MODULE))
    22  ifeq ($(LOCAL_IS_HOST_MODULE),true)
    23  my_prefix := HOST_
    24  LOCAL_HOST_PREFIX :=
    25  else
    26  my_prefix := TARGET_
    27  endif
    28  
    29  LOCAL_MODULE_CLASS := $(strip $(LOCAL_MODULE_CLASS))
    30  ifndef LOCAL_MODULE_CLASS
    31  $(error $(LOCAL_PATH): LOCAL_MODULE_CLASS not defined)
    32  endif
    33  
    34  full_src_files := $(patsubst %,$(LOCAL_PATH)/%,$(LOCAL_SRC_FILES))
    35  out_dir := $(OUT_DOCS)/$(LOCAL_MODULE)
    36  full_target := $(call doc-timestamp-for,$(LOCAL_MODULE))
    37  
    38  ifeq ($(LOCAL_DROIDDOC_SOURCE_PATH),)
    39  LOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH)
    40  endif
    41  
    42  ifeq ($(LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR),)
    43  LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := $(SRC_DROIDDOC_DIR)/$(LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR)
    44  endif
    45  
    46  ifeq ($(LOCAL_DROIDDOC_ASSET_DIR),)
    47  LOCAL_DROIDDOC_ASSET_DIR := assets
    48  endif
    49  ifeq ($(LOCAL_DROIDDOC_CUSTOM_ASSET_DIR),)
    50  LOCAL_DROIDDOC_CUSTOM_ASSET_DIR := assets
    51  endif
    52  
    53  ifeq ($(LOCAL_IS_HOST_MODULE),true)
    54  
    55  $(full_target): PRIVATE_BOOTCLASSPATH :=
    56  full_java_libs := $(addprefix $(HOST_OUT_JAVA_LIBRARIES)/,\
    57    $(addsuffix $(COMMON_JAVA_PACKAGE_SUFFIX),$(LOCAL_JAVA_LIBRARIES)))
    58  
    59  else
    60  
    61  ifneq ($(LOCAL_SDK_VERSION),)
    62    ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),current)
    63      # Use android_stubs_current if LOCAL_SDK_VERSION is current and no TARGET_BUILD_APPS.
    64      LOCAL_JAVA_LIBRARIES := android_stubs_current $(LOCAL_JAVA_LIBRARIES)
    65      $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_stubs_current)
    66    else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),system_current)
    67      LOCAL_JAVA_LIBRARIES := android_system_stubs_current $(LOCAL_JAVA_LIBRARIES)
    68      $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_system_stubs_current)
    69    else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),test_current)
    70      LOCAL_JAVA_LIBRARIES := android_test_stubs_current $(LOCAL_JAVA_LIBRARIES)
    71      $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, android_test_stubs_current)
    72    else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),core_current)
    73      LOCAL_JAVA_LIBRARIES := core.current.stubs $(LOCAL_JAVA_LIBRARIES)
    74      $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, core.current.stubs)
    75    else
    76      # core_<ver> is subset of <ver>. Instead of defining a prebuilt lib for core_<ver>,
    77      # use the stub for <ver> when building for apps.
    78      _version := $(patsubst core_%,%,$(LOCAL_SDK_VERSION))
    79      LOCAL_JAVA_LIBRARIES := sdk_v$(_version) $(LOCAL_JAVA_LIBRARIES)
    80      $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, sdk_v$(_version))
    81      _version :=
    82    endif
    83  else
    84    ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true)
    85      LOCAL_JAVA_LIBRARIES := core-oj core-libart
    86    else
    87      LOCAL_JAVA_LIBRARIES := core-oj core-libart ext framework $(LOCAL_JAVA_LIBRARIES)
    88    endif
    89    $(full_target): PRIVATE_BOOTCLASSPATH := $(call java-lib-files, core-oj):$(call java-lib-files, core-libart)
    90  endif  # LOCAL_SDK_VERSION
    91  LOCAL_JAVA_LIBRARIES := $(sort $(LOCAL_JAVA_LIBRARIES))
    92  
    93  full_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES)) $(LOCAL_CLASSPATH)
    94  endif # !LOCAL_IS_HOST_MODULE
    95  
    96  $(full_target): PRIVATE_CLASSPATH := $(call normalize-path-list,$(full_java_libs))
    97  
    98  intermediates.COMMON := $(call local-intermediates-dir,COMMON)
    99  
   100  $(full_target): PRIVATE_SOURCE_PATH := $(call normalize-path-list,$(LOCAL_DROIDDOC_SOURCE_PATH))
   101  $(full_target): PRIVATE_JAVA_FILES := $(filter %.java,$(full_src_files))
   102  $(full_target): PRIVATE_JAVA_FILES += $(addprefix $($(my_prefix)OUT_COMMON_INTERMEDIATES)/, $(filter %.java,$(LOCAL_INTERMEDIATE_SOURCES)))
   103  $(full_target): PRIVATE_JAVA_FILES += $(filter %.java,$(LOCAL_GENERATED_SOURCES))
   104  $(full_target): PRIVATE_SRCJARS := $(LOCAL_SRCJARS)
   105  $(full_target): PRIVATE_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/src
   106  $(full_target): PRIVATE_SRCJAR_INTERMEDIATES_DIR := $(intermediates.COMMON)/srcjars
   107  $(full_target): PRIVATE_SRC_LIST_FILE := $(intermediates.COMMON)/droiddoc-src-list
   108  $(full_target): PRIVATE_SRCJAR_LIST_FILE := $(intermediates.COMMON)/droiddoc-srcjar-list
   109  
   110  ifneq ($(strip $(LOCAL_ADDITIONAL_JAVA_DIR)),)
   111  $(full_target): PRIVATE_ADDITIONAL_JAVA_DIR := $(LOCAL_ADDITIONAL_JAVA_DIR)
   112  endif
   113  
   114  $(full_target): PRIVATE_OUT_DIR := $(out_dir)
   115  $(full_target): PRIVATE_DROIDDOC_OPTIONS := $(LOCAL_DROIDDOC_OPTIONS)
   116  $(full_target): PRIVATE_STUB_OUT_DIR := $(LOCAL_DROIDDOC_STUB_OUT_DIR)
   117  $(full_target): PRIVATE_METALAVA_DOCS_STUB_OUT_DIR := $(LOCAL_DROIDDOC_METALAVA_DOCS_STUB_OUT_DIR)
   118  
   119  # Lists the input files for the doc build into a text file
   120  # suitable for the @ syntax of javadoc.
   121  # $(1): the file to create
   122  # $(2): files to include
   123  # $(3): list of directories to search for java files in
   124  define prepare-doc-source-list
   125  $(hide) mkdir -p $(dir $(1))
   126  $(call dump-words-to-file, $(2), $(1))
   127  $(hide) for d in $(3) ; do find $$d -name '*.java' -and -not -name '.*' >> $(1) 2> /dev/null ; done ; true
   128  endef
   129  
   130  ###########################################################
   131  ## Logic for droiddoc only
   132  ###########################################################
   133  ifneq ($(strip $(LOCAL_DROIDDOC_USE_STANDARD_DOCLET)),true)
   134  
   135  droiddoc_templates := \
   136      $(sort $(shell find $(LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR) -type f $(if $(ALLOW_MISSING_DEPENDENCIES),2>/dev/null)))
   137  
   138  ifdef ALLOW_MISSING_DEPENDENCIES
   139    ifndef droiddoc_templates
   140      droiddoc_templates := $(LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR)
   141    endif
   142  endif
   143  
   144  $(full_target): PRIVATE_DOCLETPATH := $(HOST_OUT_JAVA_LIBRARIES)/jsilver$(COMMON_JAVA_PACKAGE_SUFFIX):$(HOST_OUT_JAVA_LIBRARIES)/doclava$(COMMON_JAVA_PACKAGE_SUFFIX)
   145  $(full_target): PRIVATE_CURRENT_BUILD := -hdf page.build $(BUILD_ID)-$(BUILD_NUMBER_FROM_FILE)
   146  $(full_target): PRIVATE_CURRENT_TIME :=  -hdf page.now "$$($(DATE_FROM_FILE) "+%d %b %Y %k:%M")"
   147  $(full_target): PRIVATE_CUSTOM_TEMPLATE_DIR := $(LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR)
   148  $(full_target): PRIVATE_IN_CUSTOM_ASSET_DIR := $(LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR)/$(LOCAL_DROIDDOC_CUSTOM_ASSET_DIR)
   149  $(full_target): PRIVATE_OUT_ASSET_DIR := $(out_dir)/$(LOCAL_DROIDDOC_ASSET_DIR)
   150  $(full_target): PRIVATE_OUT_CUSTOM_ASSET_DIR := $(out_dir)/$(LOCAL_DROIDDOC_CUSTOM_ASSET_DIR)
   151  
   152  html_dir_files :=
   153  ifneq ($(strip $(LOCAL_DROIDDOC_HTML_DIR)),)
   154  $(full_target): PRIVATE_DROIDDOC_HTML_DIR := -htmldir $(LOCAL_PATH)/$(LOCAL_DROIDDOC_HTML_DIR)
   155  html_dir_files := $(sort $(shell find $(LOCAL_PATH)/$(LOCAL_DROIDDOC_HTML_DIR) -type f))
   156  else
   157  $(full_target): PRIVATE_DROIDDOC_HTML_DIR :=
   158  endif
   159  ifneq ($(strip $(LOCAL_ADDITIONAL_HTML_DIR)),)
   160  $(full_target): PRIVATE_ADDITIONAL_HTML_DIR := -htmldir2 $(LOCAL_PATH)/$(LOCAL_ADDITIONAL_HTML_DIR)
   161  else
   162  $(full_target): PRIVATE_ADDITIONAL_HTML_DIR :=
   163  endif
   164  
   165  # TODO(nanzhang): Remove it if this is not used any more
   166  $(full_target): PRIVATE_LOCAL_PATH := $(LOCAL_PATH)
   167  
   168  ifeq ($(strip $(LOCAL_DROIDDOC_USE_METALAVA)),true)
   169  ifneq ($(LOCAL_DROIDDOC_METALAVA_PREVIOUS_API),)
   170  $(full_target): PRIVATE_DROIDDOC_METALAVA_PREVIOUS_API := --previous-api $(LOCAL_DROIDDOC_METALAVA_PREVIOUS_API)
   171  else
   172  $(full_target): PRIVATE_DROIDDOC_METALAVA_PREVIOUS_API :=
   173  endif #!LOCAL_DROIDDOC_METALAVA_PREVIOUS_API
   174  
   175  metalava_annotations_deps :=
   176  ifeq ($(strip $(LOCAL_DROIDDOC_METALAVA_ANNOTATIONS_ENABLED)),true)
   177  ifeq ($(LOCAL_DROIDDOC_METALAVA_PREVIOUS_API),)
   178  $(error $(LOCAL_PATH): LOCAL_DROIDDOC_METALAVA_PREVIOUS_API has to be non-empty if metalava annotations was enabled!)
   179  endif
   180  ifeq ($(LOCAL_DROIDDOC_METALAVA_MERGE_ANNOTATIONS_DIR),)
   181  $(error $(LOCAL_PATH): LOCAL_DROIDDOC_METALAVA_MERGE_ANNOTATIONS_DIR has to be non-empty if metalava annotations was enabled!)
   182  endif
   183  
   184  $(full_target): PRIVATE_DROIDDOC_METALAVA_ANNOTATIONS := --include-annotations --migrate-nullness \
   185      --extract-annotations $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(LOCAL_MODULE)_annotations.zip \
   186      --merge-annotations $(LOCAL_DROIDDOC_METALAVA_MERGE_ANNOTATIONS_DIR) \
   187      --hide HiddenTypedefConstant --hide SuperfluousPrefix --hide AnnotationExtraction
   188  metalava_annotations_deps := $(sort $(shell find $(LOCAL_DROIDDOC_METALAVA_MERGE_ANNOTATIONS_DIR) -type f))
   189  else
   190  $(full_target): PRIVATE_DROIDDOC_METALAVA_ANNOTATIONS :=
   191  endif #LOCAL_DROIDDOC_METALAVA_ANNOTATIONS_ENABLED=true
   192  
   193  ifneq (,$(filter --generate-documentation,$(LOCAL_DROIDDOC_OPTIONS)))
   194  
   195  pos = $(if $(findstring $1,$2),$(call pos,$1,$(wordlist 2,$(words $2),$2),x $3),$3)
   196  metalava_args := $(wordlist 1, $(words $(call pos,--generate-documentation,$(LOCAL_DROIDDOC_OPTIONS))), \
   197      $(LOCAL_DROIDDOC_OPTIONS))
   198  remaining_args :=  $(wordlist $(words $(call pos,--generate-documentation,$(LOCAL_DROIDDOC_OPTIONS))), \
   199      $(words $(LOCAL_DROIDDOC_OPTIONS)), $(LOCAL_DROIDDOC_OPTIONS))
   200  doclava_args := $(wordlist 2, $(words $(remaining_args)), $(remaining_args))
   201  
   202  $(full_target): \
   203          $(full_src_files) $(LOCAL_GENERATED_SOURCES) \
   204          $(droiddoc_templates) \
   205          $(HOST_JDK_TOOLS_JAR) \
   206          $(HOST_OUT_JAVA_LIBRARIES)/jsilver$(COMMON_JAVA_PACKAGE_SUFFIX) \
   207          $(HOST_OUT_JAVA_LIBRARIES)/doclava$(COMMON_JAVA_PACKAGE_SUFFIX) \
   208          $(HOST_OUT_JAVA_LIBRARIES)/metalava$(COMMON_JAVA_PACKAGE_SUFFIX) \
   209          $(html_dir_files) \
   210          $(full_java_libs) \
   211          $(ZIPSYNC) \
   212          $(LOCAL_SRCJARS) \
   213          $(LOCAL_ADDITIONAL_DEPENDENCIES) \
   214          $(LOCAL_DROIDDOC_METALAVA_PREVIOUS_API) \
   215          $(metalava_annotations_deps)
   216  	@echo metalava based docs: $(PRIVATE_OUT_DIR)
   217  	$(hide) mkdir -p $(dir $@)
   218  	$(hide) rm -rf $(PRIVATE_STUB_OUT_DIR)
   219  	$(hide) rm -rf $(PRIVATE_METALAVA_DOCS_STUB_OUT_DIR)
   220  	$(call prepare-doc-source-list,$(PRIVATE_SRC_LIST_FILE),$(PRIVATE_JAVA_FILES), \
   221  			$(PRIVATE_SOURCE_INTERMEDIATES_DIR) $(PRIVATE_ADDITIONAL_JAVA_DIR))
   222  	$(ZIPSYNC) -d $(PRIVATE_SRCJAR_INTERMEDIATES_DIR) -l $(PRIVATE_SRCJAR_LIST_FILE) -f "*.java" $(PRIVATE_SRCJARS)
   223  	$(hide) ( \
   224  		$(JAVA) -jar $(HOST_OUT_JAVA_LIBRARIES)/metalava$(COMMON_JAVA_PACKAGE_SUFFIX) \
   225                  -encoding UTF-8 -source 1.8 \@$(PRIVATE_SRC_LIST_FILE) \@$(PRIVATE_SRCJAR_LIST_FILE) \
   226                  $(addprefix -bootclasspath ,$(PRIVATE_BOOTCLASSPATH)) \
   227                  $(addprefix -classpath ,$(PRIVATE_CLASSPATH)) \
   228                  --sourcepath $(PRIVATE_SOURCE_PATH) \
   229                  --no-banner --color --quiet \
   230                  $(addprefix --stubs ,$(PRIVATE_STUB_OUT_DIR)) \
   231                  $(addprefix --doc-stubs ,$(PRIVATE_METALAVA_DOCS_STUB_OUT_DIR)) \
   232                  --write-stubs-source-list $(intermediates.COMMON)/stubs-src-list \
   233                  $(metalava_args) $(PRIVATE_DROIDDOC_METALAVA_PREVIOUS_API) $(PRIVATE_DROIDDOC_METALAVA_ANNOTATIONS) \
   234                  $(JAVADOC) -encoding UTF-8 -source 1.8 STUBS_SOURCE_LIST \
   235                  -J-Xmx1600m -J-XX:-OmitStackTraceInFastThrow -XDignore.symbol.file \
   236                  -quiet -doclet com.google.doclava.Doclava -docletpath $(PRIVATE_DOCLETPATH) \
   237                  -templatedir $(PRIVATE_CUSTOM_TEMPLATE_DIR) \
   238                  $(PRIVATE_DROIDDOC_HTML_DIR) $(PRIVATE_ADDITIONAL_HTML_DIR) \
   239                  $(addprefix -bootclasspath ,$(PRIVATE_BOOTCLASSPATH)) \
   240                  $(addprefix -classpath ,$(PRIVATE_CLASSPATH)) \
   241                  -sourcepath $(PRIVATE_SOURCE_PATH) \
   242                  -d $(PRIVATE_OUT_DIR) \
   243                  $(PRIVATE_CURRENT_BUILD) $(PRIVATE_CURRENT_TIME) $(doclava_args) \
   244          && touch -f $@ ) || (rm -rf $(PRIVATE_OUT_DIR) $(PRIVATE_SRC_LIST_FILE); exit 45)
   245  else
   246  # no docs generation
   247  $(full_target): \
   248          $(full_src_files) $(LOCAL_GENERATED_SOURCES) \
   249          $(full_java_libs) \
   250          $(HOST_OUT_JAVA_LIBRARIES)/metalava$(COMMON_JAVA_PACKAGE_SUFFIX) \
   251          $(ZIPSYNC) \
   252          $(LOCAL_SRCJARS) \
   253          $(LOCAL_ADDITIONAL_DEPENDENCIES)
   254  	@echo metalava based stubs: $@
   255  	$(hide) mkdir -p $(dir $@)
   256  	$(hide) rm -rf $(PRIVATE_STUB_OUT_DIR)
   257  	$(call prepare-doc-source-list,$(PRIVATE_SRC_LIST_FILE),$(PRIVATE_JAVA_FILES), \
   258  			$(PRIVATE_SOURCE_INTERMEDIATES_DIR) $(PRIVATE_ADDITIONAL_JAVA_DIR))
   259  	$(ZIPSYNC) -d $(PRIVATE_SRCJAR_INTERMEDIATES_DIR) -l $(PRIVATE_SRCJAR_LIST_FILE) -f "*.java" $(PRIVATE_SRCJARS)
   260  	$(hide) ( \
   261  		$(JAVA) -jar $(HOST_OUT_JAVA_LIBRARIES)/metalava$(COMMON_JAVA_PACKAGE_SUFFIX) \
   262                  -encoding UTF-8 -source 1.8 \@$(PRIVATE_SRC_LIST_FILE) \@$(PRIVATE_SRCJAR_LIST_FILE) \
   263                  $(addprefix -bootclasspath ,$(PRIVATE_BOOTCLASSPATH)) \
   264                  $(addprefix -classpath ,$(PRIVATE_CLASSPATH)) \
   265                  --sourcepath $(PRIVATE_SOURCE_PATH) \
   266                  $(PRIVATE_DROIDDOC_OPTIONS) $(PRIVATE_DROIDDOC_METALAVA_PREVIOUS_API) $(PRIVATE_DROIDDOC_METALAVA_ANNOTATIONS) \
   267                  --no-banner --color --quiet \
   268                  $(addprefix --stubs ,$(PRIVATE_STUB_OUT_DIR)) \
   269          && touch -f $@ ) || (rm -rf $(PRIVATE_SRC_LIST_FILE); exit 45)
   270  
   271  endif # stubs + docs generation
   272  ifeq ($(strip $(LOCAL_DROIDDOC_METALAVA_ANNOTATIONS_ENABLED)),true)
   273  $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(LOCAL_MODULE)_annotations.zip: $(full_target)
   274  endif
   275  
   276  else # doclava based droiddoc generation
   277  
   278  # TODO(tobiast): Clean this up once we move to -source 1.9.
   279  # OpenJDK 9 does not have the concept of a "boot classpath" so we should
   280  # then rename PRIVATE_BOOTCLASSPATH to PRIVATE_MODULE or similar. For now,
   281  # keep -bootclasspath here since it works in combination with -source 1.8.
   282  $(full_target): \
   283          $(full_src_files) $(LOCAL_GENERATED_SOURCES) \
   284          $(droiddoc_templates) \
   285          $(HOST_JDK_TOOLS_JAR) \
   286          $(HOST_OUT_JAVA_LIBRARIES)/jsilver$(COMMON_JAVA_PACKAGE_SUFFIX) \
   287          $(HOST_OUT_JAVA_LIBRARIES)/doclava$(COMMON_JAVA_PACKAGE_SUFFIX) \
   288          $(html_dir_files) \
   289          $(full_java_libs) \
   290          $(ZIPSYNC) \
   291          $(LOCAL_SRCJARS) \
   292          $(LOCAL_ADDITIONAL_DEPENDENCIES)
   293  	@echo Docs droiddoc: $(PRIVATE_OUT_DIR)
   294  	$(hide) mkdir -p $(dir $@)
   295  	$(hide) rm -rf $(PRIVATE_STUB_OUT_DIR)
   296  	$(call prepare-doc-source-list,$(PRIVATE_SRC_LIST_FILE),$(PRIVATE_JAVA_FILES), \
   297  			$(PRIVATE_SOURCE_INTERMEDIATES_DIR) $(PRIVATE_ADDITIONAL_JAVA_DIR))
   298  	$(ZIPSYNC) -d $(PRIVATE_SRCJAR_INTERMEDIATES_DIR) -l $(PRIVATE_SRCJAR_LIST_FILE) -f "*.java" $(PRIVATE_SRCJARS)
   299  	$(hide) ( \
   300  		$(JAVADOC) \
   301                  -encoding UTF-8 -source 1.8 \@$(PRIVATE_SRC_LIST_FILE) \@$(PRIVATE_SRCJAR_LIST_FILE) \
   302                  -J-Xmx1600m -J-XX:-OmitStackTraceInFastThrow -XDignore.symbol.file \
   303                  -quiet -doclet com.google.doclava.Doclava -docletpath $(PRIVATE_DOCLETPATH) \
   304                  -templatedir $(PRIVATE_CUSTOM_TEMPLATE_DIR) \
   305                  $(PRIVATE_DROIDDOC_HTML_DIR) $(PRIVATE_ADDITIONAL_HTML_DIR) \
   306                  $(addprefix -bootclasspath ,$(PRIVATE_BOOTCLASSPATH)) \
   307                  $(addprefix -classpath ,$(PRIVATE_CLASSPATH)) \
   308                  -sourcepath $(PRIVATE_SOURCE_PATH)$(addprefix :,$(PRIVATE_CLASSPATH)) \
   309                  -d $(PRIVATE_OUT_DIR) \
   310                  $(PRIVATE_CURRENT_BUILD) $(PRIVATE_CURRENT_TIME) $(PRIVATE_DROIDDOC_OPTIONS) \
   311                  $(addprefix -stubs ,$(PRIVATE_STUB_OUT_DIR)) \
   312          && touch -f $@ ) || (rm -rf $(PRIVATE_OUT_DIR) $(PRIVATE_SRC_LIST_FILE); exit 45)
   313  endif #LOCAL_DROIDDOC_USE_METALAVA
   314  
   315  else
   316  
   317  ###########################################################
   318  ## Logic for javadoc only
   319  ###########################################################
   320  ifdef USE_OPENJDK9
   321  # For OpenJDK 9 we use --patch-module to define the core libraries code.
   322  # TODO(tobiast): Reorganize this when adding proper support for OpenJDK 9
   323  # modules. Here we treat all code in core libraries as being in java.base
   324  # to work around the OpenJDK 9 module system. http://b/62049770
   325  $(full_target): PRIVATE_BOOTCLASSPATH_ARG := --patch-module=java.base=$(PRIVATE_BOOTCLASSPATH)
   326  else
   327  # For OpenJDK 8 we can use -bootclasspath to define the core libraries code.
   328  $(full_target): PRIVATE_BOOTCLASSPATH_ARG := $(addprefix -bootclasspath ,$(PRIVATE_BOOTCLASSPATH))
   329  endif
   330  $(full_target): $(full_src_files) $(LOCAL_GENERATED_SOURCES) $(full_java_libs) $(ZIPSYNC) $(LOCAL_SRCJARS) $(LOCAL_ADDITIONAL_DEPENDENCIES)
   331  	@echo Docs javadoc: $(PRIVATE_OUT_DIR)
   332  	@mkdir -p $(dir $@)
   333  	$(call prepare-doc-source-list,$(PRIVATE_SRC_LIST_FILE),$(PRIVATE_JAVA_FILES), \
   334  			$(PRIVATE_SOURCE_INTERMEDIATES_DIR) $(PRIVATE_ADDITIONAL_JAVA_DIR))
   335  	$(ZIPSYNC) -d $(PRIVATE_SRCJAR_INTERMEDIATES_DIR) -l $(PRIVATE_SRCJAR_LIST_FILE) -f "*.java" $(PRIVATE_SRCJARS)
   336  	$(hide) ( \
   337  		$(JAVADOC) -encoding UTF-8 \@$(PRIVATE_SRC_LIST_FILE) \@$(PRIVATE_SRCJAR_LIST_FILE) \
   338                  $(PRIVATE_DROIDDOC_OPTIONS) -J-Xmx1024m -XDignore.symbol.file -Xdoclint:none -quiet \
   339                  $(addprefix -classpath ,$(PRIVATE_CLASSPATH)) $(PRIVATE_BOOTCLASSPATH_ARG) \
   340                  -sourcepath $(PRIVATE_SOURCE_PATH) \
   341                  -d $(PRIVATE_OUT_DIR) \
   342          && touch -f $@ \
   343      ) || (rm -rf $(PRIVATE_OUT_DIR) $(PRIVATE_SRC_LIST_FILE); exit 45)
   344  
   345  endif # !LOCAL_DROIDDOC_USE_STANDARD_DOCLET
   346  
   347  ALL_DOCS += $(full_target)
   348  
   349  .PHONY: $(LOCAL_MODULE)-docs
   350  $(LOCAL_MODULE)-docs : $(full_target)
   351  
   352  ifeq ($(strip $(LOCAL_UNINSTALLABLE_MODULE)),)
   353  
   354  # Define a rule to create a zip of these docs.
   355  out_zip := $(OUT_DOCS)/$(LOCAL_MODULE)-docs.zip
   356  $(out_zip): PRIVATE_DOCS_DIR := $(out_dir)
   357  $(out_zip): $(full_target)
   358  	@echo Package docs: $@
   359  	@rm -f $@
   360  	@mkdir -p $(dir $@)
   361  	$(hide) ( F=$$(pwd)/$@ ; cd $(PRIVATE_DOCS_DIR) && zip -rqX $$F * )
   362  
   363  $(LOCAL_MODULE)-docs.zip : $(out_zip)
   364  
   365  $(call dist-for-goals,docs,$(out_zip))
   366  
   367  endif #!LOCAL_UNINSTALLABLE_MODULE