Follow-up Comment #37, bug #48643 (project make): > The first one is that the output appears even if make ultimately decides that there is no way to build the target.
i think, this is good. Hopefully, this will prevent users from writing makefiles that depend on compat search. > When I put my extra warning in I get this output: > > > make: Detected a compatibility rule to build 'hello.z'. > make: Using compatibility rule '%.z:: %.x' due to unrelated 'hello.x'. > make: *** No rule to make target 'hello.x', needed by 'hello.z'. Stop. > i think, "Detected a compatibility rule..." message is problematic. > Although I didn't find too many instances of this in my tests I know they are actually quite common and this makes me concerned that adding this warning will cause lots of warnings in real makefiles. i think, make should issue this warning only when two conditions are satisfied 1. No implicit rule is found. and 2. There is an unrelated rule which mentiones the implicit prerequisite explicitly. Even though the 2nd condition is common, the 1st is not that common. Most of makefiles (as far as i can tell) have proper rules. For those proper makefiles make will fail to find the rule only if the source file is missing, vpath is messed up or a bug was introduced to the makefile. All those who reported after the 2009 fix, presented some legal, but convoluted makefile, such as examples 3 and 5 or this test from features/double_colon. These makefiles have the prerequisite mentioned explicitly on an unrelated rule to cause make to cut implicit search short and then rely on either default rule or a match anything rule to build the target. make will issue the warning for such makefiles only. Makefiles which have proper rules should not cause make to issue the warning. Your testing described in update 30 found no such convoluted examples. The "Detected a compatibility rule..." can be quite common, that's the condition 2. That's why, i suggest, make does not issue "Detected a compatibility rule..." message. i think, make should tell the user that no implicit rule is found. Otherwise, "Using compatibility rule..." looks like an neutral message and does not look like make is warning about something bad. > It also may well mean that we won't ever be able to remove the compatibility search at all, because without this we don't get the above error at all: instead we just get a successful "Nothing to be done for 'all'." Only if the target exists and there is no proper (the one that does not depend on its implicit prerequisite mentioned explicitly somewhere else) rule. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?48643> _______________________________________________ Сообщение отправлено по Savannah https://savannah.gnu.org/