> 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