The following reply was made to PR bin/148024; it has been noted by GNATS. From: Garrett Cooper <gcoo...@freebsd.org> To: Garrett Cooper <gcoo...@freebsd.org> Cc: Garrett Wollman <woll...@hergotha.csail.mit.edu>, bug-followup <bug-follo...@freebsd.org> Subject: Re: bin/148024: Some built-in AT&T/POSIX compat make variables are broken Date: Mon, 21 Jun 2010 08:20:53 -0700
On Sun, Jun 20, 2010 at 8:56 PM, Garrett Cooper <gcoo...@freebsd.org> wrote= : > On Sun, Jun 20, 2010 at 7:46 PM, Garrett Wollman > <woll...@hergotha.csail.mit.edu> wrote: >> In article >> <mit.lcs.mail.freebsd-bugs/201006210044.o5l0ipxk000...@www.freebsd.org>, >> gcoo...@freebsd.org 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 filenam= e >>>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) > :(... It 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. Thanks, -Garrett _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"