The following reply was made to PR bin/148024; it has been noted by GNATS. From: Garrett Cooper <[email protected]> To: Garrett Cooper <[email protected]> Cc: Garrett Wollman <[email protected]>, bug-followup <[email protected]> Subject: Re: bin/148024: Some built-in AT&T/POSIX compat make variables are broken Date: Mon, 21 Jun 2010 08:21:18 -0700
On Mon, Jun 21, 2010 at 8:20 AM, Garrett Cooper <[email protected]> wrote= : > On Sun, Jun 20, 2010 at 8:56 PM, Garrett Cooper <[email protected]> wro= te: >> On Sun, Jun 20, 2010 at 7:46 PM, Garrett Wollman >> <[email protected]> wrote: >>> In article >>> <mit.lcs.mail.freebsd-bugs/[email protected]>= , >>> [email protected] writes: >>> >>>>foo: bar >>>> =A0 =A0 =A0 @echo target: $@ prereq: $< >>>>$ make -f ~/Makefile.prereq foo >>>>target: foo prereq: >>>> >>>>The above invocation should have printed out: >>>> >>>>target: foo prereq: bar >>> >>> No. =A0$< is only defined for pattern rules. >>> >>>>$< >>>> =A0 =A0In an inference rule, the $< macro shall evaluate to the filena= me >>>>whose existence allowed the inference rule to be chosen for the target. >>>>In the .DEFAULT rule, the $< macro shall evaluate to the current target >>>>name. The meaning of the $< macro shall be otherwise unspecified. >>> =A0 =A0 =A0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> >> =A0 =A0Ok.. this appears to be a GNU make `extension': >> >> $ gmake -f ~/Makefile.prereq yadda.a >> target: yadda.a prereq: bazinga.b >> target: yadda.a prereq: >> target: prereq: >> $ make -f ~/Makefile.prereq yadda.a >> target: yadda.a prereq: >> target: yadda.a prereq: bazinga.b >> target: yadda.a prereq: bazinga.b >> $ bmake -f ~/Makefile.prereq yadda.a >> target: yadda.a prereq: >> target: yadda.a prereq: bazinga.b >> target: yadda.a prereq: bazinga.b >> $ cat ~/Makefile.prereq >> .b.a: >> =A0 =A0 =A0 =A0echo target: $@ prereq: $< >> >> bazinga.b: >> >> yadda.a: bazinga.b >> =A0 =A0 =A0 =...@echo target: $@ prereq: $< >> =A0 =A0 =A0 =...@echo target: $@ prereq: $> >> =A0 =A0 =A0 =...@echo target: ${.TARGET} prereq: ${.ALLSRC} >> >> =A0 =A0Is an inference rule the .b.a rule? POSIX doesn't properly define >> what it is and assumes you know what's going on (lousy documentation) >> :(... > > =A0 =A0It appears that the ultimate problem here is that POSIX does a > lousy job at defining Makefiles and general purpose make terms (which > was ultimately causing confusion at my end). I'll go prod the > opengroup folks to improve their definitions and nomenclature. (so basically I was asking for the bug to be closed) _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "[email protected]"
