add new gen/ directory for generated sources

Allow modules to generate source into $OUT/gen, which will then
be copied into $OUT/obj and $OUT/obj_$(TARGET_2ND_ARCH) as
necessary.  This allows a single build rule invocation that includes
generated source to build for the first and second architectures.

Modules will need to change calls to local-intermediates-dir into
local-generated-sources-dir.

Change-Id: I62504bad9454b3d9fde7b84ab9f0a487a2ecf0bf
diff --git a/core/binary.mk b/core/binary.mk
index 4dad51a..3556b99 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -377,8 +377,15 @@
 ###########################################################
 $(my_generated_sources): PRIVATE_MODULE := $(my_register_name)
 
-ALL_GENERATED_SOURCES += $(my_generated_sources)
+my_gen_sources_copy := $(patsubst $(generated_sources_dir)/%,$(intermediates)/%,$(filter $(generated_sources_dir)/%,$(my_generated_sources)))
 
+$(my_gen_sources_copy): $(intermediates)/% : $(generated_sources_dir)/% | $(ACP)
+	@echo "Copy: $@"
+	$(copy-file-to-target)
+
+my_generated_sources := $(patsubst $(generated_sources_dir)/%,$(intermediates)/%,$(my_generated_sources))
+
+ALL_GENERATED_SOURCES += $(my_generated_sources)
 
 ###########################################################
 ## Compile the .proto files to .cc and then to .o