1 ########################################################### 2 ## Standard rules for building a java library. 3 ## 4 ########################################################### 5 $(call record-module-type,JAVA_LIBRARY) 6 7 ifdef LOCAL_IS_HOST_MODULE 8 $(error $(LOCAL_PATH): Host java libraries must use BUILD_HOST_JAVA_LIBRARY) 9 endif 10 11 LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX) 12 LOCAL_MODULE_CLASS := JAVA_LIBRARIES 13 14 ifneq (,$(LOCAL_ASSET_DIR)) 15 $(error $(LOCAL_PATH): Target java libraries may not set LOCAL_ASSET_DIR) 16 endif 17 18 ifneq (true,$(LOCAL_IS_STATIC_JAVA_LIBRARY)) 19 ifneq (,$(LOCAL_RESOURCE_DIR)) 20 $(error $(LOCAL_PATH): Target java libraries may not set LOCAL_RESOURCE_DIR) 21 endif 22 # base_rules.mk looks at this 23 all_res_assets := 24 endif 25 26 LOCAL_BUILT_MODULE_STEM := javalib.jar 27 28 ################################# 29 include $(BUILD_SYSTEM)/configure_local_jack.mk 30 ################################# 31 32 ifdef LOCAL_JACK_ENABLED 33 ifdef LOCAL_IS_STATIC_JAVA_LIBRARY 34 LOCAL_BUILT_MODULE_STEM := classes.jack 35 endif 36 endif 37 38 # For non-static java libraries, other modules should depend on 39 # out/target/common/obj/JAVA_LIBRARIES/.../javalib.jar (for jack) 40 # or out/target/common/obj/JAVA_LIBRARIES/.../classes.jar (for javac). 41 # For static java libraries, other modules should depend on 42 # out/target/common/obj/JAVA_LIBRARIES/.../classes.jar 43 # There are some dependencies outside the build system that assume static 44 # java libraries produce javalib.jar, so we will copy classes.jar there too. 45 intermediates.COMMON := $(call local-intermediates-dir,COMMON) 46 common_javalib.jar := $(intermediates.COMMON)/javalib.jar 47 LOCAL_INTERMEDIATE_TARGETS += $(common_javalib.jar) 48 49 ifeq ($(LOCAL_PROGUARD_ENABLED),disabled) 50 LOCAL_PROGUARD_ENABLED := 51 endif 52 53 ifeq (true,$(EMMA_INSTRUMENT)) 54 ifeq (true,$(LOCAL_EMMA_INSTRUMENT)) 55 ifeq (true,$(EMMA_INSTRUMENT_STATIC)) 56 ifdef LOCAL_JACK_ENABLED 57 # Jack supports coverage with Jacoco 58 LOCAL_STATIC_JAVA_LIBRARIES += jacocoagent 59 else 60 LOCAL_STATIC_JAVA_LIBRARIES += emma 61 endif # LOCAL_JACK_ENABLED 62 endif # LOCAL_EMMA_INSTRUMENT 63 endif # EMMA_INSTRUMENT_STATIC 64 else 65 LOCAL_EMMA_INSTRUMENT := false 66 endif # EMMA_INSTRUMENT 67 68 ################################# 69 include $(BUILD_SYSTEM)/java.mk 70 ################################# 71 72 ifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true) 73 # There are some dependencies outside the build system that assume classes.jar 74 # is available as javalib.jar so copy it there too. 75 $(eval $(call copy-one-file,$(full_classes_jar),$(common_javalib.jar))) 76 77 ifdef LOCAL_JACK_ENABLED 78 $(eval $(call copy-one-file,$(full_classes_jack),$(LOCAL_BUILT_MODULE))) 79 else 80 $(eval $(call copy-one-file,$(full_classes_jar),$(LOCAL_BUILT_MODULE))) 81 endif 82 83 else # !LOCAL_IS_STATIC_JAVA_LIBRARY 84 85 $(common_javalib.jar): PRIVATE_DEX_FILE := $(built_dex) 86 $(common_javalib.jar): PRIVATE_SOURCE_ARCHIVE := $(full_classes_pre_proguard_jar) 87 $(common_javalib.jar): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS) 88 $(common_javalib.jar) : $(built_dex) $(java_resource_sources) | $(ZIPTIME) 89 @echo "target Jar: $(PRIVATE_MODULE) ($@)" 90 ifdef LOCAL_JACK_ENABLED 91 $(create-empty-package) 92 else 93 $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@) 94 endif 95 $(add-dex-to-package) 96 ifdef LOCAL_JACK_ENABLED 97 $(add-carried-jack-resources) 98 endif 99 $(remove-timestamps-from-package) 100 101 ifdef LOCAL_DEX_PREOPT 102 ifneq ($(dexpreopt_boot_jar_module),) # boot jar 103 # boot jar's rules are defined in dex_preopt.mk 104 dexpreopted_boot_jar := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(dexpreopt_boot_jar_module)_nodex.jar 105 $(eval $(call copy-one-file,$(dexpreopted_boot_jar),$(LOCAL_BUILT_MODULE))) 106 107 # For libart boot jars, we don't have .odex files. 108 else # ! boot jar 109 $(built_odex): PRIVATE_MODULE := $(LOCAL_MODULE) 110 # Use pattern rule - we may have multiple built odex files. 111 $(built_odex) : $(dir $(LOCAL_BUILT_MODULE))% : $(common_javalib.jar) 112 @echo "Dexpreopt Jar: $(PRIVATE_MODULE) ($@)" 113 $(call dexpreopt-one-file,$<,$@) 114 115 $(eval $(call copy-one-file,$(common_javalib.jar),$(LOCAL_BUILT_MODULE))) 116 ifneq (nostripping,$(LOCAL_DEX_PREOPT)) 117 $(call dexpreopt-remove-classes.dex,$@) 118 endif 119 120 endif # ! boot jar 121 122 else # LOCAL_DEX_PREOPT 123 $(eval $(call copy-one-file,$(common_javalib.jar),$(LOCAL_BUILT_MODULE))) 124 125 endif # LOCAL_DEX_PREOPT 126 endif # !LOCAL_IS_STATIC_JAVA_LIBRARY 127