1 # Common to host and target Java modules. 2 3 ########################################################### 4 ## Java version 5 ########################################################### 6 # Use the LOCAL_JAVA_LANGUAGE_VERSION if it is set, otherwise 7 # use one based on the LOCAL_SDK_VERSION. If it is < 24 8 # pass "1.7" to the tools, if it is unset, >= 24 or "current" 9 # pass "1.8". 10 # 11 # The LOCAL_SDK_VERSION behavior is to ensure that, by default, 12 # code that is expected to run on older releases of Android 13 # does not use any 1.8 language features that are not supported 14 # on earlier runtimes (like default / static interface methods). 15 # Modules can override this logic by specifying 16 # LOCAL_JAVA_LANGUAGE_VERSION explicitly. 17 ifeq (,$(LOCAL_JAVA_LANGUAGE_VERSION)) 18 private_sdk_versions_without_any_java_18_support := 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 19 ifneq (,$(filter $(LOCAL_SDK_VERSION), $(private_sdk_versions_without_any_java_18_support))) 20 LOCAL_JAVA_LANGUAGE_VERSION := 1.7 21 else 22 # This retains 1.7 for ART build bots only. http://b/27583810 23 ifeq (,$(LEGACY_USE_JAVA7)) 24 LOCAL_JAVA_LANGUAGE_VERSION := 1.8 25 else 26 LOCAL_JAVA_LANGUAGE_VERSION := 1.7 27 endif 28 endif 29 endif 30 LOCAL_JAVACFLAGS += -source $(LOCAL_JAVA_LANGUAGE_VERSION) -target $(LOCAL_JAVA_LANGUAGE_VERSION) 31 32 ########################################################### 33 ## .proto files: Compile proto files to .java 34 ########################################################### 35 proto_sources := $(filter %.proto,$(LOCAL_SRC_FILES)) 36 # Because names of the .java files compiled from .proto files are unknown until the 37 # .proto files are compiled, we use a timestamp file as depedency. 38 proto_java_sources_file_stamp := 39 ifneq ($(proto_sources),) 40 proto_sources_fullpath := $(addprefix $(LOCAL_PATH)/, $(proto_sources)) 41 42 proto_java_intemediate_dir := $(intermediates.COMMON)/proto 43 proto_java_sources_file_stamp := $(proto_java_intemediate_dir)/Proto.stamp 44 proto_java_sources_dir := $(proto_java_intemediate_dir)/src 45 46 $(proto_java_sources_file_stamp): PRIVATE_PROTO_INCLUDES := $(TOP) 47 $(proto_java_sources_file_stamp): PRIVATE_PROTO_SRC_FILES := $(proto_sources_fullpath) 48 $(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_DIR := $(proto_java_sources_dir) 49 ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),micro) 50 $(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javamicro_out 51 else 52 ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),nano) 53 $(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javanano_out 54 else 55 ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),stream) 56 $(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javastream_out 57 $(proto_java_sources_file_stamp): $(HOST_OUT_EXECUTABLES)/protoc-gen-javastream 58 else 59 $(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --java_out 60 endif 61 endif 62 endif 63 $(proto_java_sources_file_stamp): PRIVATE_PROTOC_FLAGS := $(LOCAL_PROTOC_FLAGS) 64 $(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_PARAMS := $(LOCAL_PROTO_JAVA_OUTPUT_PARAMS) 65 $(proto_java_sources_file_stamp) : $(proto_sources_fullpath) $(PROTOC) 66 $(call transform-proto-to-java) 67 68 #TODO: protoc should output the dependencies introduced by imports. 69 70 ALL_MODULES.$(my_register_name).PROTO_FILES := $(proto_sources_fullpath) 71 endif # proto_sources 72 73 ######################################### 74 ## Java resources 75 76 # Look for resource files in any specified directories. 77 # Non-java and non-doc files will be picked up as resources 78 # and included in the output jar file. 79 java_resource_file_groups := 80 81 LOCAL_JAVA_RESOURCE_DIRS := $(strip $(LOCAL_JAVA_RESOURCE_DIRS)) 82 ifneq ($(LOCAL_JAVA_RESOURCE_DIRS),) 83 # This makes a list of words like 84 # <dir1>::<file1>:<file2> <dir2>::<file1> <dir3>: 85 # where each of the files is relative to the directory it's grouped with. 86 # Directories that don't contain any resource files will result in groups 87 # that end with a colon, and they are stripped out in the next step. 88 java_resource_file_groups += \ 89 $(foreach dir,$(LOCAL_JAVA_RESOURCE_DIRS), \ 90 $(subst $(space),:,$(strip \ 91 $(LOCAL_PATH)/$(dir): \ 92 $(patsubst ./%,%,$(sort $(shell cd $(LOCAL_PATH)/$(dir) && \ 93 find . \ 94 -type d -a -name ".svn" -prune -o \ 95 -type f \ 96 -a \! -name "*.java" \ 97 -a \! -name "package.html" \ 98 -a \! -name "overview.html" \ 99 -a \! -name ".*.swp" \ 100 -a \! -name ".DS_Store" \ 101 -a \! -name "*~" \ 102 -print \ 103 ))) \ 104 )) \ 105 ) 106 java_resource_file_groups := $(filter-out %:,$(java_resource_file_groups)) 107 endif # LOCAL_JAVA_RESOURCE_DIRS 108 109 LOCAL_JAVA_RESOURCE_FILES := $(strip $(LOCAL_JAVA_RESOURCE_FILES)) 110 ifneq ($(LOCAL_JAVA_RESOURCE_FILES),) 111 java_resource_file_groups += \ 112 $(foreach f,$(LOCAL_JAVA_RESOURCE_FILES), \ 113 $(patsubst %/,%,$(dir $(f)))::$(notdir $(f)) \ 114 ) 115 endif # LOCAL_JAVA_RESOURCE_FILES 116 117 ifdef java_resource_file_groups 118 # The full paths to all resources, used for dependencies. 119 java_resource_sources := \ 120 $(foreach group,$(java_resource_file_groups), \ 121 $(addprefix $(word 1,$(subst :,$(space),$(group)))/, \ 122 $(wordlist 2,9999,$(subst :,$(space),$(group))) \ 123 ) \ 124 ) 125 # The arguments to jar that will include these files in a jar file. 126 # Quote the file name to handle special characters (such as #) correctly. 127 extra_jar_args := \ 128 $(foreach group,$(java_resource_file_groups), \ 129 $(addprefix -C "$(word 1,$(subst :,$(space),$(group)))" , \ 130 $(foreach w, $(wordlist 2,9999,$(subst :,$(space),$(group))), "$(w)" ) \ 131 ) \ 132 ) 133 java_resource_file_groups := 134 else 135 java_resource_sources := 136 extra_jar_args := 137 endif # java_resource_file_groups 138 139 ##################################### 140 ## Warn if there is unrecognized file in LOCAL_SRC_FILES. 141 my_unknown_src_files := $(filter-out \ 142 %.java %.aidl %.proto %.logtags %.fs %.rs, \ 143 $(LOCAL_SRC_FILES) $(LOCAL_INTERMEDIATE_SOURCES) $(LOCAL_GENERATED_SOURCES)) 144 ifneq ($(my_unknown_src_files),) 145 $(warning $(LOCAL_MODULE_MAKEFILE): $(LOCAL_MODULE): Unused source files: $(my_unknown_src_files)) 146 endif 147 148 ###################################### 149 ## PRIVATE java vars 150 # LOCAL_SOURCE_FILES_ALL_GENERATED is set only if the module does not have static source files, 151 # but generated source files in its LOCAL_INTERMEDIATE_SOURCE_DIR. 152 # You have to set up the dependency in some other way. 153 need_compile_java := $(strip $(all_java_sources)$(all_res_assets)$(java_resource_sources))$(LOCAL_STATIC_JAVA_LIBRARIES)$(filter true,$(LOCAL_SOURCE_FILES_ALL_GENERATED)) 154 ifdef need_compile_java 155 156 full_static_java_libs := \ 157 $(foreach lib,$(LOCAL_STATIC_JAVA_LIBRARIES), \ 158 $(call intermediates-dir-for, \ 159 JAVA_LIBRARIES,$(lib),$(LOCAL_IS_HOST_MODULE),COMMON)/classes.jar) 160 161 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_STATIC_JAVA_LIBRARIES := $(full_static_java_libs) 162 163 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RESOURCE_DIR := $(LOCAL_RESOURCE_DIR) 164 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASSET_DIR := $(LOCAL_ASSET_DIR) 165 166 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CLASS_INTERMEDIATES_DIR := $(intermediates.COMMON)/classes 167 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/src 168 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HAS_PROTO_SOURCES := $(if $(proto_sources),true) 169 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_PROTO_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/proto 170 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HAS_RS_SOURCES := 171 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAVA_SOURCES := $(all_java_sources) 172 173 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RMTYPEDEFS := $(LOCAL_RMTYPEDEFS) 174 175 # full_java_libs: The list of files that should be used as the classpath. 176 # Using this list as a dependency list WILL NOT WORK. 177 # full_java_lib_deps: Should be specified as a prerequisite of this module 178 # to guarantee that the files in full_java_libs will 179 # be up-to-date. 180 ifndef LOCAL_IS_HOST_MODULE 181 ifeq ($(LOCAL_SDK_VERSION),) 182 ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) 183 # No bootclasspath. But we still need "" to prevent javac from using default host bootclasspath. 184 my_bootclasspath := "" 185 else # LOCAL_NO_STANDARD_LIBRARIES 186 my_bootclasspath := $(call java-lib-files,core-oj):$(call java-lib-files,core-libart) 187 endif # LOCAL_NO_STANDARD_LIBRARIES 188 else 189 ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),current) 190 # LOCAL_SDK_VERSION is current and no TARGET_BUILD_APPS. 191 my_bootclasspath := $(call java-lib-files,android_stubs_current) 192 else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),system_current) 193 my_bootclasspath := $(call java-lib-files,android_system_stubs_current) 194 else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),test_current) 195 my_bootclasspath := $(call java-lib-files,android_test_stubs_current) 196 else 197 my_bootclasspath := $(call java-lib-files,sdk_v$(LOCAL_SDK_VERSION)) 198 endif # current, system_current, or test_current 199 endif # LOCAL_SDK_VERSION 200 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH := -bootclasspath $(my_bootclasspath) 201 202 # In order to compile lambda code javac requires various invokedynamic- 203 # related classes to be present. This change adds stubs needed for 204 # javac to compile lambdas. 205 my_additional_javac_libs := 206 ifndef TARGET_BUILD_APPS 207 # TODO: support to build lamdbas using javac in unbundled build. 208 # We may need to check in a prebuilt core-lambda-stubs to prebuilts/sdk. 209 ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) 210 my_additional_javac_libs := core-lambda-stubs 211 endif 212 endif 213 214 full_shared_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES) $(my_additional_javac_libs),$(LOCAL_IS_HOST_MODULE)) 215 full_java_lib_deps := $(call java-lib-deps,$(LOCAL_JAVA_LIBRARIES) $(my_additional_javac_libs),$(LOCAL_IS_HOST_MODULE)) 216 full_java_lib_deps := $(addsuffix .toc, $(full_java_lib_deps)) 217 218 else # LOCAL_IS_HOST_MODULE 219 220 ifeq ($(USE_CORE_LIB_BOOTCLASSPATH),true) 221 ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) 222 my_bootclasspath := "" 223 else 224 my_bootclasspath := $(call normalize-path-list,$(call java-lib-files,core-oj-hostdex core-libart-hostdex,true)) 225 endif 226 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH := -bootclasspath $(my_bootclasspath) 227 228 full_shared_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES),true) 229 full_java_lib_deps := $(full_shared_java_libs) 230 else # !USE_CORE_LIB_BOOTCLASSPATH 231 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH := 232 233 full_shared_java_libs := $(addprefix $(HOST_OUT_JAVA_LIBRARIES)/,\ 234 $(addsuffix $(COMMON_JAVA_PACKAGE_SUFFIX),$(LOCAL_JAVA_LIBRARIES))) 235 full_java_lib_deps := $(full_shared_java_libs) 236 endif # USE_CORE_LIB_BOOTCLASSPATH 237 endif # !LOCAL_IS_HOST_MODULE 238 239 full_java_libs := $(full_shared_java_libs) $(full_static_java_libs) $(LOCAL_CLASSPATH) 240 full_java_lib_deps := $(full_java_lib_deps) $(full_static_java_libs) $(LOCAL_CLASSPATH) 241 242 ifndef LOCAL_IS_HOST_MODULE 243 # This is set by packages that are linking to other packages that export 244 # shared libraries, allowing them to make use of the code in the linked apk. 245 apk_libraries := $(sort $(LOCAL_APK_LIBRARIES) $(LOCAL_RES_LIBRARIES)) 246 ifneq ($(apk_libraries),) 247 link_apk_libraries := \ 248 $(foreach lib,$(apk_libraries), \ 249 $(call intermediates-dir-for, \ 250 APPS,$(lib),,COMMON)/classes-pre-proguard.jar) 251 252 # link against the jar with full original names (before proguard processing). 253 full_shared_java_libs += $(link_apk_libraries) 254 full_java_libs += $(link_apk_libraries) 255 full_java_lib_deps += $(link_apk_libraries) 256 endif 257 258 # This is set by packages that contain instrumentation, allowing them to 259 # link against the package they are instrumenting. Currently only one such 260 # package is allowed. 261 LOCAL_INSTRUMENTATION_FOR := $(strip $(LOCAL_INSTRUMENTATION_FOR)) 262 ifdef LOCAL_INSTRUMENTATION_FOR 263 ifneq ($(words $(LOCAL_INSTRUMENTATION_FOR)),1) 264 $(error \ 265 $(LOCAL_PATH): Multiple LOCAL_INSTRUMENTATION_FOR members defined) 266 endif 267 268 link_instr_intermediates_dir.COMMON := $(call intermediates-dir-for, \ 269 APPS,$(LOCAL_INSTRUMENTATION_FOR),,COMMON) 270 # link against the jar with full original names (before proguard processing). 271 link_instr_classes_jar := $(link_instr_intermediates_dir.COMMON)/classes-pre-proguard.jar 272 full_java_libs += $(link_instr_classes_jar) 273 full_java_lib_deps += $(link_instr_classes_jar) 274 endif # LOCAL_INSTRUMENTATION_FOR 275 endif # LOCAL_IS_HOST_MODULE 276 277 endif # need_compile_java 278 279 # We may want to add jar manifest or jar resource files even if there is no java code at all. 280 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS := $(extra_jar_args) 281 jar_manifest_file := 282 ifneq ($(strip $(LOCAL_JAR_MANIFEST)),) 283 jar_manifest_file := $(LOCAL_PATH)/$(LOCAL_JAR_MANIFEST) 284 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAR_MANIFEST := $(jar_manifest_file) 285 else 286 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAR_MANIFEST := 287 endif 288 289 ########################################################## 290 ifndef LOCAL_IS_HOST_MODULE 291 ## AAPT Flags 292 # aapt doesn't accept multiple --extra-packages flags. 293 # We have to collapse them into a single --extra-packages flag here. 294 LOCAL_AAPT_FLAGS := $(strip $(LOCAL_AAPT_FLAGS)) 295 ifdef LOCAL_AAPT_FLAGS 296 ifeq ($(filter 0 1,$(words $(filter --extra-packages,$(LOCAL_AAPT_FLAGS)))),) 297 aapt_flags := $(subst --extra-packages$(space),--extra-packages@,$(LOCAL_AAPT_FLAGS)) 298 aapt_flags_extra_packages := $(patsubst --extra-packages@%,%,$(filter --extra-packages@%,$(aapt_flags))) 299 aapt_flags_extra_packages := $(sort $(subst :,$(space),$(aapt_flags_extra_packages))) 300 LOCAL_AAPT_FLAGS := $(filter-out --extra-packages@%,$(aapt_flags)) \ 301 --extra-packages $(subst $(space),:,$(aapt_flags_extra_packages)) 302 aapt_flags_extra_packages := 303 aapt_flags := 304 endif 305 endif 306 307 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) $(PRODUCT_AAPT_FLAGS) 308 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_AAPT_CHARACTERISTICS := $(TARGET_AAPT_CHARACTERISTICS) 309 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_MANIFEST_PACKAGE_NAME := $(LOCAL_MANIFEST_PACKAGE_NAME) 310 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_MANIFEST_INSTRUMENTATION_FOR := $(LOCAL_MANIFEST_INSTRUMENTATION_FOR) 311 312 ifdef aidl_sources 313 ALL_MODULES.$(my_register_name).AIDL_FILES := $(aidl_sources) 314 endif 315 ifdef renderscript_sources 316 ALL_MODULES.$(my_register_name).RS_FILES := $(renderscript_sources_fullpath) 317 endif 318 endif # !LOCAL_IS_HOST_MODULE 319 320 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ALL_JAVA_LIBRARIES := $(full_java_libs) 321 322 ALL_MODULES.$(my_register_name).INTERMEDIATE_SOURCE_DIR := \ 323 $(ALL_MODULES.$(my_register_name).INTERMEDIATE_SOURCE_DIR) $(LOCAL_INTERMEDIATE_SOURCE_DIR) 324 325 ########################################################### 326 # JACK 327 ########################################################### 328 ifdef LOCAL_JACK_ENABLED 329 ifdef need_compile_java 330 331 LOCAL_JACK_FLAGS += -D jack.java.source.version=$(LOCAL_JAVA_LANGUAGE_VERSION) 332 333 full_static_jack_libs := \ 334 $(foreach lib,$(LOCAL_STATIC_JAVA_LIBRARIES), \ 335 $(call intermediates-dir-for, \ 336 JAVA_LIBRARIES,$(lib),$(LOCAL_IS_HOST_MODULE),COMMON)/classes.jack) 337 338 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_STATIC_JACK_LIBRARIES := $(full_static_jack_libs) 339 340 full_shared_jack_libs := $(call jack-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) 341 full_jack_deps := $(full_shared_jack_libs) 342 343 ifndef LOCAL_IS_HOST_MODULE 344 # Turn off .toc optimization for apps build as we cannot build dexdump. 345 ifeq (,$(TARGET_BUILD_APPS)) 346 full_jack_deps := $(patsubst %.jack, %.dex.toc, $(full_jack_deps)) 347 endif 348 endif # !LOCAL_IS_HOST_MODULE 349 full_shared_jack_libs += $(LOCAL_JACK_CLASSPATH) 350 full_jack_deps += $(full_static_jack_libs) $(LOCAL_JACK_CLASSPATH) 351 352 ifndef LOCAL_IS_HOST_MODULE 353 # This is set by packages that are linking to other packages that export 354 # shared libraries, allowing them to make use of the code in the linked apk. 355 ifneq ($(apk_libraries),) 356 link_apk_jack_libraries := \ 357 $(foreach lib,$(apk_libraries), \ 358 $(call intermediates-dir-for, \ 359 APPS,$(lib),,COMMON)/classes.jack) 360 361 # link against the jar with full original names (before proguard processing). 362 full_shared_jack_libs += $(link_apk_jack_libraries) 363 full_jack_deps += $(link_apk_jack_libraries) 364 endif 365 366 # This is set by packages that contain instrumentation, allowing them to 367 # link against the package they are instrumenting. Currently only one such 368 # package is allowed. 369 ifdef LOCAL_INSTRUMENTATION_FOR 370 # link against the jar with full original names (before proguard processing). 371 link_instr_classes_jack := $(link_instr_intermediates_dir.COMMON)/classes.noshrob.jack 372 full_shared_jack_libs += $(link_instr_classes_jack) 373 full_jack_deps += $(link_instr_classes_jack) 374 endif # LOCAL_INSTRUMENTATION_FOR 375 endif # !LOCAL_IS_HOST_MODULE 376 377 # Propagate local configuration options to this target. 378 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_SHARED_LIBRARIES:= $(full_shared_jack_libs) 379 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES) 380 381 endif # need_compile_java 382 endif # LOCAL_JACK_ENABLED 383 384 385 ########################################################### 386 # Verify that all libraries are safe to use 387 ########################################################### 388 ifndef LOCAL_IS_HOST_MODULE 389 my_link_type := $(intermediates.COMMON)/link_type 390 all_link_types: $(my_link_type) 391 my_link_type_deps := $(strip \ 392 $(foreach lib,$(LOCAL_STATIC_JAVA_LIBRARIES),\ 393 $(call intermediates-dir-for, \ 394 JAVA_LIBRARIES,$(lib),,COMMON)/link_type) \ 395 $(foreach lib,$(apk_libraries), \ 396 $(call intermediates-dir-for, \ 397 APPS,$(lib),,COMMON)/link_type)) 398 ifeq ($(LOCAL_SDK_VERSION),system_current) 399 $(my_link_type): PRIVATE_LINK_TYPE := java:system 400 $(my_link_type): PRIVATE_WARN_TYPES := java:platform 401 $(my_link_type): PRIVATE_ALLOWED_TYPES := java:sdk java:system 402 else ifneq ($(LOCAL_SDK_VERSION),) 403 $(my_link_type): PRIVATE_LINK_TYPE := java:sdk 404 $(my_link_type): PRIVATE_WARN_TYPES := java:system java:platform 405 $(my_link_type): PRIVATE_ALLOWED_TYPES := java:sdk 406 else 407 $(my_link_type): PRIVATE_LINK_TYPE := java:platform 408 $(my_link_type): PRIVATE_WARN_TYPES := 409 $(my_link_type): PRIVATE_ALLOWED_TYPES := java:sdk java:system java:platform 410 endif 411 $(eval $(call link-type-partitions,$(my_link_type))) 412 $(my_link_type): PRIVATE_DEPS := $(my_link_type_deps) 413 $(my_link_type): PRIVATE_MODULE := $(LOCAL_MODULE) 414 $(my_link_type): PRIVATE_MAKEFILE := $(LOCAL_MODULE_MAKEFILE) 415 $(my_link_type): $(my_link_type_deps) $(CHECK_LINK_TYPE) 416 @echo Check Java library module types: $@ 417 $(check-link-type) 418 419 $(LOCAL_BUILT_MODULE): $(my_link_type) 420 endif # !LOCAL_IS_HOST_MODULE 421