Allow proto builds to pass in java proto params.

Also source files which have dependencies need to be bundled together
(at least the way the build system is set up now). Move
--proto_path=$(TOP) to the end so that it does not take precedence
over user-supplied --proto_path flags.

Change-Id: Ia532647fe8811d39230a23ba3671685b0388cbe0
diff --git a/core/base_rules.mk b/core/base_rules.mk
index f0a6398..f6497da 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -264,6 +264,7 @@
   endif
 endif
 $(proto_java_sources_file_stamp): PRIVATE_PROTOC_FLAGS := $(LOCAL_PROTOC_FLAGS)
+$(proto_java_sources_file_stamp): PRIVATE_PROTO_JAVA_OUTPUT_PARAMS := $(LOCAL_PROTO_JAVA_OUTPUT_PARAMS)
 $(proto_java_sources_file_stamp) : $(proto_sources_fullpath) $(PROTOC)
 	$(call transform-proto-to-java)
 
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index 8d84814..7ad58b2 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -120,6 +120,7 @@
 LOCAL_DEX_PREOPT:= # '',true,false,nostripping
 LOCAL_PROTOC_OPTIMIZE_TYPE:= # lite(default),micro,nano,full
 LOCAL_PROTOC_FLAGS:=
+LOCAL_PROTO_JAVA_OUTPUT_PARAMS:=
 LOCAL_NO_CRT:=
 LOCAL_PROPRIETARY_MODULE:=
 LOCAL_MODULE_OWNER:=
diff --git a/core/definitions.mk b/core/definitions.mk
index 7834baa..4da78de 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -889,13 +889,11 @@
 @echo "Protoc: $@ <= $(PRIVATE_PROTO_SRC_FILES)"
 @rm -rf $(PRIVATE_PROTO_JAVA_OUTPUT_DIR)
 @mkdir -p $(PRIVATE_PROTO_JAVA_OUTPUT_DIR)
-$(hide) for f in $(PRIVATE_PROTO_SRC_FILES); do \
-        $(PROTOC) \
-        $(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \
-        $(PRIVATE_PROTO_JAVA_OUTPUT_OPTION)=$(PRIVATE_PROTO_JAVA_OUTPUT_DIR) \
+$(hide) $(PROTOC) \
+        $(PRIVATE_PROTO_JAVA_OUTPUT_OPTION)="$(PRIVATE_PROTO_JAVA_OUTPUT_PARAMS):$(PRIVATE_PROTO_JAVA_OUTPUT_DIR)" \
         $(PRIVATE_PROTOC_FLAGS) \
-        $$f || exit 33; \
-        done
+        $(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \
+        $(PRIVATE_PROTO_SRC_FILES)
 $(hide) touch $@
 endef