188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Standard rules for building a java library.
388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project##
488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifdef LOCAL_IS_HOST_MODULE
788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(error $(LOCAL_PATH): Host java libraries must use BUILD_HOST_JAVA_LIBRARY)
888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
1088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectLOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
1188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectLOCAL_MODULE_CLASS := JAVA_LIBRARIES
1288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
1388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq (,$(LOCAL_ASSET_DIR))
1488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(error $(LOCAL_PATH): Target java libraries may not set LOCAL_ASSET_DIR)
1588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
1688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
1720e2083ea0f8bae57ace17f098e7fe71a9625f84Ying Wangifneq (true,$(LOCAL_IS_STATIC_JAVA_LIBRARY))
1888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq (,$(LOCAL_RESOURCE_DIR))
1988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(error $(LOCAL_PATH): Target java libraries may not set LOCAL_RESOURCE_DIR)
2088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
21576e0146a91f0f092cf67208c864ab9635b42222Ying Wang# base_rules.mk looks at this
2288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectall_res_assets :=
23576e0146a91f0f092cf67208c864ab9635b42222Ying Wangendif
2488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
2588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectLOCAL_BUILT_MODULE_STEM := javalib.jar
2688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
2730090e41e31e7db34a1092d8173c1413c036b49dYing Wangintermediates.COMMON := $(call local-intermediates-dir,COMMON)
2830090e41e31e7db34a1092d8173c1413c036b49dYing Wang
29a83940fa7851b35712e559be2246b56b5666b805Ying Wang# This file will be the one that other modules should depend on.
30a83940fa7851b35712e559be2246b56b5666b805Ying Wangcommon_javalib.jar := $(intermediates.COMMON)/$(LOCAL_BUILT_MODULE_STEM)
31a83940fa7851b35712e559be2246b56b5666b805Ying WangLOCAL_INTERMEDIATE_TARGETS += $(common_javalib.jar)
32a83940fa7851b35712e559be2246b56b5666b805Ying Wang
33ba71aba939dc58a3278646039337f13d17e65ef2Ying Wangifeq ($(LOCAL_PROGUARD_ENABLED),disabled)
34ba71aba939dc58a3278646039337f13d17e65ef2Ying Wang  LOCAL_PROGUARD_ENABLED :=
35ba71aba939dc58a3278646039337f13d17e65ef2Ying Wangendif
36ba71aba939dc58a3278646039337f13d17e65ef2Ying Wang
37af4800c8a6a9266ceb7269bd2c6b0bb2f0965beaYing Wangifeq (true,$(EMMA_INSTRUMENT))
38af4800c8a6a9266ceb7269bd2c6b0bb2f0965beaYing Wangifeq (true,$(LOCAL_EMMA_INSTRUMENT))
39af4800c8a6a9266ceb7269bd2c6b0bb2f0965beaYing Wangifeq (true,$(EMMA_INSTRUMENT_STATIC))
40af4800c8a6a9266ceb7269bd2c6b0bb2f0965beaYing WangLOCAL_STATIC_JAVA_LIBRARIES += emma
41af4800c8a6a9266ceb7269bd2c6b0bb2f0965beaYing Wangendif # LOCAL_EMMA_INSTRUMENT
42af4800c8a6a9266ceb7269bd2c6b0bb2f0965beaYing Wangendif # EMMA_INSTRUMENT_STATIC
43af4800c8a6a9266ceb7269bd2c6b0bb2f0965beaYing Wangelse
44af4800c8a6a9266ceb7269bd2c6b0bb2f0965beaYing WangLOCAL_EMMA_INSTRUMENT := false
45af4800c8a6a9266ceb7269bd2c6b0bb2f0965beaYing Wangendif # EMMA_INSTRUMENT
46af4800c8a6a9266ceb7269bd2c6b0bb2f0965beaYing Wang
4788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#################################
4888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectinclude $(BUILD_SYSTEM)/java.mk
4988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#################################
5088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
5188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true)
52bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstrom# No dex; all we want are the .class files with resources.
53ba71aba939dc58a3278646039337f13d17e65ef2Ying Wang$(common_javalib.jar) : $(java_resource_sources)
54ba71aba939dc58a3278646039337f13d17e65ef2Ying Wangifdef LOCAL_PROGUARD_ENABLED
55ba71aba939dc58a3278646039337f13d17e65ef2Ying Wang$(common_javalib.jar) : $(full_classes_proguard_jar)
56ba71aba939dc58a3278646039337f13d17e65ef2Ying Wangelse
57ba71aba939dc58a3278646039337f13d17e65ef2Ying Wang$(common_javalib.jar) : $(full_classes_jar)
58ba71aba939dc58a3278646039337f13d17e65ef2Ying Wangendif
5988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	@echo "target Static Jar: $(PRIVATE_MODULE) ($@)"
6088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(copy-file-to-target)
61bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromifneq ($(extra_jar_args),)
62bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstrom	$(add-java-resources-to-package)
63bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromendif
6488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
65a83940fa7851b35712e559be2246b56b5666b805Ying Wang$(LOCAL_BUILT_MODULE): $(common_javalib.jar)
66a83940fa7851b35712e559be2246b56b5666b805Ying Wang	$(copy-file-to-target)
67a83940fa7851b35712e559be2246b56b5666b805Ying Wang
6888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectelse # !LOCAL_IS_STATIC_JAVA_LIBRARY
6988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
70a83940fa7851b35712e559be2246b56b5666b805Ying Wang$(common_javalib.jar): PRIVATE_DEX_FILE := $(built_dex)
71c3ccfeee88c4b62e50c6ad8eb63cc963998c96f9-b master$(common_javalib.jar) : $(built_dex) $(java_resource_sources)
72e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang	@echo "target Jar: $(PRIVATE_MODULE) ($@)"
73e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang	$(create-empty-package)
74e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang	$(add-dex-to-package)
7585480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang	$(add-carried-java-resources)
76e7874c430895b9a4e631c89f1e7729da9264d167Ying Wangifneq ($(extra_jar_args),)
77e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang	$(add-java-resources-to-package)
78e7874c430895b9a4e631c89f1e7729da9264d167Ying Wangendif
79e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang
8079e3dec83ee012e94e34ed092cea5b9d60040e9dYing Wangifdef LOCAL_DEX_PREOPT
81ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromifneq ($(dexpreopt_boot_jar_module),) # boot jar
82e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang# boot jar's rules are defined in dex_preopt.mk
83e7874c430895b9a4e631c89f1e7729da9264d167Ying Wangdexpreopted_boot_jar := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(dexpreopt_boot_jar_module)_nodex.jar
84e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang$(LOCAL_BUILT_MODULE) : $(dexpreopted_boot_jar) | $(ACP)
85e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang	$(call copy-file-to-target)
86e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang
87ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom# For libart boot jars, we don't have .odex files.
88ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromifeq ($(DALVIK_VM_LIB),libdvm.so)
89e7874c430895b9a4e631c89f1e7729da9264d167Ying Wangdexpreopted_boot_odex := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(dexpreopt_boot_jar_module).odex
90e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang$(built_odex) : $(dexpreopted_boot_odex) | $(ACP)
91e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang	$(call copy-file-to-target)
92ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromendif
93e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang
94ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromelse # ! boot jar
95e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang$(built_odex): PRIVATE_MODULE := $(LOCAL_MODULE)
96b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang# Use pattern rule - we may have multiple built odex files.
97b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang$(built_odex) : $(dir $(LOCAL_BUILT_MODULE))% : $(common_javalib.jar)
98e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang	@echo "Dexpreopt Jar: $(PRIVATE_MODULE) ($@)"
99b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang	$(call dexpreopt-one-file,$<,$@)
100e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang
101c3ccfeee88c4b62e50c6ad8eb63cc963998c96f9-b master$(LOCAL_BUILT_MODULE) : $(common_javalib.jar) | $(ACP)
102e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang	$(call copy-file-to-target)
10379e3dec83ee012e94e34ed092cea5b9d60040e9dYing Wangifneq (nostripping,$(LOCAL_DEX_PREOPT))
104e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang	$(call dexpreopt-remove-classes.dex,$@)
10579e3dec83ee012e94e34ed092cea5b9d60040e9dYing Wangendif
106e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang
107ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromendif # ! boot jar
108e7874c430895b9a4e631c89f1e7729da9264d167Ying Wang
109e7874c430895b9a4e631c89f1e7729da9264d167Ying Wangelse # LOCAL_DEX_PREOPT
110a83940fa7851b35712e559be2246b56b5666b805Ying Wang$(LOCAL_BUILT_MODULE) : $(common_javalib.jar) | $(ACP)
111a83940fa7851b35712e559be2246b56b5666b805Ying Wang	$(call copy-file-to-target)
11288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
113a83940fa7851b35712e559be2246b56b5666b805Ying Wangendif # LOCAL_DEX_PREOPT
11488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif # !LOCAL_IS_STATIC_JAVA_LIBRARY
115