%% Jim <[EMAIL PROTECTED]> writes:
j> That would be fine, if that even worked, that would probalby solve
j> about 90% of the problems just by cleverly odering the
j> includes... but, as I started, the first attached makefile fails,
j> and it includes 'ticks' which if Makefile or one of the other
j> touchable things changes, remakes ticks, which should cause a
j> reload with the current, updated value. Then x is included, and
j> again, x needs to be updated, which will cause x to be regenerated
j> with the current value of ticks, which in turn should do the same
j> for y....
Yes.
j> but this is not what happens,
Yes it is, if you write it correctly.
j> and what you're really saying is that only the LAST included file
j> can be re-loaded, since ALL includes are read before their
j> dependancies are even checked.
Well, your second statement is true: all includes (that exist) _ARE_
read in first, then make tries to create any included files that were
read (or failed to be read), and if any changed it re-execs itself.
j> And THAT is not at all what the documentation indicates, it says -
j> " if any have actually been changed, make starts with a clean slate and
j> reads all the makefiles over agai"
j> if ANY changed, clean all, and reload all again...
Yes, exactly.
Consider this makefile; it works exactly as you expect (IIUC). The
warning statements prove that make is re-execing at every step:
$(warning Reading makefile)
include first.mk
all:: ; @echo "MAIN"
first.mk:
@echo 'include second.mk' > $@
@echo 'all:: ; @echo FIRST' >> $@
@echo 'first.mk: second.mk' >> $@
@echo 'second.mk:' >> $@
@echo ' @echo "all:: ; @echo SECOND" >> $$@' >> $@
clean: ; rm -f *.mk
Note that in the last @echo line, you have to make sure a TAB character
is inserted in the string that is echoed.
Yes, it's gross, but it does work as you expect. Here's a sample run:
temp$ make
makefile:1: Reading makefile
makefile:3: first.mk: No such file or directory
makefile:1: Reading makefile
first.mk:1: second.mk: No such file or directory
makefile:1: Reading makefile
SECOND
FIRST
MAIN
temp$ make
makefile:1: Reading makefile
SECOND
FIRST
MAIN
I still think you may find using $(eval ...) to be overall simpler.
--
-------------------------------------------------------------------------------
Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at:
http://www.gnu.org http://make.paulandlesley.org
"Please remain calm...I may be mad, but I am a professional." --Mad Scientist
_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make