droiddoc.mk revision 88b607994a148f4af5bffee163e39ce8296750c6
1########################################################### 2## Standard rules for building documentation 3########################################################### 4 5LOCAL_IS_HOST_MODULE := $(strip $(LOCAL_IS_HOST_MODULE)) 6ifdef LOCAL_IS_HOST_MODULE 7my_prefix:=HOST_ 8else 9my_prefix:=TARGET_ 10endif 11 12LOCAL_MODULE_CLASS := $(strip $(LOCAL_MODULE_CLASS)) 13ifndef LOCAL_MODULE_CLASS 14$(error $(LOCAL_PATH): LOCAL_MODULE_CLASS not defined) 15endif 16 17full_src_files := $(patsubst %,$(LOCAL_PATH)/%,$(LOCAL_SRC_FILES)) 18out_dir := $(OUT_DOCS)/$(LOCAL_MODULE) 19full_target := $(OUT_DOCS)/$(LOCAL_MODULE)-timestamp 20 21ifeq ($(LOCAL_DROIDDOC_SOURCE_PATH),) 22LOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH) 23endif 24 25ifeq ($(LOCAL_DROIDDOC_TEMPLATE_DIR),) 26LOCAL_DROIDDOC_TEMPLATE_DIR := $(SRC_DROIDDOC_DIR)/templates 27endif 28ifeq ($(LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR),) 29LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := $(SRC_DROIDDOC_DIR)/templates 30endif 31 32ifeq ($(LOCAL_DROIDDOC_ASSET_DIR),) 33LOCAL_DROIDDOC_ASSET_DIR := assets 34endif 35ifeq ($(LOCAL_DROIDDOC_CUSTOM_ASSET_DIR),) 36LOCAL_DROIDDOC_CUSTOM_ASSET_DIR := assets 37endif 38 39droiddoc_templates := \ 40 $(shell find $(LOCAL_DROIDDOC_TEMPLATE_DIR) -type f) \ 41 $(shell find $(LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR) -type f) 42 43droiddoc := \ 44 $(HOST_JDK_TOOLS_JAR) \ 45 $(HOST_OUT_JAVA_LIBRARIES)/droiddoc$(COMMON_JAVA_PACKAGE_SUFFIX) \ 46 $(HOST_OUT_JAVA_LIBRARIES)/clearsilver$(COMMON_JAVA_PACKAGE_SUFFIX) \ 47 $(HOST_OUT_SHARED_LIBRARIES)/libclearsilver-jni$(HOST_JNILIB_SUFFIX) 48 49intermediates := $(call local-intermediates-dir) 50 51$(full_target): PRIVATE_CLASSPATH:=$(LOCAL_CLASSPATH) 52full_java_lib_deps := 53 54ifndef LOCAL_IS_HOST_MODULE 55 56ifeq ($(LOCAL_JAVA_LIBRARIES),) 57LOCAL_JAVA_LIBRARIES := core ext framework 58endif 59full_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) 60full_java_lib_deps := $(call java-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) 61 62# we're not going to generate docs from any of these classes, but we need them 63# to build properly. 64ifneq ($(strip $(LOCAL_STATIC_JAVA_LIBRARIES)),) 65full_java_libs += $(addprefix $(LOCAL_PATH)/,$(LOCAL_STATIC_JAVA_LIBRARIES)) $(LOCAL_CLASSPATH) 66full_java_lib_deps += $(addprefix $(LOCAL_PATH)/,$(LOCAL_STATIC_JAVA_LIBRARIES)) $(LOCAL_CLASSPATH) 67endif 68 69empty := 70space := $(empty) $(empty) 71$(full_target): PRIVATE_CLASSPATH := $(subst $(space),:,$(full_java_libs)) 72 73endif # !LOCAL_IS_HOST_MODULE 74 75$(full_target): PRIVATE_DOCLETPATH := $(HOST_OUT_JAVA_LIBRARIES)/clearsilver$(COMMON_JAVA_PACKAGE_SUFFIX):$(HOST_OUT_JAVA_LIBRARIES)/droiddoc$(COMMON_JAVA_PACKAGE_SUFFIX) 76$(full_target): PRIVATE_JAVA_FILES := $(filter %.java,$(full_src_files)) 77$(full_target): PRIVATE_JAVA_FILES += $(addprefix $($(my_prefix)OUT_COMMON_INTERMEDIATES)/, $(filter %.java,$(LOCAL_INTERMEDIATE_SOURCES))) 78$(full_target): PRIVATE_CURRENT_BUILD := -hdf page.build $(BUILD_ID)-$(BUILD_NUMBER) 79$(full_target): PRIVATE_CURRENT_TIME := -hdf page.now "$(shell date "+%d %b %Y %k:%M")" 80$(full_target): PRIVATE_OUT_DIR := $(out_dir) 81$(full_target): PRIVATE_DROIDDOC_OPTIONS := $(LOCAL_DROIDDOC_OPTIONS) 82$(full_target): PRIVATE_TEMPLATE_DIR := $(LOCAL_DROIDDOC_TEMPLATE_DIR) 83$(full_target): PRIVATE_CUSTOM_TEMPLATE_DIR := $(LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR) 84$(full_target): PRIVATE_IN_ASSET_DIR := $(LOCAL_DROIDDOC_TEMPLATE_DIR)/$(LOCAL_DROIDDOC_ASSET_DIR) 85$(full_target): PRIVATE_IN_CUSTOM_ASSET_DIR := $(LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR)/$(LOCAL_DROIDDOC_CUSTOM_ASSET_DIR) 86$(full_target): PRIVATE_OUT_ASSET_DIR := $(out_dir)/$(LOCAL_DROIDDOC_ASSET_DIR) 87$(full_target): PRIVATE_OUT_CUSTOM_ASSET_DIR := $(out_dir)/$(LOCAL_DROIDDOC_CUSTOM_ASSET_DIR) 88ifneq ($(strip $(LOCAL_DROIDDOC_HTML_DIR)),) 89$(full_target): PRIVATE_DROIDDOC_HTML_DIR := -htmldir $(LOCAL_PATH)/$(LOCAL_DROIDDOC_HTML_DIR) 90else 91$(full_target): PRIVATE_DROIDDOC_HTML_DIR := 92endif 93$(full_target): PRIVATE_LOCAL_PATH := $(LOCAL_PATH) 94$(full_target): PRIVATE_SOURCE_PATH := $(call normalize-path-list,$(LOCAL_DROIDDOC_SOURCE_PATH)) 95$(full_target): PRIVATE_SOURCE_INTERMEDIATES_DIR := $(intermediates)/src 96$(full_target): PRIVATE_SRC_LIST_FILE := $(intermediates)/droiddoc-src-list 97 98ifneq ($(strip $(LOCAL_ADDITIONAL_JAVA_DIR)),) 99$(full_target): PRIVATE_ADDITIONAL_JAVA_DIR := $(LOCAL_ADDITIONAL_JAVA_DIR) 100endif 101 102html_dir_files := $(shell find $(LOCAL_PATH)/$(LOCAL_DROIDDOC_HTML_DIR) -type f) 103 104ifeq (a,b) 105$(full_target): PRIVATE_PROFILING_OPTIONS := \ 106 -J-agentlib:jprofilerti=port=8849 -J-Xbootclasspath/a:/Applications/jprofiler5/bin/agent.jar 107endif 108 109$(full_target): $(full_src_files) $(droiddoc_templates) $(droiddoc) $(html_dir_files) $(full_java_lib_deps) 110 @echo Docs droiddoc: $(PRIVATE_OUT_DIR) 111 @mkdir -p $(dir $(full_target)) 112 @mkdir -p $(dir $(PRIVATE_SRC_LIST_FILE)) 113 $(call dump-words-to-file, $(PRIVATE_JAVA_FILES), $(PRIVATE_SRC_LIST_FILE)) 114 $(hide) find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java' >> $(PRIVATE_SRC_LIST_FILE) 2> /dev/null || true 115 $(hide) if [ "$(PRIVATE_ADDITIONAL_JAVA_DIR)" != "" ] ; then ( find $(PRIVATE_ADDITIONAL_JAVA_DIR) -name '*.java' >> $(PRIVATE_SRC_LIST_FILE) 2> /dev/null || true ) fi 116 $(hide) ( \ 117 \ 118 LD_LIBRARY_PATH=$(HOST_OUT_SHARED_LIBRARIES) \ 119 javadoc \ 120 \@$(PRIVATE_SRC_LIST_FILE) \ 121 -J-Xmx768m \ 122 -J-Djava.library.path=$(HOST_OUT_SHARED_LIBRARIES) \ 123 $(PRIVATE_PROFILING_OPTIONS) \ 124 -quiet \ 125 -doclet DroidDoc \ 126 -docletpath $(PRIVATE_DOCLETPATH) \ 127 -templatedir $(PRIVATE_CUSTOM_TEMPLATE_DIR) \ 128 -templatedir $(PRIVATE_TEMPLATE_DIR) \ 129 $(PRIVATE_DROIDDOC_HTML_DIR) \ 130 $(addprefix -classpath ,$(PRIVATE_CLASSPATH)) \ 131 -sourcepath $(PRIVATE_SOURCE_PATH)$(addprefix :,$(PRIVATE_CLASSPATH)) \ 132 -d $(PRIVATE_OUT_DIR) \ 133 $(PRIVATE_CURRENT_BUILD) $(PRIVATE_CURRENT_TIME) \ 134 $(PRIVATE_DROIDDOC_OPTIONS) \ 135 && rm -rf $(PRIVATE_OUT_ASSET_DIR) \ 136 && rm -rf $(PRIVATE_OUT_CUSTOM_ASSET_DIR) \ 137 && mkdir -p $(PRIVATE_OUT_ASSET_DIR) \ 138 && mkdir -p $(PRIVATE_OUT_CUSTOM_ASSET_DIR) \ 139 && cp -fr $(PRIVATE_IN_ASSET_DIR)/* $(PRIVATE_OUT_ASSET_DIR)/ \ 140 && cp -fr $(PRIVATE_IN_CUSTOM_ASSET_DIR)/* $(PRIVATE_OUT_CUSTOM_ASSET_DIR)/ \ 141 && touch -f $@ \ 142 ) || (rm -rf $(PRIVATE_OUT_DIR) $(PRIVATE_SRC_LIST_FILE); exit 45) 143 144ALL_DOCS += $(full_target) 145 146.PHONY: $(LOCAL_MODULE)-docs 147$(LOCAL_MODULE)-docs : $(full_target) 148 149# Define a rule to create a zip of these docs. 150out_zip := $(OUT_DOCS)/$(LOCAL_MODULE)-docs.zip 151$(out_zip): PRIVATE_DOCS_DIR := $(out_dir) 152$(out_zip): $(full_target) 153 @echo Package docs: $@ 154 @rm -f $@ 155 @mkdir -p $(dir $@) 156 $(hide) ( F=$$(pwd)/$@ ; cd $(PRIVATE_DOCS_DIR) && zip -rq $$F * ) 157 158$(call dist-for-goals,docs,$(out_zip)) 159