http://www.gnu.org/software/make/manual/make.html#Makefile-Basics suggests you follow your final suggestion, as you (seem to) have a $(srcdir) variable. It suggests ./ otherwise, although I've tripped over doing that and generally use $(CURDIR)/ myself.
It's helpful elsewhere that ./file and file are considered to be the same file. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Wednesday, November 28, 2007 12:53 To: bug-make@gnu.org Subject: canonicalization/stripping of leading ./ Here's an example makefile: cat <<_EOF > Makefile test.out: ./script.sh $< > $@ _EOF Now when I run make, it executes `script.sh > test.out` instead of `./script.sh > test.out` This is all fine when 'PATH=.:<stuff>', and sometimes acceptable when 'PATH=<stuff>:.'; but in the general case, its very bad. I'm working around this by changing my makefiles to cat <<_EOF > Makefile test.out: ./script.sh ./$< > $@ _EOF but that doesn't seem too good either; maybe it should always be cat <<_EOF > Makefile test.out: $(srcdir)/script.sh $(srcdir)/$< > $@ _EOF ?? Bug reports #15338 and #17230 cover this same issue, but I haven't seen any followup, neither on Savannah nor on these lists. The closest discussion I could find was #10708, mentioned in http://lists.gnu.org/archive/html/help-make/2006-03/msg00231.html What's the official scoop? Are there plans to fix/change this behavior? In the meantime, how should I code the above Makefile (where an output file should be rebuilt whenever its script changes)? Thanks, Daniel _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make