sdbus++: Generate initial client header

By "client-header" option, sdbus++ could generate a client header file
that provides the code used by the client.

Currently it only includes the interface name's string in the header
file, it could be extended in the future.

The client header could be merged together for all the interfaces, so
that an interface library could provide a single header to represent all
the interface strings.

Usage:

 sdbus++ -r $(srcdir) -t $(top_builddir)/tools/sdbusplus/templates \
    interface client-header <interface>

Tested: Generate the header in example and use static_assert to verify
        it is the same as the interface defined in the interface calss.

Signed-off-by: Lei YU <mine260309@gmail.com>
Change-Id: Idafc4724efa88a2dfd37e3f7735732c45171fd88
diff --git a/example/Makefile.am b/example/Makefile.am
index 6d43c4a..294ee00 100644
--- a/example/Makefile.am
+++ b/example/Makefile.am
@@ -33,7 +33,8 @@
 	net/poettering/Calculator/server.hpp \
 	net/poettering/Calculator/server.cpp \
 	net/poettering/Calculator/error.hpp \
-	net/poettering/Calculator/error.cpp
+	net/poettering/Calculator/error.cpp \
+	net/poettering/Calculator/client.hpp
 
 calculator_markdown_generated_files = \
 	calculator.md
@@ -82,4 +83,10 @@
 	@top_srcdir@/tools/sdbus++ \
 	    -r $(srcdir) -t $(top_builddir)/tools/sdbusplus/templates \
 	    error markdown net.poettering.Calculator >> $@
+
+net/poettering/Calculator/client.hpp:
+	@mkdir -p $(@D)
+	@top_srcdir@/tools/sdbus++ \
+	    -r $(srcdir) -t $(top_builddir)/tools/sdbusplus/templates \
+	    interface client-header net.poettering.Calculator > $@
 endif