tdw%computer-lab.cambridge.ac.uk@NSFNET-RELAY.AC.UK (Tim Wilson) (10/10/89)
GNU Make is making my life a lot easier! And I particularly appreciate the manual. To either correcty my understanding (tell me on which page to RTFM!), or help improve GNU Make further, I'm including a script which shows GNU Make committing a sin of omission--at least, that's what I think. Here is a session which exibits what I believe to be the bug: ---------------------------------------------------------------------- Script started on Tue Oct 10 15:26:40 1989 ~/rvd/c/sys/sum $ cat GMBug # Demonstrate bug in GNU make # Last edited: Tue Oct 10 15:14:23 1989 by Tim Wilson # %.m : /tmp/z/%.n echo $@ a.m : ~/rvd/c/sys/sum $ gmake -d -r -n -f GMBug GNU Make version 3.56, by Richard Stallman and Roland McGrath. Copyright (C) 1988, 1989 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Reading makefiles... Updating makefiles.... Considering target file `GMBug'. Looking for an implicit rule for `GMBug'. No implicit rule found for `GMBug'. Finished dependencies of target file `GMBug'. No need to remake target `GMBug'. Updating goal targets.... Considering target file `a.m'. File `a.m' does not exist. Looking for an implicit rule for `a.m'. No implicit rule found for `a.m'. Finished dependencies of target file `a.m'. Must remake target `a.m'. Successfully remade target file `a.m'. ~/rvd/c/sys/sum $ script done on Tue Oct 10 15:28:14 1989 ---------------------------------------------------------------------- What I expected: =============== I expected the implicit rule %.m etc to be applicable to the target a.m . Why I think it is a bug: ======================= (rather than mis-reading of the manual): Slight variations on the exact form of the pattern rule do what I would expect, viz attempt to apply the pattern rule to the target a.m . Variations which *do* work include: %.m : tmp/z/%.n echo $@ (ie without the leading `/') and %.m : /tmp/%.n echo $@ (ie without the subdirectory `z'). Thank you for your attention. Tim Wilson