X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=example-codegen%2FMakefile.am;h=816fafd68ac6bf6fcbd92a5a35b866ac1a7531ec;hp=1037dab389b227f51b480b558d16a24d92a9a6d0;hb=c0a5c7713b976c7165aa213b4ceb36e15b117d61;hpb=3c4dd222bdf18612d26250088c999dc0b2937dba diff --git a/example-codegen/Makefile.am b/example-codegen/Makefile.am index 1037dab..816fafd 100644 --- a/example-codegen/Makefile.am +++ b/example-codegen/Makefile.am @@ -1,13 +1,16 @@ INCLUDES = -I$(top_srcdir)/src @BOOST_CPPFLAGS@ @CPPUNIT_CFLAGS@ -I$(top_srcdir)/codegen LDADD = $(top_builddir)/src/libt2n.la @BOOST_SERIALIZATION_LIB@ @BOOST_LDFLAGS@ +# list your command groups CMDGROUPS = default other +# for each command group list the files to parse for LIBT2N_EXPORT default_GROUP = default.cpp -# command example of group using multiple cpp files +# example of a command group using multiple cpp files other_GROUP = other-1.cpp other-2.cpp -# foo.hxx must be listed manually +# headers declaring data types used as rpc arguments must be listed manually +# (in this example the class Foo) include_HEADERS = foo.hxx # unfortunately we can't set those from variables @@ -17,39 +20,42 @@ libdefault_la_SOURCES = default_client.cpp libother_la_SOURCES = other_client.cpp lib_LTLIBRARIES = libdefault.la libother.la - # build an example server and client client_SOURCES = client.cpp client_LDADD = $(LDADD) libdefault.la libother.la + server_SOURCES = server.cpp \ $(other_GROUP) other_server.cpp \ - $(default_GROUP) default_server.cpp \ - foo.hxx + $(default_GROUP) default_server.cpp + noinst_PROGRAMS = client server # test script TESTS = test +EXTRA_DIST = $(TESTS) + # always the same: include_HEADERS += $(foreach i, $(CMDGROUPS), $(i)_client.hxx $(i).hxx) #IFILES=$(foreach i, $(CMDGROUPS), $(foreach j, $($(i)_GROUP), $(j))) --include $(foreach i, $(CMDGROUPS), .deps/group_$(i).P) +-include $(foreach i, $(CMDGROUPS), group_$(i).P) -.deps/group_%.P : Makefile.am - echo $@ : $($*_GROUP) > .deps/group_$*.P +group_%.P : Makefile.am + echo $@ : $($*_GROUP) > group_$*.P -%.stamp : .deps/group_%.P $(top_builddir)/codegen/codegen +%.stamp : group_%.P $(top_builddir)/codegen/codegen # assuming we have some unix like shell (maybe even bash) echo BUILT_SOURCES: $(BUILT_SOURCES) - cp -v $(top_srcdir)/codegen/codegen-stubhead.hxx $*_common.hxx; - echo > $*_server.hxx; +# temporarily create _common.hxx file (will be overwritten by codegen below) + echo '#include "codegen-stubhead.hxx"' > $*_common.hxx; + echo '#include "$*.hxx"' >> $*_common.hxx; # todo use tmp file for xml file for i in $($*_GROUP); do \ - gccxml $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $${i} -fxml=$${i%*.cpp}.xml; \ + gccxml $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(srcdir)/$${i} -fxml=$${i%*.cpp}.xml; \ done; \ $(top_builddir)/codegen/codegen $* $($*_GROUP:.cpp=.xml) && touch $@ @@ -59,9 +65,6 @@ BUILT_SOURCES = $(foreach i, $(CMDGROUPS), $(foreach j, _common.hxx _common.cpp STAMPS=$(CMDGROUPS:=.stamp) $(BUILT_SOURCES) : $(STAMPS) - -CLEANFILES = $(BUILT_SOURCES) $(STAMPS) - # Install the pkg-config files: pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = $(CMDGROUPS:=.pc) @@ -75,3 +78,11 @@ pkgconfig_DATA = $(CMDGROUPS:=.pc) -e 's,\@libdir\@,$(libdir),g' \ -e 's,\@includedir\@,$(includedir),g' \ $< >$*.pc + +CLEANFILES = $(BUILT_SOURCES) $(STAMPS) $(pkgconfig_DATA) + +# didn't work (same problem as with _LTLIBRARIES [parsing by automake], +# this time _OBJECTS was not correct) +# server_SOURCES = server.cpp \ +# $(foreach i, $(CMDGROUPS), $(foreach j, $($(i)_GROUP), $(j))) \ +# $(foreach i, $(CMDGROUPS), $(i)_server.cpp)