Merge "Fix handling of .o files in LOCAL_GENERATED_SOURCES." into klp-dev
diff --git a/core/binary.mk b/core/binary.mk
index 3b3557d..554b8c7 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -602,7 +602,7 @@
# some rules depend on asm_objects being first. If your code depends on
# being first, it's reasonable to require it to be assembly
-all_objects := \
+normal_objects := \
$(asm_objects) \
$(cpp_objects) \
$(gen_cpp_objects) \
@@ -613,8 +613,9 @@
$(yacc_objects) \
$(lex_objects) \
$(proto_generated_objects) \
- $(addprefix $(TOPDIR)$(LOCAL_PATH)/,$(LOCAL_PREBUILT_OBJ_FILES)) \
- $(gen_o_objects)
+ $(addprefix $(TOPDIR)$(LOCAL_PATH)/,$(LOCAL_PREBUILT_OBJ_FILES))
+
+all_objects := $(normal_objects) $(gen_o_objects)
LOCAL_C_INCLUDES += $(TOPDIR)$(LOCAL_PATH) $(intermediates)
@@ -622,9 +623,12 @@
LOCAL_C_INCLUDES += $(JNI_H_INCLUDE)
endif
-# .o files need to be filtered out of LOCAL_GENERATED_SOURCES
-# to avoid creating circular dependencies.
-$(all_objects) : | $(filter-out %.o,$(LOCAL_GENERATED_SOURCES)) $(import_includes)
+# all_objects includes gen_o_objects which were part of LOCAL_GENERATED_SOURCES;
+# use normal_objects here to avoid creating circular dependencies. This assumes
+# that custom build rules which generate .o files don't consume other generated
+# sources as input (or if they do they take care of that dependency themselves).
+$(normal_objects) : | $(LOCAL_GENERATED_SOURCES)
+$(all_objects) : | $(import_includes)
ALL_C_CPP_ETC_OBJECTS += $(all_objects)
###########################################################