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