Support java annotation proccessors The codebase is growing more uses of annotation processors, through a mixture of LOCAL_ADDITIONAL_DEPENDENCIES and LOCAL_JACK_FLAGS. Add LOCAL_ANNOTATION_PROCESSORS and handle the rest in the build system. For now we also need LOCAL_ANNOTATION_PROCESSOR_CLASSES to work around bad behavior in grok (b/25860419). Test: m -j java Change-Id: I465b021e65d25ed3ea517333a82ec4ebd63fc038 (cherry picked from commit cde14987ba2a4a054ba4e2f711a4b714dfc54853)
diff --git a/core/java_common.mk b/core/java_common.mk index 03856ac..db4ccaa 100644 --- a/core/java_common.mk +++ b/core/java_common.mk
@@ -153,6 +153,20 @@ need_compile_java := $(strip $(all_java_sources)$(all_res_assets)$(java_resource_sources))$(LOCAL_STATIC_JAVA_LIBRARIES)$(filter true,$(LOCAL_SOURCE_FILES_ALL_GENERATED)) ifdef need_compile_java +annotation_processor_flags := +annotation_processor_deps := + +ifdef LOCAL_ANNOTATION_PROCESSORS + annotation_processor_jars := $(call java-lib-deps,$(LOCAL_ANNOTATION_PROCESSORS),true) + annotation_processor_flags += -processorpath $(call normalize-path-list,$(annotation_processor_jars)) + annotation_processor_deps += $(annotation_processor_jars) + + # b/25860419: annotation processors must be explicitly specified for grok + annotation_processor_flags += $(foreach class,$(LOCAL_ANNOTATION_PROCESSOR_CLASSES),-processor $(class)) + + annotation_processor_jars := +endif + full_static_java_libs := \ $(foreach lib,$(LOCAL_STATIC_JAVA_LIBRARIES), \ $(call intermediates-dir-for, \ @@ -164,6 +178,7 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASSET_DIR := $(LOCAL_ASSET_DIR) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CLASS_INTERMEDIATES_DIR := $(intermediates.COMMON)/classes +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ANNO_INTERMEDIATES_DIR := $(intermediates.COMMON)/anno $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/src $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HAS_PROTO_SOURCES := $(if $(proto_sources),true) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_PROTO_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/proto