On Thu, Feb 4, 2010 at 4:44 PM, Mark Galeck (CW) <[email protected]> wrote: >>What makes you think that make will examine a header file, do the > implicit rule search for it and decide there's no match, and then > later in the same run do the search again? Have you examined "make > -d" output to see whether that's the case? > > Yes indeed with the -d option, I can see that make is remaking foobar > multiple times, in case like > > foobar::; > foobar::;
Hmm, that's not the case I understood you to be concerned with. You wrote: > One of the things that take time, I think, is make trying to "build" all > those source > and header files, every time it encounters a header file prerequisite > (automatically > generated) for an object file, and for each object file typically there are > thousands, > each time, it tries to find implicit rules for that header file. I.e., something like: ------- OBJS = foo.o bar.o # etc foo: $(OBJS) foo.o: foo.c foo.h bar.o: bar.c foo.h # ...etc foo.h: ------- and the concern is that make will try to rebuild 'foo.h' multiple times. When I run "make -d" against that, I see that make does the implicit rule lookup for 'foo.h' exactly once, no matter how many objects depend on it. On the second and succeeding objects it just says "Pruning file `foo.h'." Of course, if this is some grotty recursive make setup then that existing optimization won't apply. In that case, the single best optimization you can make, in my opinion and direct experience, is stop using recursive make and switch to a single make process (but still multiple files of course) that does everything. > GNU make manual indicates that there are "multiple ways" to avoid any implicit > rule search for a target, but I only see one, to have an empty command for > that > target. What are the others, and are there any that I can use multiple times > on > the same target, without make complaining. Hmm, can you point us at where the manual says that? I didn't see a statement like that in a quick scan, but I've been known to see right through entire paragraphs... Philip Guenther _______________________________________________ Help-make mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-make
