>For example, if you have a source file with the same name in two
> subdirectories (e.g. main.c), do you have to jump through hoops to
> prevent it from getting confused?
The way I do it is always reference the tree from the build root.
so a/main.c is never looks like b/main.c
and yes I can start a build from the subdirs etc.
non-recursive is the way to go.
Just require gnu make don't try supporting version 8.79 (rh9) clients just
make people upgrade....