| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 1 | # Common to host and target Java modules. | 
|  | 2 |  | 
| Colin Cross | 3277ba3 | 2017-12-06 14:37:06 -0800 | [diff] [blame] | 3 | my_soong_problems := | 
|  | 4 |  | 
|  | 5 | ifneq ($(filter ../%,$(LOCAL_SRC_FILES)),) | 
|  | 6 | my_soong_problems += dotdot_srcs | 
|  | 7 | endif | 
|  | 8 |  | 
| Colin Cross | dcc8ec3 | 2018-08-16 22:58:14 -0700 | [diff] [blame] | 9 | ifneq (,$(LOCAL_JNI_SHARED_LIBRARIES)) | 
|  | 10 | my_soong_problems += jni_libs | 
|  | 11 | endif | 
|  | 12 |  | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 13 | ########################################################### | 
| Neil Fuller | ad02251 | 2016-01-29 14:22:29 +0000 | [diff] [blame] | 14 | ## Java version | 
|  | 15 | ########################################################### | 
| Neil Fuller | decb797 | 2016-03-04 18:00:00 +0000 | [diff] [blame] | 16 | # Use the LOCAL_JAVA_LANGUAGE_VERSION if it is set, otherwise | 
|  | 17 | # use one based on the LOCAL_SDK_VERSION. If it is < 24 | 
|  | 18 | # pass "1.7" to the tools, if it is unset, >= 24 or "current" | 
|  | 19 | # pass "1.8". | 
|  | 20 | # | 
|  | 21 | # The LOCAL_SDK_VERSION behavior is to ensure that, by default, | 
|  | 22 | # code that is expected to run on older releases of Android | 
|  | 23 | # does not use any 1.8 language features that are not supported | 
|  | 24 | # on earlier runtimes (like default / static interface methods). | 
|  | 25 | # Modules can override this logic by specifying | 
|  | 26 | # LOCAL_JAVA_LANGUAGE_VERSION explicitly. | 
| Neil Fuller | ad02251 | 2016-01-29 14:22:29 +0000 | [diff] [blame] | 27 | ifeq (,$(LOCAL_JAVA_LANGUAGE_VERSION)) | 
| Colin Cross | f960257 | 2017-10-12 13:34:40 -0700 | [diff] [blame] | 28 | ifneq (,$(filter $(LOCAL_SDK_VERSION), $(TARGET_SDK_VERSIONS_WITHOUT_JAVA_18_SUPPORT))) | 
| Nicolas Geoffray | 8d772e2 | 2016-02-29 12:07:00 +0000 | [diff] [blame] | 29 | LOCAL_JAVA_LANGUAGE_VERSION := 1.7 | 
| Colin Cross | f960257 | 2017-10-12 13:34:40 -0700 | [diff] [blame] | 30 | else ifneq (,$(filter $(LOCAL_SDK_VERSION), $(TARGET_SDK_VERSIONS_WITHOUT_JAVA_19_SUPPORT))) | 
|  | 31 | LOCAL_JAVA_LANGUAGE_VERSION := 1.8 | 
| Colin Cross | 8e0ff1c | 2018-12-18 22:43:16 -0800 | [diff] [blame] | 32 | else ifneq (,$(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS_USE_PREBUILT_SDK)) | 
| Colin Cross | f960257 | 2017-10-12 13:34:40 -0700 | [diff] [blame] | 33 | # TODO(ccross): allow 1.9 for current and unbundled once we have SDK system modules | 
|  | 34 | LOCAL_JAVA_LANGUAGE_VERSION := 1.8 | 
| Neil Fuller | decb797 | 2016-03-04 18:00:00 +0000 | [diff] [blame] | 35 | else | 
| Pete Gillin | 6a88bd4 | 2019-10-17 16:21:58 +0100 | [diff] [blame] | 36 | LOCAL_JAVA_LANGUAGE_VERSION := 1.9 | 
| Nicolas Geoffray | 8d772e2 | 2016-02-29 12:07:00 +0000 | [diff] [blame] | 37 | endif | 
| Neil Fuller | ad02251 | 2016-01-29 14:22:29 +0000 | [diff] [blame] | 38 | endif | 
|  | 39 | LOCAL_JAVACFLAGS += -source $(LOCAL_JAVA_LANGUAGE_VERSION) -target $(LOCAL_JAVA_LANGUAGE_VERSION) | 
|  | 40 |  | 
|  | 41 | ########################################################### | 
| Tobias Thierer | 7e99d45 | 2017-12-20 18:36:56 +0000 | [diff] [blame] | 42 |  | 
|  | 43 | # OpenJDK versions up to 8 shipped with bootstrap and tools jars | 
|  | 44 | # (rt.jar, jce.jar, tools.jar etc.). These are no longer part of | 
|  | 45 | # OpenJDK 9, but we still make them available for host tools that | 
|  | 46 | # are targeting older versions. | 
|  | 47 | USE_HOST_BOOTSTRAP_JARS := true | 
|  | 48 | ifeq (,$(filter $(LOCAL_JAVA_LANGUAGE_VERSION), 1.6 1.7 1.8)) | 
|  | 49 | USE_HOST_BOOTSTRAP_JARS := false | 
|  | 50 | endif | 
|  | 51 |  | 
|  | 52 | ########################################################### | 
|  | 53 |  | 
|  | 54 | # Drop HOST_JDK_TOOLS_JAR from classpath when targeting versions > 9 (which don't have it). | 
|  | 55 | # TODO: Remove HOST_JDK_TOOLS_JAR and all references to it once host | 
|  | 56 | # bootstrap jars are no longer supported (ie. when USE_HOST_BOOTSTRAP_JARS | 
|  | 57 | # is always false). http://b/38418220 | 
|  | 58 | ifneq ($(USE_HOST_BOOTSTRAP_JARS),true) | 
|  | 59 | LOCAL_CLASSPATH := $(filter-out $(HOST_JDK_TOOLS_JAR),$(LOCAL_CLASSPATH)) | 
|  | 60 | endif | 
|  | 61 |  | 
|  | 62 | ########################################################### | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 63 | ## .proto files: Compile proto files to .java | 
|  | 64 | ########################################################### | 
| Joe Onorato | bfc7811 | 2017-10-07 23:44:05 -0400 | [diff] [blame] | 65 | ifeq ($(strip $(LOCAL_PROTOC_OPTIMIZE_TYPE)),) | 
|  | 66 | LOCAL_PROTOC_OPTIMIZE_TYPE := lite | 
|  | 67 | endif | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 68 | proto_sources := $(filter %.proto,$(LOCAL_SRC_FILES)) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 69 | ifneq ($(proto_sources),) | 
|  | 70 | proto_sources_fullpath := $(addprefix $(LOCAL_PATH)/, $(proto_sources)) | 
|  | 71 |  | 
| Dan Willemsen | cf324af | 2016-12-21 17:37:00 -0800 | [diff] [blame] | 72 | proto_java_intemediate_dir := $(intermediates.COMMON)/proto | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 73 | proto_java_sources_dir := $(proto_java_intemediate_dir)/src | 
| Dan Willemsen | 84c6c1c | 2019-06-10 16:31:07 -0700 | [diff] [blame] | 74 | proto_java_srcjar := $(intermediates.COMMON)/proto.srcjar | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 75 |  | 
| Dan Willemsen | 84c6c1c | 2019-06-10 16:31:07 -0700 | [diff] [blame] | 76 | LOCAL_SRCJARS += $(proto_java_srcjar) | 
|  | 77 |  | 
|  | 78 | $(proto_java_srcjar): PRIVATE_PROTO_INCLUDES := $(TOP) | 
|  | 79 | $(proto_java_srcjar): PRIVATE_PROTO_SRC_FILES := $(proto_sources_fullpath) | 
|  | 80 | $(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_DIR := $(proto_java_sources_dir) | 
|  | 81 | $(proto_java_srcjar): PRIVATE_PROTOC_FLAGS := $(LOCAL_PROTOC_FLAGS) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 82 | ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),micro) | 
| Colin Cross | 869febd | 2019-08-13 16:57:19 -0700 | [diff] [blame] | 83 | $(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javamicro_out | 
|  | 84 | $(proto_java_srcjar): PRIVATE_PROTOC_FLAGS += --plugin=$(HOST_OUT_EXECUTABLES)/protoc-gen-javamicro | 
|  | 85 | $(proto_java_srcjar): $(HOST_OUT_EXECUTABLES)/protoc-gen-javamicro | 
|  | 86 | else ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),nano) | 
|  | 87 | $(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javanano_out | 
| Colin Cross | 521d445 | 2019-08-13 16:57:56 -0700 | [diff] [blame] | 88 | $(proto_java_srcjar): PRIVATE_PROTOC_FLAGS += --plugin=$(HOST_OUT_EXECUTABLES)/protoc-gen-javanano | 
|  | 89 | $(proto_java_srcjar): $(HOST_OUT_EXECUTABLES)/protoc-gen-javanano | 
| Colin Cross | 869febd | 2019-08-13 16:57:19 -0700 | [diff] [blame] | 90 | else ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),stream) | 
|  | 91 | $(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --javastream_out | 
|  | 92 | $(proto_java_srcjar): PRIVATE_PROTOC_FLAGS += --plugin=$(HOST_OUT_EXECUTABLES)/protoc-gen-javastream | 
|  | 93 | $(proto_java_srcjar): $(HOST_OUT_EXECUTABLES)/protoc-gen-javastream | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 94 | else | 
| Colin Cross | 869febd | 2019-08-13 16:57:19 -0700 | [diff] [blame] | 95 | $(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_OPTION := --java_out | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 96 | endif | 
| Dan Willemsen | 84c6c1c | 2019-06-10 16:31:07 -0700 | [diff] [blame] | 97 | $(proto_java_srcjar): PRIVATE_PROTO_JAVA_OUTPUT_PARAMS := $(if $(filter lite,$(LOCAL_PROTOC_OPTIMIZE_TYPE)),lite$(if $(LOCAL_PROTO_JAVA_OUTPUT_PARAMS),:,),)$(LOCAL_PROTO_JAVA_OUTPUT_PARAMS) | 
|  | 98 | $(proto_java_srcjar) : $(proto_sources_fullpath) $(PROTOC) $(SOONG_ZIP) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 99 | $(call transform-proto-to-java) | 
|  | 100 |  | 
|  | 101 | #TODO: protoc should output the dependencies introduced by imports. | 
| Ying Wang | d5ffec9 | 2016-03-01 22:05:25 -0800 | [diff] [blame] | 102 |  | 
|  | 103 | ALL_MODULES.$(my_register_name).PROTO_FILES := $(proto_sources_fullpath) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 104 | endif # proto_sources | 
|  | 105 |  | 
|  | 106 | ######################################### | 
|  | 107 | ## Java resources | 
|  | 108 |  | 
|  | 109 | # Look for resource files in any specified directories. | 
|  | 110 | # Non-java and non-doc files will be picked up as resources | 
|  | 111 | # and included in the output jar file. | 
|  | 112 | java_resource_file_groups := | 
|  | 113 |  | 
|  | 114 | LOCAL_JAVA_RESOURCE_DIRS := $(strip $(LOCAL_JAVA_RESOURCE_DIRS)) | 
|  | 115 | ifneq ($(LOCAL_JAVA_RESOURCE_DIRS),) | 
|  | 116 | # This makes a list of words like | 
|  | 117 | #     <dir1>::<file1>:<file2> <dir2>::<file1> <dir3>: | 
|  | 118 | # where each of the files is relative to the directory it's grouped with. | 
|  | 119 | # Directories that don't contain any resource files will result in groups | 
|  | 120 | # that end with a colon, and they are stripped out in the next step. | 
|  | 121 | java_resource_file_groups += \ | 
|  | 122 | $(foreach dir,$(LOCAL_JAVA_RESOURCE_DIRS), \ | 
|  | 123 | $(subst $(space),:,$(strip \ | 
|  | 124 | $(LOCAL_PATH)/$(dir): \ | 
| Dan Willemsen | 7c3e3f8 | 2015-09-29 16:30:21 -0700 | [diff] [blame] | 125 | $(patsubst ./%,%,$(sort $(shell cd $(LOCAL_PATH)/$(dir) && \ | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 126 | find . \ | 
|  | 127 | -type d -a -name ".svn" -prune -o \ | 
|  | 128 | -type f \ | 
|  | 129 | -a \! -name "*.java" \ | 
|  | 130 | -a \! -name "package.html" \ | 
|  | 131 | -a \! -name "overview.html" \ | 
|  | 132 | -a \! -name ".*.swp" \ | 
|  | 133 | -a \! -name ".DS_Store" \ | 
|  | 134 | -a \! -name "*~" \ | 
|  | 135 | -print \ | 
| Dan Willemsen | 7c3e3f8 | 2015-09-29 16:30:21 -0700 | [diff] [blame] | 136 | ))) \ | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 137 | )) \ | 
|  | 138 | ) | 
|  | 139 | java_resource_file_groups := $(filter-out %:,$(java_resource_file_groups)) | 
|  | 140 | endif # LOCAL_JAVA_RESOURCE_DIRS | 
|  | 141 |  | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 142 | ifneq ($(LOCAL_JAVA_RESOURCE_FILES),) | 
| Colin Cross | 34a9885 | 2017-09-22 13:34:10 -0700 | [diff] [blame] | 143 | # Converts LOCAL_JAVA_RESOURCE_FILES := <file> to $(dir $(file))::$(notdir $(file)) | 
|  | 144 | # and LOCAL_JAVA_RESOURCE_FILES := <dir>:<file> to <dir>::<file> | 
|  | 145 | java_resource_file_groups += $(strip $(foreach res,$(LOCAL_JAVA_RESOURCE_FILES), \ | 
|  | 146 | $(eval _file := $(call word-colon,2,$(res))) \ | 
|  | 147 | $(if $(_file), \ | 
|  | 148 | $(eval _base := $(call word-colon,1,$(res))), \ | 
|  | 149 | $(eval _base := $(dir $(res))) \ | 
|  | 150 | $(eval _file := $(notdir $(res)))) \ | 
|  | 151 | $(if $(filter /%, \ | 
|  | 152 | $(filter-out $(OUT_DIR)/%,$(_base) $(_file))), \ | 
|  | 153 | $(call pretty-error,LOCAL_JAVA_RESOURCE_FILES may not include absolute paths: $(_base) $(_file))) \ | 
|  | 154 | $(patsubst %/,%,$(_base))::$(_file))) | 
|  | 155 |  | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 156 | endif # LOCAL_JAVA_RESOURCE_FILES | 
|  | 157 |  | 
|  | 158 | ifdef java_resource_file_groups | 
|  | 159 | # The full paths to all resources, used for dependencies. | 
|  | 160 | java_resource_sources := \ | 
|  | 161 | $(foreach group,$(java_resource_file_groups), \ | 
|  | 162 | $(addprefix $(word 1,$(subst :,$(space),$(group)))/, \ | 
|  | 163 | $(wordlist 2,9999,$(subst :,$(space),$(group))) \ | 
|  | 164 | ) \ | 
|  | 165 | ) | 
|  | 166 | # The arguments to jar that will include these files in a jar file. | 
|  | 167 | # Quote the file name to handle special characters (such as #) correctly. | 
|  | 168 | extra_jar_args := \ | 
|  | 169 | $(foreach group,$(java_resource_file_groups), \ | 
|  | 170 | $(addprefix -C "$(word 1,$(subst :,$(space),$(group)))" , \ | 
|  | 171 | $(foreach w, $(wordlist 2,9999,$(subst :,$(space),$(group))), "$(w)" ) \ | 
|  | 172 | ) \ | 
|  | 173 | ) | 
|  | 174 | java_resource_file_groups := | 
|  | 175 | else | 
|  | 176 | java_resource_sources := | 
|  | 177 | extra_jar_args := | 
|  | 178 | endif # java_resource_file_groups | 
|  | 179 |  | 
| Ying Wang | f8d15d6 | 2016-04-26 15:49:56 -0700 | [diff] [blame] | 180 | ##################################### | 
|  | 181 | ## Warn if there is unrecognized file in LOCAL_SRC_FILES. | 
|  | 182 | my_unknown_src_files := $(filter-out \ | 
| Colin Cross | b4ee77a | 2018-03-12 18:23:15 -0700 | [diff] [blame] | 183 | %.java %.aidl %.proto %.logtags, \ | 
| Ying Wang | f8d15d6 | 2016-04-26 15:49:56 -0700 | [diff] [blame] | 184 | $(LOCAL_SRC_FILES) $(LOCAL_INTERMEDIATE_SOURCES) $(LOCAL_GENERATED_SOURCES)) | 
|  | 185 | ifneq ($(my_unknown_src_files),) | 
|  | 186 | $(warning $(LOCAL_MODULE_MAKEFILE): $(LOCAL_MODULE): Unused source files: $(my_unknown_src_files)) | 
|  | 187 | endif | 
|  | 188 |  | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 189 | ###################################### | 
|  | 190 | ## PRIVATE java vars | 
|  | 191 | # LOCAL_SOURCE_FILES_ALL_GENERATED is set only if the module does not have static source files, | 
|  | 192 | # but generated source files in its LOCAL_INTERMEDIATE_SOURCE_DIR. | 
|  | 193 | # You have to set up the dependency in some other way. | 
| Colin Cross | f13eb55 | 2018-03-07 15:44:54 -0800 | [diff] [blame] | 194 | need_compile_java := $(strip $(all_java_sources)$(LOCAL_SRCJARS)$(all_res_assets)$(java_resource_sources))$(LOCAL_STATIC_JAVA_LIBRARIES)$(filter true,$(LOCAL_SOURCE_FILES_ALL_GENERATED)) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 195 | ifdef need_compile_java | 
|  | 196 |  | 
| Colin Cross | e8ee68b | 2017-04-07 16:28:41 -0700 | [diff] [blame] | 197 | annotation_processor_flags := | 
|  | 198 | annotation_processor_deps := | 
| Colin Cross | e46727a | 2018-06-19 22:50:13 -0700 | [diff] [blame] | 199 | annotation_processor_jars := | 
|  | 200 |  | 
|  | 201 | # If error prone is enabled then add LOCAL_ERROR_PRONE_FLAGS to LOCAL_JAVACFLAGS | 
|  | 202 | ifeq ($(RUN_ERROR_PRONE),true) | 
|  | 203 | annotation_processor_jars += $(ERROR_PRONE_JARS) | 
|  | 204 | LOCAL_JAVACFLAGS += $(ERROR_PRONE_FLAGS) | 
|  | 205 | LOCAL_JAVACFLAGS += '-Xplugin:ErrorProne $(ERROR_PRONE_CHECKS) $(LOCAL_ERROR_PRONE_FLAGS)' | 
|  | 206 | endif | 
| Colin Cross | e8ee68b | 2017-04-07 16:28:41 -0700 | [diff] [blame] | 207 |  | 
|  | 208 | ifdef LOCAL_ANNOTATION_PROCESSORS | 
| Colin Cross | e46727a | 2018-06-19 22:50:13 -0700 | [diff] [blame] | 209 | annotation_processor_jars += $(call java-lib-files,$(LOCAL_ANNOTATION_PROCESSORS),true) | 
| Colin Cross | e8ee68b | 2017-04-07 16:28:41 -0700 | [diff] [blame] | 210 |  | 
|  | 211 | # b/25860419: annotation processors must be explicitly specified for grok | 
|  | 212 | annotation_processor_flags += $(foreach class,$(LOCAL_ANNOTATION_PROCESSOR_CLASSES),-processor $(class)) | 
| Colin Cross | e46727a | 2018-06-19 22:50:13 -0700 | [diff] [blame] | 213 | endif | 
| Colin Cross | e8ee68b | 2017-04-07 16:28:41 -0700 | [diff] [blame] | 214 |  | 
| Colin Cross | e46727a | 2018-06-19 22:50:13 -0700 | [diff] [blame] | 215 | ifneq (,$(strip $(annotation_processor_jars))) | 
|  | 216 | annotation_processor_flags += -processorpath $(call normalize-path-list,$(annotation_processor_jars)) | 
|  | 217 | annotation_processor_deps += $(annotation_processor_jars) | 
| Colin Cross | e8ee68b | 2017-04-07 16:28:41 -0700 | [diff] [blame] | 218 | endif | 
|  | 219 |  | 
| Colin Cross | 9b2e4c6 | 2017-09-26 14:55:43 -0700 | [diff] [blame] | 220 | full_static_java_libs := $(call java-lib-files,$(LOCAL_STATIC_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) | 
|  | 221 | full_static_java_header_libs := $(call java-lib-header-files,$(LOCAL_STATIC_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) | 
| Nan Zhang | b3ec534 | 2017-08-31 21:43:04 +0000 | [diff] [blame] | 222 |  | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 223 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_STATIC_JAVA_LIBRARIES := $(full_static_java_libs) | 
| Nan Zhang | b3ec534 | 2017-08-31 21:43:04 +0000 | [diff] [blame] | 224 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_STATIC_JAVA_HEADER_LIBRARIES := $(full_static_java_header_libs) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 225 |  | 
|  | 226 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RESOURCE_DIR := $(LOCAL_RESOURCE_DIR) | 
|  | 227 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASSET_DIR := $(LOCAL_ASSET_DIR) | 
|  | 228 |  | 
|  | 229 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CLASS_INTERMEDIATES_DIR := $(intermediates.COMMON)/classes | 
| Colin Cross | e8ee68b | 2017-04-07 16:28:41 -0700 | [diff] [blame] | 230 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ANNO_INTERMEDIATES_DIR := $(intermediates.COMMON)/anno | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 231 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/src | 
| Dan Willemsen | cf324af | 2016-12-21 17:37:00 -0800 | [diff] [blame] | 232 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HAS_RS_SOURCES := | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 233 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAVA_SOURCES := $(all_java_sources) | 
| Colin Cross | dfc45ec | 2017-05-26 15:22:02 -0700 | [diff] [blame] | 234 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAVA_SOURCE_LIST := $(java_source_list_file) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 235 |  | 
|  | 236 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RMTYPEDEFS := $(LOCAL_RMTYPEDEFS) | 
|  | 237 |  | 
| Anton Hansson | 9d03060 | 2018-04-12 19:10:03 +0100 | [diff] [blame] | 238 | # Sanity check class path vars. | 
|  | 239 | disallowed_deps := $(foreach sdk,$(TARGET_AVAILABLE_SDK_VERSIONS),$(call resolve-prebuilt-sdk-module,$(sdk))) | 
|  | 240 | disallowed_deps += $(foreach sdk,$(TARGET_AVAILABLE_SDK_VERSIONS),\ | 
|  | 241 | $(foreach sdk_lib,$(JAVA_SDK_LIBRARIES),$(call resolve-prebuilt-sdk-module,$(sdk),$(sdk_lib)))) | 
|  | 242 | bad_deps := $(filter $(disallowed_deps),$(LOCAL_JAVA_LIBRARIES) $(LOCAL_STATIC_JAVA_LIBRARIES)) | 
|  | 243 | ifneq (,$(bad_deps)) | 
|  | 244 | $(call pretty-error,SDK modules should not be depended on directly. Please use LOCAL_SDK_VERSION for $(bad_deps)) | 
|  | 245 | endif | 
|  | 246 |  | 
| Colin Cross | 1d1e5ef | 2017-09-23 18:19:05 -0700 | [diff] [blame] | 247 | full_java_bootclasspath_libs := | 
|  | 248 | empty_bootclasspath := | 
| Colin Cross | f960257 | 2017-10-12 13:34:40 -0700 | [diff] [blame] | 249 | my_system_modules := | 
| Jiyong Park | 1cf8ee6 | 2018-05-22 15:39:59 +0900 | [diff] [blame] | 250 | exported_sdk_libs_files := | 
|  | 251 | my_exported_sdk_libs_file := | 
| Colin Cross | 1d1e5ef | 2017-09-23 18:19:05 -0700 | [diff] [blame] | 252 |  | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 253 | ifndef LOCAL_IS_HOST_MODULE | 
| Anton Hansson | f5cefdc | 2018-04-12 16:17:55 +0100 | [diff] [blame] | 254 | sdk_libs := | 
| Anton Hansson | 8ae3001 | 2018-04-24 14:22:51 +0100 | [diff] [blame] | 255 |  | 
| Jiyong Park | cd06fe3 | 2018-04-27 16:21:00 +0900 | [diff] [blame] | 256 | # When an sdk lib name is listed in LOCAL_JAVA_LIBRARIES, move it to LOCAL_SDK_LIBRARIES, so that | 
|  | 257 | # it is correctly redirected to the stubs library. | 
|  | 258 | LOCAL_SDK_LIBRARIES += $(filter $(JAVA_SDK_LIBRARIES),$(LOCAL_JAVA_LIBRARIES)) | 
|  | 259 | LOCAL_JAVA_LIBRARIES := $(filter-out $(JAVA_SDK_LIBRARIES),$(LOCAL_JAVA_LIBRARIES)) | 
|  | 260 |  | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 261 | ifeq ($(LOCAL_SDK_VERSION),) | 
|  | 262 | ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) | 
|  | 263 | # No bootclasspath. But we still need "" to prevent javac from using default host bootclasspath. | 
| Colin Cross | 1d1e5ef | 2017-09-23 18:19:05 -0700 | [diff] [blame] | 264 | empty_bootclasspath := "" | 
| Colin Cross | f960257 | 2017-10-12 13:34:40 -0700 | [diff] [blame] | 265 | # Most users of LOCAL_NO_STANDARD_LIBRARIES really mean no framework libs, | 
|  | 266 | # and manually add back the core libs.  The ones that don't are in soong | 
|  | 267 | # now, so just always assume that they want the default system modules | 
|  | 268 | my_system_modules := $(DEFAULT_SYSTEM_MODULES) | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 269 | else  # LOCAL_NO_STANDARD_LIBRARIES | 
| Colin Cross | 98caed6 | 2017-10-25 17:33:38 -0700 | [diff] [blame] | 270 | full_java_bootclasspath_libs := $(call java-lib-header-files,$(TARGET_DEFAULT_BOOTCLASSPATH_LIBRARIES) $(TARGET_DEFAULT_JAVA_LIBRARIES)) | 
|  | 271 | LOCAL_JAVA_LIBRARIES := $(filter-out $(TARGET_DEFAULT_BOOTCLASSPATH_LIBRARIES) $(TARGET_DEFAULT_JAVA_LIBRARIES),$(LOCAL_JAVA_LIBRARIES)) | 
| Colin Cross | f960257 | 2017-10-12 13:34:40 -0700 | [diff] [blame] | 272 | my_system_modules := $(DEFAULT_SYSTEM_MODULES) | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 273 | endif  # LOCAL_NO_STANDARD_LIBRARIES | 
| Jiyong Park | 45bb10c | 2018-05-03 01:47:35 +0900 | [diff] [blame] | 274 |  | 
| Colin Cross | 8e0ff1c | 2018-12-18 22:43:16 -0800 | [diff] [blame] | 275 | ifneq (,$(TARGET_BUILD_APPS_USE_PREBUILT_SDK)) | 
| Jiyong Park | 45bb10c | 2018-05-03 01:47:35 +0900 | [diff] [blame] | 276 | sdk_libs := $(foreach lib_name,$(LOCAL_SDK_LIBRARIES),$(call resolve-prebuilt-sdk-module,system_current,$(lib_name))) | 
|  | 277 | else | 
| Sundong Ahn | 2b17041 | 2018-05-18 09:55:27 +0900 | [diff] [blame] | 278 | # When SDK libraries are referenced from modules built without SDK, provide the all APIs to them | 
| Sundong Ahn | a9f2ef5 | 2018-11-08 18:52:38 +0900 | [diff] [blame] | 279 | sdk_libs := $(foreach lib_name,$(LOCAL_SDK_LIBRARIES),$(lib_name)) | 
| Jiyong Park | 45bb10c | 2018-05-03 01:47:35 +0900 | [diff] [blame] | 280 | endif | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 281 | else | 
| Colin Cross | b541aae | 2017-09-23 19:52:43 -0700 | [diff] [blame] | 282 | ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) | 
|  | 283 | $(call pretty-error,Must not define both LOCAL_NO_STANDARD_LIBRARIES and LOCAL_SDK_VERSION) | 
|  | 284 | endif | 
|  | 285 | ifeq ($(strip $(filter $(LOCAL_SDK_VERSION),$(TARGET_AVAILABLE_SDK_VERSIONS))),) | 
|  | 286 | $(call pretty-error,Invalid LOCAL_SDK_VERSION '$(LOCAL_SDK_VERSION)' \ | 
|  | 287 | Choices are: $(TARGET_AVAILABLE_SDK_VERSIONS)) | 
|  | 288 | endif | 
| Anton Hansson | 8ae3001 | 2018-04-24 14:22:51 +0100 | [diff] [blame] | 289 |  | 
| Colin Cross | 8e0ff1c | 2018-12-18 22:43:16 -0800 | [diff] [blame] | 290 | ifneq (,$(TARGET_BUILD_APPS_USE_PREBUILT_SDK)$(filter-out %current,$(LOCAL_SDK_VERSION))) | 
| Anton Hansson | 8ae3001 | 2018-04-24 14:22:51 +0100 | [diff] [blame] | 291 | # TARGET_BUILD_APPS mode or numbered SDK. Use prebuilt modules. | 
|  | 292 | sdk_module := $(call resolve-prebuilt-sdk-module,$(LOCAL_SDK_VERSION)) | 
| Anton Hansson | f5cefdc | 2018-04-12 16:17:55 +0100 | [diff] [blame] | 293 | sdk_libs := $(foreach lib_name,$(LOCAL_SDK_LIBRARIES),$(call resolve-prebuilt-sdk-module,$(LOCAL_SDK_VERSION),$(lib_name))) | 
| Anton Hansson | 8ae3001 | 2018-04-24 14:22:51 +0100 | [diff] [blame] | 294 | else | 
|  | 295 | # Note: the lib naming scheme must be kept in sync with build/soong/java/sdk_library.go. | 
|  | 296 | sdk_lib_suffix = $(call pretty-error,sdk_lib_suffix was not set correctly) | 
|  | 297 | ifeq (current,$(LOCAL_SDK_VERSION)) | 
|  | 298 | sdk_module := android_stubs_current | 
|  | 299 | sdk_lib_suffix := .stubs | 
|  | 300 | else ifeq (system_current,$(LOCAL_SDK_VERSION)) | 
|  | 301 | sdk_module := android_system_stubs_current | 
|  | 302 | sdk_lib_suffix := .stubs.system | 
|  | 303 | else ifeq (test_current,$(LOCAL_SDK_VERSION)) | 
|  | 304 | sdk_module := android_test_stubs_current | 
| Jiyong Park | 6023db8 | 2018-04-27 16:23:38 +0900 | [diff] [blame] | 305 | sdk_lib_suffix := .stubs.test | 
| Anton Hansson | 8ae3001 | 2018-04-24 14:22:51 +0100 | [diff] [blame] | 306 | else ifeq (core_current,$(LOCAL_SDK_VERSION)) | 
|  | 307 | sdk_module := core.current.stubs | 
|  | 308 | sdk_lib_suffix = $(call pretty-error,LOCAL_SDK_LIBRARIES not supported for LOCAL_SDK_VERSION = core_current) | 
|  | 309 | endif | 
|  | 310 | sdk_libs := $(foreach lib_name,$(LOCAL_SDK_LIBRARIES),$(lib_name)$(sdk_lib_suffix)) | 
|  | 311 | endif | 
|  | 312 | full_java_bootclasspath_libs := $(call java-lib-header-files,$(sdk_module)) | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 313 | endif # LOCAL_SDK_VERSION | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 314 |  | 
| Allen Hair | 1d226aa | 2017-10-31 14:05:35 -0700 | [diff] [blame] | 315 | ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) | 
|  | 316 | ifneq ($(LOCAL_MODULE),jacocoagent) | 
|  | 317 | ifeq ($(EMMA_INSTRUMENT),true) | 
|  | 318 | ifneq ($(EMMA_INSTRUMENT_STATIC),true) | 
|  | 319 | # For instrumented build, if Jacoco is not being included statically | 
|  | 320 | # in instrumented packages then include Jacoco classes into the | 
|  | 321 | # bootclasspath. | 
|  | 322 | full_java_bootclasspath_libs += $(call java-lib-header-files,jacocoagent) | 
|  | 323 | endif # EMMA_INSTRUMENT_STATIC | 
|  | 324 | endif # EMMA_INSTRUMENT | 
|  | 325 | endif # LOCAL_MODULE == jacocoagent | 
|  | 326 | endif # LOCAL_NO_STANDARD_LIBRARIES | 
|  | 327 |  | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 328 | # In order to compile lambda code javac requires various invokedynamic- | 
|  | 329 | # related classes to be present. This change adds stubs needed for | 
|  | 330 | # javac to compile lambdas. | 
| Colin Cross | 5d969a3 | 2017-09-22 15:03:38 -0700 | [diff] [blame] | 331 | ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) | 
| Colin Cross | 8e0ff1c | 2018-12-18 22:43:16 -0800 | [diff] [blame] | 332 | ifdef TARGET_BUILD_APPS_USE_PREBUILT_SDK | 
| Colin Cross | 5d969a3 | 2017-09-22 15:03:38 -0700 | [diff] [blame] | 333 | full_java_bootclasspath_libs += $(call java-lib-header-files,sdk-core-lambda-stubs) | 
|  | 334 | else | 
|  | 335 | full_java_bootclasspath_libs += $(call java-lib-header-files,core-lambda-stubs) | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 336 | endif | 
|  | 337 | endif | 
| Anton Hansson | f5cefdc | 2018-04-12 16:17:55 +0100 | [diff] [blame] | 338 | full_shared_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES) $(sdk_libs),$(LOCAL_IS_HOST_MODULE)) | 
|  | 339 | full_shared_java_header_libs := $(call java-lib-header-files,$(LOCAL_JAVA_LIBRARIES) $(sdk_libs),$(LOCAL_IS_HOST_MODULE)) | 
|  | 340 | sdk_libs := | 
| Jiyong Park | 1cf8ee6 | 2018-05-22 15:39:59 +0900 | [diff] [blame] | 341 |  | 
|  | 342 | # Files that contains the names of SDK libraries exported from dependencies. These will be re-exported. | 
|  | 343 | # Note: No need to consider LOCAL_*_ANDROID_LIBRARIES and LOCAL_STATIC_JAVA_AAR_LIBRARIES. They are all appended to | 
|  | 344 | # LOCAL_*_JAVA_LIBRARIES in java.mk | 
|  | 345 | exported_sdk_libs_files := $(call exported-sdk-libs-files,$(LOCAL_JAVA_LIBRARIES) $(LOCAL_STATIC_JAVA_LIBRARIES)) | 
|  | 346 | # The file that contains the names of all SDK libraries that this module exports and re-exports | 
|  | 347 | my_exported_sdk_libs_file := $(call local-intermediates-dir,COMMON)/exported-sdk-libs | 
|  | 348 |  | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 349 | else # LOCAL_IS_HOST_MODULE | 
|  | 350 |  | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 351 | ifeq ($(USE_CORE_LIB_BOOTCLASSPATH),true) | 
|  | 352 | ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) | 
| Colin Cross | 1d1e5ef | 2017-09-23 18:19:05 -0700 | [diff] [blame] | 353 | empty_bootclasspath := "" | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 354 | else | 
| Colin Cross | b541aae | 2017-09-23 19:52:43 -0700 | [diff] [blame] | 355 | full_java_bootclasspath_libs := $(call java-lib-header-files,$(addsuffix -hostdex,$(TARGET_DEFAULT_BOOTCLASSPATH_LIBRARIES)),true) | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 356 | endif | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 357 |  | 
| Colin Cross | f960257 | 2017-10-12 13:34:40 -0700 | [diff] [blame] | 358 | my_system_modules := $(DEFAULT_SYSTEM_MODULES) | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 359 | full_shared_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES),true) | 
|  | 360 | full_shared_java_header_libs := $(call java-lib-header-files,$(LOCAL_JAVA_LIBRARIES),true) | 
|  | 361 | else # !USE_CORE_LIB_BOOTCLASSPATH | 
| Tobias Thierer | 7e99d45 | 2017-12-20 18:36:56 +0000 | [diff] [blame] | 362 | # Give host-side tools a version of OpenJDK's standard libraries | 
|  | 363 | # close to what they're targeting. As of Dec 2017, AOSP is only | 
|  | 364 | # bundling OpenJDK 8 and 9, so nothing < 8 is available. | 
|  | 365 | # | 
|  | 366 | # When building with OpenJDK 8, the following should have no | 
|  | 367 | # effect since those jars would be available by default. | 
|  | 368 | # | 
|  | 369 | # When building with OpenJDK 9 but targeting a version < 1.8, | 
|  | 370 | # putting them on the bootclasspath means that: | 
|  | 371 | # a) code can't (accidentally) refer to OpenJDK 9 specific APIs | 
|  | 372 | # b) references to existing APIs are not reinterpreted in an | 
|  | 373 | #    OpenJDK 9-specific way, eg. calls to subclasses of | 
|  | 374 | #    java.nio.Buffer as in http://b/70862583 | 
|  | 375 | ifeq ($(USE_HOST_BOOTSTRAP_JARS),true) | 
|  | 376 | full_java_bootclasspath_libs += $(ANDROID_JAVA8_HOME)/jre/lib/jce.jar | 
|  | 377 | full_java_bootclasspath_libs += $(ANDROID_JAVA8_HOME)/jre/lib/rt.jar | 
|  | 378 | endif | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 379 | full_shared_java_libs := $(addprefix $(HOST_OUT_JAVA_LIBRARIES)/,\ | 
|  | 380 | $(addsuffix $(COMMON_JAVA_PACKAGE_SUFFIX),$(LOCAL_JAVA_LIBRARIES))) | 
| Colin Cross | 98caed6 | 2017-10-25 17:33:38 -0700 | [diff] [blame] | 381 | full_shared_java_header_libs := $(full_shared_java_libs) | 
| Colin Cross | f6bc1a1 | 2017-09-23 19:47:37 -0700 | [diff] [blame] | 382 | endif # USE_CORE_LIB_BOOTCLASSPATH | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 383 | endif # !LOCAL_IS_HOST_MODULE | 
|  | 384 |  | 
| bralee | 0903362 | 2019-01-17 15:11:23 +0800 | [diff] [blame] | 385 | ALL_DEPS.$(LOCAL_MODULE).ALL_DEPS := $(ALL_DEPS.$(LOCAL_MODULE).ALL_DEPS) $(full_java_bootclasspath_libs) | 
| Jiyong Park | 1cf8ee6 | 2018-05-22 15:39:59 +0900 | [diff] [blame] | 386 |  | 
|  | 387 | # Export the SDK libs. The sdk library names listed in LOCAL_SDK_LIBRARIES are first exported. | 
|  | 388 | # Then sdk library names exported from dependencies are all re-exported. | 
|  | 389 | $(my_exported_sdk_libs_file): PRIVATE_EXPORTED_SDK_LIBS_FILES := $(exported_sdk_libs_files) | 
|  | 390 | $(my_exported_sdk_libs_file): PRIVATE_SDK_LIBS := $(sort $(LOCAL_SDK_LIBRARIES)) | 
|  | 391 | $(my_exported_sdk_libs_file): $(exported_sdk_libs_files) | 
|  | 392 | @echo "Export SDK libs $@" | 
|  | 393 | $(hide) mkdir -p $(dir $@) && rm -f $@ $@.temp | 
|  | 394 | $(if $(PRIVATE_SDK_LIBS),\ | 
|  | 395 | echo $(PRIVATE_SDK_LIBS) | tr ' ' '\n' > $@.temp,\ | 
|  | 396 | touch $@.temp) | 
|  | 397 | $(if $(PRIVATE_EXPORTED_SDK_LIBS_FILES),\ | 
|  | 398 | cat $(PRIVATE_EXPORTED_SDK_LIBS_FILES) >> $@.temp) | 
|  | 399 | $(hide) cat $@.temp | sort -u > $@ | 
|  | 400 | $(hide) rm -f $@.temp | 
|  | 401 |  | 
| Colin Cross | 1d1e5ef | 2017-09-23 18:19:05 -0700 | [diff] [blame] | 402 | ifdef empty_bootclasspath | 
|  | 403 | ifdef full_java_bootclasspath_libs | 
|  | 404 | $(call pretty-error,internal error: empty_bootclasspath and full_java_bootclasspath_libs should not both be set) | 
|  | 405 | endif | 
|  | 406 | endif | 
|  | 407 |  | 
| Colin Cross | f960257 | 2017-10-12 13:34:40 -0700 | [diff] [blame] | 408 | full_java_system_modules_deps := | 
|  | 409 | my_system_modules_dir := | 
|  | 410 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_USE_SYSTEM_MODULES := | 
|  | 411 | ifeq ($(LOCAL_JAVA_LANGUAGE_VERSION),1.9) | 
|  | 412 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_USE_SYSTEM_MODULES := true | 
|  | 413 | ifdef my_system_modules | 
|  | 414 | ifneq ($(my_system_modules),none) | 
|  | 415 | ifndef SOONG_SYSTEM_MODULES_$(my_system_modules) | 
|  | 416 | $(call pretty-error, Invalid system modules $(my_system_modules)) | 
|  | 417 | endif | 
| Dan Willemsen | 70b934e | 2019-06-13 16:50:22 +0000 | [diff] [blame] | 418 | full_java_system_modules_deps := $(SOONG_SYSTEM_MODULES_DEPS_$(my_system_modules)) | 
|  | 419 | my_system_modules_dir := $(SOONG_SYSTEM_MODULES_$(my_system_modules)) | 
| Colin Cross | f960257 | 2017-10-12 13:34:40 -0700 | [diff] [blame] | 420 | endif | 
|  | 421 | endif | 
|  | 422 | endif | 
|  | 423 |  | 
| Colin Cross | b541aae | 2017-09-23 19:52:43 -0700 | [diff] [blame] | 424 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH := $(full_java_bootclasspath_libs) | 
|  | 425 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EMPTY_BOOTCLASSPATH := $(empty_bootclasspath) | 
| Tobias Thierer | 0276db1 | 2017-11-01 16:53:09 +0000 | [diff] [blame] | 426 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SYSTEM_MODULES := $(my_system_modules) | 
|  | 427 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SYSTEM_MODULES_DIR := $(my_system_modules_dir) | 
|  | 428 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SYSTEM_MODULES_LIBS := $(call java-lib-files,$(SOONG_SYSTEM_MODULES_LIBS_$(my_system_modules))) | 
| Tobias Thierer | f795dcb | 2018-01-09 20:33:08 +0000 | [diff] [blame] | 429 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_PATCH_MODULE := $(LOCAL_PATCH_MODULE) | 
| Colin Cross | 1d1e5ef | 2017-09-23 18:19:05 -0700 | [diff] [blame] | 430 |  | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 431 | ifndef LOCAL_IS_HOST_MODULE | 
|  | 432 | # This is set by packages that are linking to other packages that export | 
|  | 433 | # shared libraries, allowing them to make use of the code in the linked apk. | 
|  | 434 | apk_libraries := $(sort $(LOCAL_APK_LIBRARIES) $(LOCAL_RES_LIBRARIES)) | 
|  | 435 | ifneq ($(apk_libraries),) | 
| Colin Cross | 9b2e4c6 | 2017-09-26 14:55:43 -0700 | [diff] [blame] | 436 | link_apk_libraries := $(call app-lib-files,$(apk_libraries)) | 
|  | 437 | link_apk_header_libs := $(call app-lib-header-files,$(apk_libraries)) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 438 |  | 
|  | 439 | # link against the jar with full original names (before proguard processing). | 
|  | 440 | full_shared_java_libs += $(link_apk_libraries) | 
| Colin Cross | 98caed6 | 2017-10-25 17:33:38 -0700 | [diff] [blame] | 441 | full_shared_java_header_libs += $(link_apk_header_libs) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 442 | endif | 
|  | 443 |  | 
|  | 444 | # This is set by packages that contain instrumentation, allowing them to | 
|  | 445 | # link against the package they are instrumenting.  Currently only one such | 
|  | 446 | # package is allowed. | 
|  | 447 | LOCAL_INSTRUMENTATION_FOR := $(strip $(LOCAL_INSTRUMENTATION_FOR)) | 
|  | 448 | ifdef LOCAL_INSTRUMENTATION_FOR | 
|  | 449 | ifneq ($(words $(LOCAL_INSTRUMENTATION_FOR)),1) | 
|  | 450 | $(error \ | 
|  | 451 | $(LOCAL_PATH): Multiple LOCAL_INSTRUMENTATION_FOR members defined) | 
|  | 452 | endif | 
|  | 453 |  | 
|  | 454 | link_instr_intermediates_dir.COMMON := $(call intermediates-dir-for, \ | 
|  | 455 | APPS,$(LOCAL_INSTRUMENTATION_FOR),,COMMON) | 
|  | 456 | # link against the jar with full original names (before proguard processing). | 
| Colin Cross | 950f1ef | 2017-04-05 15:30:42 -0700 | [diff] [blame] | 457 | link_instr_classes_jar := $(link_instr_intermediates_dir.COMMON)/classes-pre-proguard.jar | 
| Colin Cross | 7dc9043 | 2017-09-26 16:17:24 -0700 | [diff] [blame] | 458 | ifneq ($(TURBINE_ENABLED),false) | 
|  | 459 | link_instr_classes_header_jar := $(link_instr_intermediates_dir.COMMON)/classes-header.jar | 
|  | 460 | else | 
|  | 461 | link_instr_classes_header_jar := $(link_instr_intermediates_dir.COMMON)/classes.jar | 
|  | 462 | endif | 
| Colin Cross | 98caed6 | 2017-10-25 17:33:38 -0700 | [diff] [blame] | 463 | full_shared_java_libs += $(link_instr_classes_jar) | 
|  | 464 | full_shared_java_header_libs += $(link_instr_classes_header_jar) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 465 | endif  # LOCAL_INSTRUMENTATION_FOR | 
|  | 466 | endif  # LOCAL_IS_HOST_MODULE | 
|  | 467 |  | 
|  | 468 | endif  # need_compile_java | 
|  | 469 |  | 
|  | 470 | # We may want to add jar manifest or jar resource files even if there is no java code at all. | 
|  | 471 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS := $(extra_jar_args) | 
|  | 472 | jar_manifest_file := | 
|  | 473 | ifneq ($(strip $(LOCAL_JAR_MANIFEST)),) | 
|  | 474 | jar_manifest_file := $(LOCAL_PATH)/$(LOCAL_JAR_MANIFEST) | 
|  | 475 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAR_MANIFEST := $(jar_manifest_file) | 
|  | 476 | else | 
|  | 477 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAR_MANIFEST := | 
|  | 478 | endif | 
|  | 479 |  | 
|  | 480 | ########################################################## | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 481 |  | 
| Colin Cross | 98caed6 | 2017-10-25 17:33:38 -0700 | [diff] [blame] | 482 | full_java_libs := $(full_shared_java_libs) $(full_static_java_libs) $(LOCAL_CLASSPATH) | 
|  | 483 | full_java_header_libs := $(full_shared_java_header_libs) $(full_static_java_header_libs) | 
|  | 484 |  | 
| Ying Wang | 6f9bd2a | 2016-03-29 12:41:42 -0700 | [diff] [blame] | 485 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ALL_JAVA_LIBRARIES := $(full_java_libs) | 
| Nan Zhang | b3ec534 | 2017-08-31 21:43:04 +0000 | [diff] [blame] | 486 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ALL_JAVA_HEADER_LIBRARIES := $(full_java_header_libs) | 
| Colin Cross | 98caed6 | 2017-10-25 17:33:38 -0700 | [diff] [blame] | 487 | $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SHARED_JAVA_HEADER_LIBRARIES := $(full_shared_java_header_libs) | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 488 |  | 
|  | 489 | ALL_MODULES.$(my_register_name).INTERMEDIATE_SOURCE_DIR := \ | 
|  | 490 | $(ALL_MODULES.$(my_register_name).INTERMEDIATE_SOURCE_DIR) $(LOCAL_INTERMEDIATE_SOURCE_DIR) | 
|  | 491 |  | 
| Colin Cross | 579668b | 2018-08-14 13:13:47 -0700 | [diff] [blame] | 492 |  | 
|  | 493 | ########################################################## | 
|  | 494 | # Copy NOTICE files of transitive static dependencies | 
|  | 495 | # Don't do this in mm, since many of the targets won't exist. | 
| Colin Cross | 579668b | 2018-08-14 13:13:47 -0700 | [diff] [blame] | 496 | installed_static_library_notice_file_targets := \ | 
|  | 497 | $(foreach lib,$(LOCAL_STATIC_JAVA_LIBRARIES), \ | 
| Jaewoong Jung | e8cb195 | 2018-11-08 16:53:02 -0800 | [diff] [blame] | 498 | NOTICE-$(if $(LOCAL_IS_HOST_MODULE),HOST$(if $(my_host_cross),_CROSS,),TARGET)-JAVA_LIBRARIES-$(lib)) | 
| Colin Cross | 579668b | 2018-08-14 13:13:47 -0700 | [diff] [blame] | 499 |  | 
|  | 500 | $(notice_target): | $(installed_static_library_notice_file_targets) | 
|  | 501 | $(LOCAL_INSTALLED_MODULE): | $(notice_target) | 
|  | 502 |  | 
| Ying Wang | 956dccc | 2015-08-28 11:47:03 -0700 | [diff] [blame] | 503 | ########################################################### | 
| Dan Willemsen | 62dfb59 | 2016-07-08 21:33:05 -0700 | [diff] [blame] | 504 | # Verify that all libraries are safe to use | 
|  | 505 | ########################################################### | 
|  | 506 | ifndef LOCAL_IS_HOST_MODULE | 
| Dan Willemsen | 62dfb59 | 2016-07-08 21:33:05 -0700 | [diff] [blame] | 507 | ifeq ($(LOCAL_SDK_VERSION),system_current) | 
| Dan Willemsen | b47d4e9 | 2017-04-08 00:31:31 -0700 | [diff] [blame] | 508 | my_link_type := java:system | 
| Jiyong Park | 3d71a08 | 2018-02-23 18:12:59 +0900 | [diff] [blame] | 509 | my_warn_types := | 
| Jiyong Park | 5ebca30 | 2018-01-31 00:14:55 +0900 | [diff] [blame] | 510 | my_allowed_types := java:sdk java:system java:core | 
| Sundong Ahn | 5a44d1f | 2017-10-16 19:20:34 +0900 | [diff] [blame] | 511 | else ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION))) | 
|  | 512 | my_link_type := java:system | 
| Jiyong Park | 3d71a08 | 2018-02-23 18:12:59 +0900 | [diff] [blame] | 513 | my_warn_types := | 
| Jiyong Park | 5ebca30 | 2018-01-31 00:14:55 +0900 | [diff] [blame] | 514 | my_allowed_types := java:sdk java:system java:core | 
|  | 515 | else ifeq ($(LOCAL_SDK_VERSION),core_current) | 
|  | 516 | my_link_type := java:core | 
|  | 517 | my_warn_types := | 
|  | 518 | my_allowed_types := java:core | 
| Dan Willemsen | 62dfb59 | 2016-07-08 21:33:05 -0700 | [diff] [blame] | 519 | else ifneq ($(LOCAL_SDK_VERSION),) | 
| Dan Willemsen | b47d4e9 | 2017-04-08 00:31:31 -0700 | [diff] [blame] | 520 | my_link_type := java:sdk | 
| Jiyong Park | 3d71a08 | 2018-02-23 18:12:59 +0900 | [diff] [blame] | 521 | my_warn_types := | 
| Jiyong Park | 5ebca30 | 2018-01-31 00:14:55 +0900 | [diff] [blame] | 522 | my_allowed_types := java:sdk java:core | 
| Dan Willemsen | 62dfb59 | 2016-07-08 21:33:05 -0700 | [diff] [blame] | 523 | else | 
| Dan Willemsen | b47d4e9 | 2017-04-08 00:31:31 -0700 | [diff] [blame] | 524 | my_link_type := java:platform | 
|  | 525 | my_warn_types := | 
| Jiyong Park | 5ebca30 | 2018-01-31 00:14:55 +0900 | [diff] [blame] | 526 | my_allowed_types := java:sdk java:system java:platform java:core | 
| Dan Willemsen | 62dfb59 | 2016-07-08 21:33:05 -0700 | [diff] [blame] | 527 | endif | 
| Dan Willemsen | 62dfb59 | 2016-07-08 21:33:05 -0700 | [diff] [blame] | 528 |  | 
| Dan Willemsen | bb6393c | 2017-11-17 15:39:52 -0800 | [diff] [blame] | 529 | my_link_deps := $(addprefix JAVA_LIBRARIES:,$(LOCAL_STATIC_JAVA_LIBRARIES) $(LOCAL_JAVA_LIBRARIES)) | 
| Dan Willemsen | b47d4e9 | 2017-04-08 00:31:31 -0700 | [diff] [blame] | 530 | my_link_deps += $(addprefix APPS:,$(apk_libraries)) | 
|  | 531 |  | 
|  | 532 | my_2nd_arch_prefix := $(LOCAL_2ND_ARCH_VAR_PREFIX) | 
|  | 533 | my_common := COMMON | 
|  | 534 | include $(BUILD_SYSTEM)/link_type.mk | 
| Dan Willemsen | 62dfb59 | 2016-07-08 21:33:05 -0700 | [diff] [blame] | 535 | endif  # !LOCAL_IS_HOST_MODULE | 
| Colin Cross | 3277ba3 | 2017-12-06 14:37:06 -0800 | [diff] [blame] | 536 |  | 
|  | 537 | ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) | 
|  | 538 |  | 
|  | 539 | SOONG_CONV.$(LOCAL_MODULE).PROBLEMS := \ | 
|  | 540 | $(SOONG_CONV.$(LOCAL_MODULE).PROBLEMS) $(my_soong_problems) | 
|  | 541 | SOONG_CONV.$(LOCAL_MODULE).DEPS := \ | 
|  | 542 | $(SOONG_CONV.$(LOCAL_MODULE).DEPS) \ | 
|  | 543 | $(LOCAL_STATIC_JAVA_LIBRARIES) \ | 
|  | 544 | $(LOCAL_JAVA_LIBRARIES) \ | 
|  | 545 | $(LOCAL_JNI_SHARED_LIBRARIES) | 
|  | 546 | SOONG_CONV.$(LOCAL_MODULE).TYPE := java | 
|  | 547 | SOONG_CONV := $(SOONG_CONV) $(LOCAL_MODULE) | 
|  | 548 |  | 
|  | 549 | endif |