blob: 4f3069fb583cb6953100bcc1d92a2f48a4f41edc [file] [log] [blame]
Narayan Kamath0dd273a2013-10-28 13:20:52 +00001#
2# Copyright (C) 2013 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#
Dan Willemsen3bf15e72016-07-25 16:03:53 -070016$(call record-module-type,HOST_DALVIK_JAVA_LIBRARY)
Narayan Kamath0dd273a2013-10-28 13:20:52 +000017
18#
19# Rules for building a host dalvik java library. These libraries
20# are meant to be used by a dalvik VM instance running on the host.
21# They will be compiled against libcore and not the host JRE.
22#
23
Ying Wang07577682015-01-26 09:52:28 -080024ifeq ($(HOST_OS),linux)
Narayan Kamath0dd273a2013-10-28 13:20:52 +000025USE_CORE_LIB_BOOTCLASSPATH := true
26
Ying Wang3ae78612016-03-24 16:41:48 -070027#################################
28include $(BUILD_SYSTEM)/configure_local_jack.mk
29#################################
30
Narayan Kamath0dd273a2013-10-28 13:20:52 +000031#######################################
32include $(BUILD_SYSTEM)/host_java_library_common.mk
33#######################################
Colin Cross79e2f732016-12-21 14:29:13 -080034ifdef LOCAL_JACK_ENABLED
Ying Wang3ae78612016-03-24 16:41:48 -070035ifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true)
36 # For static library, $(LOCAL_BUILT_MODULE) is $(full_classes_jack).
37 LOCAL_BUILT_MODULE_STEM := classes.jack
38endif
Colin Cross79e2f732016-12-21 14:29:13 -080039endif
Narayan Kamath0dd273a2013-10-28 13:20:52 +000040
41ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true)
Yohann Rousselae2fc812016-04-21 16:49:10 +020042 LOCAL_JAVA_LIBRARIES := core-oj-hostdex core-libart-hostdex $(LOCAL_JAVA_LIBRARIES)
Narayan Kamath0dd273a2013-10-28 13:20:52 +000043endif
44
Colin Cross79e2f732016-12-21 14:29:13 -080045full_classes_compiled_jar := $(intermediates.COMMON)/classes-full-debug.jar
Colin Cross8f2f7b92017-02-24 14:06:29 -080046full_classes_desugar_jar := $(intermediates.COMMON)/desugar.classes.jar
Colin Cross79e2f732016-12-21 14:29:13 -080047full_classes_jarjar_jar := $(intermediates.COMMON)/classes-jarjar.jar
48full_classes_jar := $(intermediates.COMMON)/classes.jar
Yohann Rousself09e59e2014-09-08 14:45:14 +020049full_classes_jack := $(intermediates.COMMON)/classes.jack
Yohann Rousselee572682015-08-18 19:18:18 +020050jack_check_timestamp := $(intermediates.COMMON)/jack.check.timestamp
Narayan Kamath0dd273a2013-10-28 13:20:52 +000051built_dex := $(intermediates.COMMON)/classes.dex
52
53LOCAL_INTERMEDIATE_TARGETS += \
Colin Cross79e2f732016-12-21 14:29:13 -080054 $(full_classes_compiled_jar) \
Colin Cross8f2f7b92017-02-24 14:06:29 -080055 $(full_classes_desugar_jar) \
Colin Cross79e2f732016-12-21 14:29:13 -080056 $(full_classes_jarjar_jar) \
Yohann Rousself09e59e2014-09-08 14:45:14 +020057 $(full_classes_jack) \
Colin Cross79e2f732016-12-21 14:29:13 -080058 $(full_classes_jar) \
Yohann Rousselee572682015-08-18 19:18:18 +020059 $(jack_check_timestamp) \
Narayan Kamath0dd273a2013-10-28 13:20:52 +000060 $(built_dex)
61
62# See comment in java.mk
Ying Wang447d6962015-09-01 19:12:05 -070063ifndef LOCAL_CHECKED_MODULE
Colin Cross79e2f732016-12-21 14:29:13 -080064ifdef LOCAL_JACK_ENABLED
Yohann Rousselee572682015-08-18 19:18:18 +020065LOCAL_CHECKED_MODULE := $(jack_check_timestamp)
Colin Cross79e2f732016-12-21 14:29:13 -080066else
Colin Cross8f2f7b92017-02-24 14:06:29 -080067ifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true)
Colin Cross79e2f732016-12-21 14:29:13 -080068LOCAL_CHECKED_MODULE := $(full_classes_compiled_jar)
Colin Cross8f2f7b92017-02-24 14:06:29 -080069else
70LOCAL_CHECKED_MODULE := $(built_dex)
71endif
Colin Cross79e2f732016-12-21 14:29:13 -080072endif
Yohann Rousselee572682015-08-18 19:18:18 +020073endif
Narayan Kamath0dd273a2013-10-28 13:20:52 +000074
75#######################################
76include $(BUILD_SYSTEM)/base_rules.mk
77#######################################
Ying Wang956dccc2015-08-28 11:47:03 -070078java_sources := $(addprefix $(LOCAL_PATH)/, $(filter %.java,$(LOCAL_SRC_FILES))) \
79 $(filter %.java,$(LOCAL_GENERATED_SOURCES))
80all_java_sources := $(java_sources)
81
82include $(BUILD_SYSTEM)/java_common.mk
Narayan Kamath0dd273a2013-10-28 13:20:52 +000083
Narayan Kamath0dd273a2013-10-28 13:20:52 +000084$(cleantarget): PRIVATE_CLEAN_FILES += $(intermediates.COMMON)
85
Colin Cross79e2f732016-12-21 14:29:13 -080086ifndef LOCAL_JACK_ENABLED
87
88$(full_classes_compiled_jar): PRIVATE_JAVA_LAYERS_FILE := $(layers_file)
Colin Crosscde14982017-04-07 16:28:41 -070089$(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(GLOBAL_JAVAC_DEBUG_FLAGS) $(LOCAL_JAVACFLAGS) $(annotation_processor_flags)
Colin Cross79e2f732016-12-21 14:29:13 -080090$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES :=
91$(full_classes_compiled_jar): PRIVATE_JAR_PACKAGES :=
92$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_PACKAGES :=
93$(full_classes_compiled_jar): \
94 $(java_sources) \
95 $(java_resource_sources) \
96 $(full_java_lib_deps) \
97 $(jar_manifest_file) \
98 $(proto_java_sources_file_stamp) \
Colin Crosscde14982017-04-07 16:28:41 -070099 $(annotation_processor_deps) \
Colin Cross5f892122017-04-17 14:59:43 -0700100 $(NORMALIZE_PATH) \
101 $(LOCAL_ADDITIONAL_DEPENDENCIES) \
102 | $(SOONG_JAVAC_WRAPPER)
Colin Cross79e2f732016-12-21 14:29:13 -0800103 $(transform-host-java-to-package)
104
Colin Cross8f2f7b92017-02-24 14:06:29 -0800105my_desugaring :=
106ifeq ($(LOCAL_JAVA_LANGUAGE_VERSION),1.8)
107my_desugaring := true
108$(full_classes_desugar_jar): PRIVATE_DX_FLAGS := $(LOCAL_DX_FLAGS)
109$(full_classes_desugar_jar): $(full_classes_compiled_jar) $(DESUGAR)
110 $(desugar-classes-jar)
111endif
112
113ifndef my_desugaring
114full_classes_desugar_jar := $(full_classes_compiled_jar)
115endif
116
Colin Cross79e2f732016-12-21 14:29:13 -0800117# Run jarjar if necessary, otherwise just copy the file.
118ifneq ($(strip $(LOCAL_JARJAR_RULES)),)
119$(full_classes_jarjar_jar): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES)
Colin Cross8f2f7b92017-02-24 14:06:29 -0800120$(full_classes_jarjar_jar): $(full_classes_desugar_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR)
Colin Cross79e2f732016-12-21 14:29:13 -0800121 @echo JarJar: $@
Colin Cross0851df82017-06-30 13:55:38 -0700122 $(hide) $(JAVA) -jar $(JARJAR) process $(PRIVATE_JARJAR_RULES) $< $@
Colin Cross79e2f732016-12-21 14:29:13 -0800123else
Colin Cross0e537342017-03-29 12:17:36 -0700124full_classes_jarjar_jar := $(full_classes_desugar_jar)
Colin Cross79e2f732016-12-21 14:29:13 -0800125endif
126
Colin Cross0e537342017-03-29 12:17:36 -0700127$(eval $(call copy-one-file,$(full_classes_jarjar_jar),$(full_classes_jar)))
Colin Cross79e2f732016-12-21 14:29:13 -0800128
129ifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true)
130# No dex; all we want are the .class files with resources.
131$(LOCAL_BUILT_MODULE) : $(java_resource_sources)
132$(LOCAL_BUILT_MODULE) : $(full_classes_jar)
133 @echo "host Static Jar: $(PRIVATE_MODULE) ($@)"
134 $(copy-file-to-target)
135
136else # !LOCAL_IS_STATIC_JAVA_LIBRARY
137$(built_dex): PRIVATE_INTERMEDIATES_DIR := $(intermediates.COMMON)
138$(built_dex): PRIVATE_DX_FLAGS := $(LOCAL_DX_FLAGS)
139$(built_dex): $(full_classes_jar) $(DX)
140 $(transform-classes.jar-to-dex)
141
142$(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex)
143$(LOCAL_BUILT_MODULE): PRIVATE_SOURCE_ARCHIVE := $(full_classes_jarjar_jar)
144$(LOCAL_BUILT_MODULE): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS)
145$(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources)
146 @echo "Host Jar: $(PRIVATE_MODULE) ($@)"
147 $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@)
148 $(add-dex-to-package)
149
150endif # !LOCAL_IS_STATIC_JAVA_LIBRARY
Colin Cross536ef4e2017-02-21 16:14:55 -0800151
152ifneq (,$(filter-out current system_current test_current, $(LOCAL_SDK_VERSION)))
153$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEFAULT_APP_TARGET_SDK := $(LOCAL_SDK_VERSION)
154$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SDK_VERSION := $(LOCAL_SDK_VERSION)
155else
156$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEFAULT_APP_TARGET_SDK := $(DEFAULT_APP_TARGET_SDK)
157$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SDK_VERSION := $(PLATFORM_SDK_VERSION)
158endif
159
Colin Cross79e2f732016-12-21 14:29:13 -0800160else # LOCAL_JACK_ENABLED
Yohann Rousself09e59e2014-09-08 14:45:14 +0200161$(LOCAL_INTERMEDIATE_TARGETS): \
Ying Wang3ae78612016-03-24 16:41:48 -0700162 PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack-rsc
Yohann Rousself09e59e2014-09-08 14:45:14 +0200163
164ifeq ($(LOCAL_JACK_ENABLED),incremental)
165$(LOCAL_INTERMEDIATE_TARGETS): \
Ying Wang3ae78612016-03-24 16:41:48 -0700166 PRIVATE_JACK_INCREMENTAL_DIR := $(intermediates.COMMON)/jack-incremental
Yohann Rousself09e59e2014-09-08 14:45:14 +0200167else
168$(LOCAL_INTERMEDIATE_TARGETS): \
Ying Wang3ae78612016-03-24 16:41:48 -0700169 PRIVATE_JACK_INCREMENTAL_DIR :=
Yohann Rousself09e59e2014-09-08 14:45:14 +0200170endif
Yohann Rousselee572682015-08-18 19:18:18 +0200171$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_FLAGS := $(GLOBAL_JAVAC_DEBUG_FLAGS) $(LOCAL_JACK_FLAGS)
172$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_VERSION := $(LOCAL_JACK_VERSION)
Yohann Roussel94451582016-03-09 17:19:58 +0100173$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_MIN_SDK_VERSION := $(PLATFORM_JACK_MIN_SDK_VERSION)
Yohann Rousself09e59e2014-09-08 14:45:14 +0200174
Yohann Rousselee572682015-08-18 19:18:18 +0200175jack_all_deps := $(java_sources) $(java_resource_sources) $(full_jack_deps) \
Dan Willemsen1c6dc5b2016-01-06 14:28:36 -0800176 $(jar_manifest_file) $(proto_java_sources_file_stamp) \
Shinichiro Hamajid50001e2016-04-19 16:17:55 +0900177 $(LOCAL_ADDITIONAL_DEPENDENCIES) $(NORMALIZE_PATH) $(JACK_DEFAULT_ARGS) $(JACK)
Ying Wang3ae78612016-03-24 16:41:48 -0700178
179ifneq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true)
Yohann Rousselee572682015-08-18 19:18:18 +0200180$(built_dex): PRIVATE_CLASSES_JACK := $(full_classes_jack)
Yohann Roussel53b7fbb2016-08-05 17:45:10 +0200181$(built_dex): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH)
Yohann Roussel16243bd2016-09-19 17:49:03 +0200182$(built_dex): PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN)
Yohann Roussel53b7fbb2016-08-05 17:45:10 +0200183$(built_dex): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server
Yohann Rousself09e59e2014-09-08 14:45:14 +0200184 @echo Building with Jack: $@
185 $(jack-java-to-dex)
186
187# $(full_classes_jack) is just by-product of $(built_dex).
188# The dummy command was added because, without it, make misses the fact the $(built_dex) also
189# change $(full_classes_jack).
190$(full_classes_jack): $(built_dex)
191 $(hide) touch $@
192
193$(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex)
194$(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources)
195 @echo "Host Jar: $(PRIVATE_MODULE) ($@)"
196 $(create-empty-package)
197 $(add-dex-to-package)
198 $(add-carried-jack-resources)
199
Ying Wang3ae78612016-03-24 16:41:48 -0700200else # LOCAL_IS_STATIC_JAVA_LIBRARY
Yohann Roussel53b7fbb2016-08-05 17:45:10 +0200201$(full_classes_jack): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH)
Yohann Roussel16243bd2016-09-19 17:49:03 +0200202$(full_classes_jack): PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN)
Yohann Roussel53b7fbb2016-08-05 17:45:10 +0200203$(full_classes_jack): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server
Ying Wang3ae78612016-03-24 16:41:48 -0700204 @echo Building with Jack: $@
205 $(java-to-jack)
206
207endif # LOCAL_IS_STATIC_JAVA_LIBRARY
208
209$(jack_check_timestamp): $(jack_all_deps) | setup-jack-server
210 @echo Checking build with Jack: $@
211 $(jack-check-java)
Colin Cross79e2f732016-12-21 14:29:13 -0800212endif # LOCAL_JACK_ENABLED
Yohann Rousself09e59e2014-09-08 14:45:14 +0200213
Narayan Kamath0dd273a2013-10-28 13:20:52 +0000214USE_CORE_LIB_BOOTCLASSPATH :=
Ying Wang07577682015-01-26 09:52:28 -0800215
216endif