Generate DBus proxies and adaptors separately

Enable daemons exposing an interface over DBus to easily
build client libraries.  Now daemons can write rules like:

include $(CLEAR_VARS)
LOCAL_MODULE := libdbus-binding-example-client
LOCAL_DBUS_PROXY_PREFIX := dbus-example-example
LOCAL_SRC_FILES := \
    dbus_bindings/org.chromium.Example.Manager.dbus.xml \
    dbus_bindings/dbus-service-config.json
include $(BUILD_SHARED_LIBRARY)

to expose a client library.

While here, add support for generating independent adaptor header
files on a per interface basis.

Bug: 22608897
Change-Id: I011f9afc234811c31e445898321c2731c482fa77
diff --git a/core/definitions.mk b/core/definitions.mk
index dd84b8a..9865d99 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -970,17 +970,27 @@
 
 
 ######################################################################
-## Commands for running protoc to compile .proto into .pb.cc and .pb.h
+## Commands for generating DBus adaptors from .dbus.xml files.
 ######################################################################
-define generate-dbus-bindings
-@echo "Generating DBus bindings for $(PRIVATE_DBUS_MODULE)"
-@mkdir -p $(PRIVATE_DBUS_HEADER_DIRECTORY)
+define generate-dbus-adaptors
+@echo "Generating DBus adaptors for $(PRIVATE_MODULE)"
+@mkdir -p $(dir $@)
 $(hide) $(DBUS_GENERATOR) \
 	--service-config=$(PRIVATE_DBUS_SERVICE_CONFIG) \
-	--adaptor=$(PRIVATE_DBUS_ADAPTORS_HEADER) \
-	--proxy=$(PRIVATE_DBUS_PROXIES_HEADER) \
-	--method-names=$(PRIVATE_DBUS_METHOD_NAMES_HEADER) \
-	$(PRIVATE_DBUS_INTERFACE_DEFINITIONS)
+	--adaptor=$@ \
+	$<
+endef
+
+######################################################################
+## Commands for generating DBus proxies from .dbus.xml files.
+######################################################################
+define generate-dbus-proxies
+@echo "Generating DBus proxies for $(PRIVATE_MODULE)"
+@mkdir -p $(dir $@)
+$(hide) $(DBUS_GENERATOR) \
+	--service-config=$(PRIVATE_DBUS_SERVICE_CONFIG) \
+	--proxy=$@ \
+	$<
 endef