Hello,
On Thu, Mar 10, 2005 at 10:05:51PM +0200, Paul Pogonyshev wrote:
> I'm not sure which one comes first. [...] I can just do
>
> foo.c : foo.h
> foo.c foo.h : ...
> if $(BUILD_THEM_FILES) foo.list foo.h foo.c; then \
> touch foo.c; \
> else \
> (rm -f foo.c foo.h; exit 1) \
> fi
>
> right?
Correct, of course.
About the side topic of suffixes:
> Well, I also need something like `echo "$*" | sed 's/\.h$/.c/'`
No, $* is the base without the suffix.
> in one directory I have two `.list' files, one of which is processed
> by my parser, while the other---by `glib-genmarshal' (I chose my
> suffix before I even started with GTK+ GUI.)
One option is to change the suffix for your parser, of course.
Or you could do something like:
LIST_H_CMDS = if $(BUILD_THEM_FILES) $*.list $*.h $*.c; then \
touch $*.c; \
else \
(rm -f $*.c $*.h; exit 1) \
fi
BUILD_THEM_FILES = case $* in \
*marshal*) $(GENMARSHAL_CMD) $*.list ... ;; \
*) $(PARSE) $*.list ... ;; \
esac
.list.h:
$(LIST_H_CMDS)
.list.c:
$(LIST_H_CMDS)
All the variables in the commands, are expanded just before execution,
so the usage of $* ``outside of a rule'' is correct here.
But when I recall that all this is done just to be able to do
xx_SOURCES = foo.list ...
intead of
xx_SOURCES = ...
nodist_xx_SOURCES = foo.c
EXTRA_DIST = foo.list
then I agree it's not worth it.
(Setting CLEANFILES = foo.c foo.h; BUILT_SOURCES = foo.h is necessary
in both cases.)
Have a nice day,
Stepan