code generator in makefiles

Havoc Pennington hp at
Sat Feb 19 14:06:50 PST 2005

On Sat, 2005-02-19 at 16:13 -0500, Colin Walters wrote:
> I had a quicky try at this, but I don't think it's really worth it in
> the end.  The problem is that you still need to use the BUILT_SOURCES
> variable to tell Automake what files you're generating, and worse you
> still need individual targets specified in the in general I
> think.  So you just don't save much.  Unless I did something wrong here.

I can understand BUILT_SOURCES and targets, the stampfile and
intermediate file fiasco is what I can't figure out:
        # gdk-pixbuf-marshal.h
        gdk-pixbuf-marshal.h: @REBUILD@ stamp-gdk-pixbuf-marshal.h
        stamp-gdk-pixbuf-marshal.h: @REBUILD@ $(srcdir)/gdk-pixbuf-marshal.list
        	$(GLIB_GENMARSHAL) --prefix=_gdk_pixbuf_marshal $(srcdir)/gdk-pixbuf-marshal.list --header >> xgen-gmh \
        	&& (cmp -s xgen-gmh gdk-pixbuf-marshal.h || cp xgen-gmh gdk-pixbuf-marshal.h) \
        	&& rm -f xgen-gmh xgen-gmh~ \
        	&& echo timestamp > $(@F)
        CLEANFILES += xgen-gmh
        MAINTAINERCLEANFILES += stamp-gdk-pixbuf-marshal.h
        # gdk-pixbuf-marshal.c
        $(srcdir)/gdk-pixbuf-marshal.c: @REBUILD@ $(srcdir)/gdk-pixbuf-marshal.list
        	(echo -e "#include \"gdk-pixbuf-alias.h\"" | $(GLIB_GENMARSHAL) --prefix=_gdk_pixbuf_marshal $(srcdir)/gdk-pixbuf-marshal.list --body ) >> xgen-gmc \
        	&& cp xgen-gmc gdk-pixbuf-marshal.c \
        	&& rm -f xgen-gmc xgen-gmc~
        CLEANFILES += xgen-gmc
        # if srcdir!=builddir, clean out maintainer-clean files from builddir
        # this allows dist to pass.
        	if test $(srcdir) != .; then \
        	  rm -f $(MAINTAINERCLEANFILES); \

Personally I don't understand all that...

> Personally I never had a problem really copying and pasting the automake
> goo.

Are you really getting the working automake goo like above or are you
doing something simpler but broken?

> >Related topic, we need a way to get at dbus-binding-tool as a pkgconfig
> >variable as for glib-genmarshal
> Ok, I tried this, I have a feeling I must be missing something though:
> walters at nexus> PKG_CONFIG_PATH=/scratch/build/dbus/lib/pkgconfig pkg-config --variable=dbus_binding_tool dbus-1
> dbus-binding-tool
> walters at nexus> dbus-binding-tool 
> zsh: command not found: dbus-binding-tool
> walters at nexus> 
> But it looks like glib does the same thing in their with
> glib-genmarshal, so maybe it's required for you to set $PATH as well (in
> which case I wonder what the value is in this whole variable thing?)

That is surprising you're right; I guess we did it for cross compilation
or something. I thought it was to get the path.


More information about the dbus mailing list