On Thu, Mar 13, 2014 at 10:24:56AM -0700, Vladimir Panteleev wrote:
> > @@ -139,6 +139,14 @@ int main(string[] args)
> >      if (bailout) return 0;
> >      if (dryRun) chatty = true; // dry-run implies chatty
> >  
> > +    if ((makeDepend || makeDepFile) && (!exe || exe.endsWith(dirSeparator)))
> 
> Unless I'm misunderstanding something, one `buildNormalizedPath`
> doesn't really count as greatly complicating the code, does it?

No, is not that easy. As I said, if you have spurious paths in Make like
you are in the src directory and you refer to the file file.d as
../src/file.d, then Make will think both files are not the same.

I just checked and more "normal" cases work, but my experience with Make
is this is too subtle and error-prone. I had a lot of problems with
this, and is REALLY hard to debug, because if something is wrong in a
dependency, you won't get an error, you'll just get a dependency less,
ending up with broken builds that are extremely hard to figure out why.

This is why for me guessing in this case is a recipe for disaster. If
you want rdmd to guess, fine, I can do it (I'll always use -of anyway)
but I think you are buying a problem instead of a solution.