Update of bug #63098 (project make): Component Version: None => SCM Operating System: None => Any
_______________________________________________________ Follow-up Comment #2: This change was made to fix bug #12078 The problem with the old behavior can be seen in examples provided for bug #62809 (for grouped targets not pattern rules but the result is the same) where running "make" can cause things to become out of date, that will not rebuild until you run "make" again. Which is not good. I understand the behavior that used to be available, and I'm not sure how to recover it. Basically the rule (now) is that if any target in a multi-target rule doesn't exist (or is out of date), and any target of a multi-target rule (and this doesn't have to be the SAME target) is needed as part of the build, then the recipe will be run and all the targets will be considered to have been updated. The simplest answer is to ship the .cxx files that are generated as well as the .h and .rc files. The second simplest answer is to remove the %.cxx from the pattern rule, if it's really true that nothing else in the makefiles actually depends on these files anyway. A different answer would be to split the make rules; something like this might work: %.h %.rc: %.msg [ ! -f $(top_srcdir)/msggen.pl ] || $(PERL) -w $(top_srcdir)/msggen.pl $(MSGGENFLAGS) $< %.cxx : %.rc : built by perl from $*.msg I'm not sure this is completely correct without knowing more about the build environment. In this example, if nothing depends on the .cxx file and it's missing, then it won't force the Perl script to run. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?63098> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/