I agree that the best way to keep projects portable is to avoid using system-specific features; this applies to the GNU tools as much as anything else.
In my experience, however, GNU make is a good exception to this rule. The set of features common to all make implementations is just too small to write robust build systems with. GNU make has a good selection of needed make features, and more importantly, it's available for virtually every platform. (Correct me on this...) I haven't found any downside to using GNU make features in makefiles, and requiring that people have it to build isn't much of a burden these days.
I spent a fair amount of time creating a vanilla-make-compatible build system for a previous project, and if I had it to do over again, I'd just skip all the workarounds and do it with GNU make.
my teenage anthem
smash your head against the wall
entwistle broke through
I agree that the best way to keep projects portable is to avoid using system-specific features; this applies to the GNU tools as much as anything else.
In my experience, however, GNU make is a good exception to this rule. The set of features common to all make implementations is just too small to write robust build systems with. GNU make has a good selection of needed make features, and more importantly, it's available for virtually every platform. (Correct me on this...) I haven't found any downside to using GNU make features in makefiles, and requiring that people have it to build isn't much of a burden these days.
I spent a fair amount of time creating a vanilla-make-compatible build system for a previous project, and if I had it to do over again, I'd just skip all the workarounds and do it with GNU make.