On Fri, 2021-01-01 at 11:02 -0500, Alfred M. Szmidt wrote: > Is there some way of detecting or specifying that a Makefile is GNU > make specific? I'm kinda thinking of something similar to the > .POSIX directive. > > I'm in a situation where got a bunch of Makefiles, some BSD makefile, > some GNU, some POSIX and to somehow handle this without having to > remeber if one is to type make, gmake, nmake, I want to create a > small wrapper that can sorta figure it out by itself. > > Other ideas are welcome too ...
There is clearly no pseudo-target (like .POSIX) that must be provided in any makefile in order to activate it's "GNU-ness", so that you can rely on it being present in any makefile that uses GNU extensions. The same is true for BSD make. If there were such a thing everyone would surely know about it :). That being the case, if you can't change the makefiles, then I don't see any way to know for sure other than by looking for common idioms that are customized to different versions of make, as a heuristic. My personal recommendation is to search for BSD-like operations such as ".include", ".if", etc. and choose BSD make. If you don't see things like that, choose GNU make. Either make (should) be able to run a POSIX standard makefile. If you CAN change the makefile then you can just add your own pseudo- target to them following whatever convention you want.