> On Aug 20, 2022, at 11:35 AM, Alejandro Colomar <alx.manpa...@gmail.com> 
> wrote:
> I'd say there is:  make(1) treats file names as text strings, not really file 
> names, for most of its operations.  As an example, foo/ and foo/. are 
> different targets.  I don't see why ./bar and bar should be the same.  
> Consistency is essential; otherwise, what to expect?  Why does make(1) need 
> to special-case a leading ./ ?

Because treating "./foo" and "foo" as different files is likely to lead to 
endless footguns.

Consistency is nice, but making something easy to use *correctly* is more 
important. I have no problem with special-casing "./XXX" as a synonym for 
"XXX"; anything else would be *unexpected* (if for no other reason than 
backwards compatibility).

As far as "foo/" vs. "foo/.", it's *much* less common to have directories as 
prerequisites or targets, so not handling them with special conveniences seems 
quite reasonable.

--- David A. Wheeler



Reply via email to