diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 5209a04d86..0720efaecb 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -123,6 +123,7 @@ LOCAL_CTS_TEST_RUNNER:= LOCAL_CLANG:= LOCAL_ADDRESS_SANITIZER:= LOCAL_JAR_EXCLUDE_FILES:= +LOCAL_SOURCE_FILES_ALL_GENERATED:= # '',true # Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to # iterate over thousands of entries every time. diff --git a/core/java.mk b/core/java.mk index 4e33ef2a80..9a4f3a247f 100644 --- a/core/java.mk +++ b/core/java.mk @@ -15,8 +15,11 @@ endif #PDK # Make sure there's something to build. # It's possible to build a package that doesn't contain any classes. -ifeq (,$(strip $(LOCAL_SRC_FILES)$(all_res_assets)$(LOCAL_STATIC_JAVA_LIBRARIES))) -$(error $(LOCAL_PATH): Target java module does not define any source or resource files) +# LOCAL_SOURCE_FILES_ALL_GENERATED is set only if the module does not have static source files, +# but generated source files in its LOCAL_INTERMEDIATE_SOURCE_DIR. +# You have to set up the dependency in some other way. +ifeq (,$(strip $(LOCAL_SRC_FILES)$(all_res_assets)$(LOCAL_STATIC_JAVA_LIBRARIES))$(filter true,$(LOCAL_SOURCE_FILES_ALL_GENERATED))) +$(warning $(LOCAL_PATH): Target java module does not define any source or resource files) endif LOCAL_NO_STANDARD_LIBRARIES:=$(strip $(LOCAL_NO_STANDARD_LIBRARIES)) @@ -232,7 +235,7 @@ $(cleantarget): PRIVATE_CLEAN_FILES += $(intermediates.COMMON) # If the module includes java code (i.e., it's not framework-res), compile it. full_classes_jar := built_dex := -ifneq (,$(strip $(all_java_sources)$(full_static_java_libs))) +ifneq (,$(strip $(all_java_sources)$(full_static_java_libs))$(filter true,$(LOCAL_SOURCE_FILES_ALL_GENERATED))) # If LOCAL_BUILT_MODULE_STEM wasn't overridden by our caller, # full_classes_jar will be the same module as LOCAL_BUILT_MODULE.