blob: 72dfceed858449dd7bbc14cb2f8497c32b43974c [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
46full_classes_jarjar_jar := $(intermediates.COMMON)/classes-jarjar.jar
47full_classes_jar := $(intermediates.COMMON)/classes.jar
Yohann Rousself09e59e2014-09-08 14:45:14 +020048full_classes_jack := $(intermediates.COMMON)/classes.jack
Yohann Rousselee572682015-08-18 19:18:18 +020049jack_check_timestamp := $(intermediates.COMMON)/jack.check.timestamp
Narayan Kamath0dd273a2013-10-28 13:20:52 +000050built_dex := $(intermediates.COMMON)/classes.dex
51
52LOCAL_INTERMEDIATE_TARGETS += \
Colin Cross79e2f732016-12-21 14:29:13 -080053 $(full_classes_compiled_jar) \
54 $(full_classes_jarjar_jar) \
Yohann Rousself09e59e2014-09-08 14:45:14 +020055 $(full_classes_jack) \
Colin Cross79e2f732016-12-21 14:29:13 -080056 $(full_classes_jar) \
Yohann Rousselee572682015-08-18 19:18:18 +020057 $(jack_check_timestamp) \
Narayan Kamath0dd273a2013-10-28 13:20:52 +000058 $(built_dex)
59
60# See comment in java.mk
Ying Wang447d6962015-09-01 19:12:05 -070061ifndef LOCAL_CHECKED_MODULE
Colin Cross79e2f732016-12-21 14:29:13 -080062ifdef LOCAL_JACK_ENABLED
Yohann Rousselee572682015-08-18 19:18:18 +020063LOCAL_CHECKED_MODULE := $(jack_check_timestamp)
Colin Cross79e2f732016-12-21 14:29:13 -080064else
65LOCAL_CHECKED_MODULE := $(full_classes_compiled_jar)
66endif
Yohann Rousselee572682015-08-18 19:18:18 +020067endif
Narayan Kamath0dd273a2013-10-28 13:20:52 +000068
69#######################################
70include $(BUILD_SYSTEM)/base_rules.mk
71#######################################
Ying Wang956dccc2015-08-28 11:47:03 -070072java_sources := $(addprefix $(LOCAL_PATH)/, $(filter %.java,$(LOCAL_SRC_FILES))) \
73 $(filter %.java,$(LOCAL_GENERATED_SOURCES))
74all_java_sources := $(java_sources)
75
76include $(BUILD_SYSTEM)/java_common.mk
Narayan Kamath0dd273a2013-10-28 13:20:52 +000077
Narayan Kamath0dd273a2013-10-28 13:20:52 +000078$(cleantarget): PRIVATE_CLEAN_FILES += $(intermediates.COMMON)
79
Colin Cross79e2f732016-12-21 14:29:13 -080080ifndef LOCAL_JACK_ENABLED
81
82$(full_classes_compiled_jar): PRIVATE_JAVA_LAYERS_FILE := $(layers_file)
83$(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(GLOBAL_JAVAC_DEBUG_FLAGS) $(LOCAL_JAVACFLAGS)
84$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES :=
85$(full_classes_compiled_jar): PRIVATE_JAR_PACKAGES :=
86$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_PACKAGES :=
87$(full_classes_compiled_jar): \
88 $(java_sources) \
89 $(java_resource_sources) \
90 $(full_java_lib_deps) \
91 $(jar_manifest_file) \
92 $(proto_java_sources_file_stamp) \
Colin Cross440079b2017-02-19 19:51:27 -080093 $(NORMALIZE_PATH) \
94 $(JAVAC_FILTER) \
Colin Cross79e2f732016-12-21 14:29:13 -080095 $(LOCAL_ADDITIONAL_DEPENDENCIES)
96 $(transform-host-java-to-package)
97
98# Run jarjar if necessary, otherwise just copy the file.
99ifneq ($(strip $(LOCAL_JARJAR_RULES)),)
100$(full_classes_jarjar_jar): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES)
101$(full_classes_jarjar_jar): $(full_classes_compiled_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR)
102 @echo JarJar: $@
103 $(hide) java -jar $(JARJAR) process $(PRIVATE_JARJAR_RULES) $< $@
104else
105$(full_classes_jarjar_jar): $(full_classes_compiled_jar) | $(ACP)
106 @echo Copying: $@
107 $(hide) $(ACP) -fp $< $@
108endif
109
110$(full_classes_jar): $(full_classes_jarjar_jar) | $(ACP)
111 @echo Copying: $@
112 $(hide) $(ACP) -fp $< $@
113
114ifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true)
115# No dex; all we want are the .class files with resources.
116$(LOCAL_BUILT_MODULE) : $(java_resource_sources)
117$(LOCAL_BUILT_MODULE) : $(full_classes_jar)
118 @echo "host Static Jar: $(PRIVATE_MODULE) ($@)"
119 $(copy-file-to-target)
120
121else # !LOCAL_IS_STATIC_JAVA_LIBRARY
122$(built_dex): PRIVATE_INTERMEDIATES_DIR := $(intermediates.COMMON)
123$(built_dex): PRIVATE_DX_FLAGS := $(LOCAL_DX_FLAGS)
124$(built_dex): $(full_classes_jar) $(DX)
125 $(transform-classes.jar-to-dex)
126
127$(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex)
128$(LOCAL_BUILT_MODULE): PRIVATE_SOURCE_ARCHIVE := $(full_classes_jarjar_jar)
129$(LOCAL_BUILT_MODULE): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS)
130$(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources)
131 @echo "Host Jar: $(PRIVATE_MODULE) ($@)"
132 $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@)
133 $(add-dex-to-package)
134
135endif # !LOCAL_IS_STATIC_JAVA_LIBRARY
Colin Cross536ef4e2017-02-21 16:14:55 -0800136
137ifneq (,$(filter-out current system_current test_current, $(LOCAL_SDK_VERSION)))
138$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEFAULT_APP_TARGET_SDK := $(LOCAL_SDK_VERSION)
139$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SDK_VERSION := $(LOCAL_SDK_VERSION)
140else
141$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEFAULT_APP_TARGET_SDK := $(DEFAULT_APP_TARGET_SDK)
142$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SDK_VERSION := $(PLATFORM_SDK_VERSION)
143endif
144
Colin Cross79e2f732016-12-21 14:29:13 -0800145else # LOCAL_JACK_ENABLED
Yohann Rousself09e59e2014-09-08 14:45:14 +0200146$(LOCAL_INTERMEDIATE_TARGETS): \
Ying Wang3ae78612016-03-24 16:41:48 -0700147 PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack-rsc
Yohann Rousself09e59e2014-09-08 14:45:14 +0200148
149ifeq ($(LOCAL_JACK_ENABLED),incremental)
150$(LOCAL_INTERMEDIATE_TARGETS): \
Ying Wang3ae78612016-03-24 16:41:48 -0700151 PRIVATE_JACK_INCREMENTAL_DIR := $(intermediates.COMMON)/jack-incremental
Yohann Rousself09e59e2014-09-08 14:45:14 +0200152else
153$(LOCAL_INTERMEDIATE_TARGETS): \
Ying Wang3ae78612016-03-24 16:41:48 -0700154 PRIVATE_JACK_INCREMENTAL_DIR :=
Yohann Rousself09e59e2014-09-08 14:45:14 +0200155endif
Yohann Rousselee572682015-08-18 19:18:18 +0200156$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_FLAGS := $(GLOBAL_JAVAC_DEBUG_FLAGS) $(LOCAL_JACK_FLAGS)
157$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_VERSION := $(LOCAL_JACK_VERSION)
Yohann Roussel94451582016-03-09 17:19:58 +0100158$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_MIN_SDK_VERSION := $(PLATFORM_JACK_MIN_SDK_VERSION)
Yohann Rousself09e59e2014-09-08 14:45:14 +0200159
Yohann Rousselee572682015-08-18 19:18:18 +0200160jack_all_deps := $(java_sources) $(java_resource_sources) $(full_jack_deps) \
Dan Willemsen1c6dc5b2016-01-06 14:28:36 -0800161 $(jar_manifest_file) $(proto_java_sources_file_stamp) \
Shinichiro Hamajid50001e2016-04-19 16:17:55 +0900162 $(LOCAL_ADDITIONAL_DEPENDENCIES) $(NORMALIZE_PATH) $(JACK_DEFAULT_ARGS) $(JACK)
Ying Wang3ae78612016-03-24 16:41:48 -0700163
164ifneq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true)
Yohann Rousselee572682015-08-18 19:18:18 +0200165$(built_dex): PRIVATE_CLASSES_JACK := $(full_classes_jack)
Yohann Roussel53b7fbb2016-08-05 17:45:10 +0200166$(built_dex): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH)
Yohann Roussel16243bd2016-09-19 17:49:03 +0200167$(built_dex): PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN)
Yohann Roussel53b7fbb2016-08-05 17:45:10 +0200168$(built_dex): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server
Yohann Rousself09e59e2014-09-08 14:45:14 +0200169 @echo Building with Jack: $@
170 $(jack-java-to-dex)
171
172# $(full_classes_jack) is just by-product of $(built_dex).
173# The dummy command was added because, without it, make misses the fact the $(built_dex) also
174# change $(full_classes_jack).
175$(full_classes_jack): $(built_dex)
176 $(hide) touch $@
177
178$(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex)
179$(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources)
180 @echo "Host Jar: $(PRIVATE_MODULE) ($@)"
181 $(create-empty-package)
182 $(add-dex-to-package)
183 $(add-carried-jack-resources)
184
Ying Wang3ae78612016-03-24 16:41:48 -0700185else # LOCAL_IS_STATIC_JAVA_LIBRARY
Yohann Roussel53b7fbb2016-08-05 17:45:10 +0200186$(full_classes_jack): PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH)
Yohann Roussel16243bd2016-09-19 17:49:03 +0200187$(full_classes_jack): PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN)
Yohann Roussel53b7fbb2016-08-05 17:45:10 +0200188$(full_classes_jack): $(jack_all_deps) $(LOCAL_JACK_PLUGIN_PATH) | setup-jack-server
Ying Wang3ae78612016-03-24 16:41:48 -0700189 @echo Building with Jack: $@
190 $(java-to-jack)
191
192endif # LOCAL_IS_STATIC_JAVA_LIBRARY
193
194$(jack_check_timestamp): $(jack_all_deps) | setup-jack-server
195 @echo Checking build with Jack: $@
196 $(jack-check-java)
Colin Cross79e2f732016-12-21 14:29:13 -0800197endif # LOCAL_JACK_ENABLED
Yohann Rousself09e59e2014-09-08 14:45:14 +0200198
Narayan Kamath0dd273a2013-10-28 13:20:52 +0000199USE_CORE_LIB_BOOTCLASSPATH :=
Ying Wang07577682015-01-26 09:52:28 -0800200
201endif