On Thu, 04 Sep 2014, Jarmo Jaakkola wrote:
If you want foo.o made from foo.S instead of foo.c, use .SUFFIXES: .S .c instead of .SUFFIXES: .c .S If you need to consistently override on a file-by-file basis, then I'd say your file hierarchy or build process needs refactoring.
We do want to consistently override on a file by file basis. There might be a foo.c and bar.c with portable code, and several different foo.S and bar.S in different subdirectories for different machine platforms or different optimisation strategies. We want to tell make exactly which .S file or .c file to use, using conditions depending on the machine platform, and foo and bar could easily want different conditional choices.
How is it activated? [...] Should all the dependencies be looked at, or only the first one? [...] Do we still want make to accept non-matching files? E.g. "dir/foo.c" for "foo.o" when dir is _not_ in .PATH. [...]
I am glad to see serious consideration of how it should work. I tried to give my answeer to that in a previous message. --apb (Alan Barrett)