The focus of this chapter has been on using GNU make and supporting tools effectively to achieve a portable build system. There are times, however, when even these modest requirements are beyond reach. If you cannot use the enhanced features of GNU make and are forced to rely on a least-common-denominator set of features, you should consider using the automake tool, http://www.gnu.org/software/automake/automake.html.
The automake tool accepts a stylized makefile as input and generates a portable old-style makefile as output. automake is built around a set of m4 macros that allow a very terse notation in the input file (called makefile.am ). Typically, automake is used in conjunction with autoconf , a portability support package for C/C++ programs, but autoconf is not required.
While automake is a good solution for build systems that require maxium portability, the makefile s it generates cannot use any of the advanced features of GNU make with the exception of appending assignment, += , for which it has special support. Furthermore, the input to automake bears little resemblance to normal makefile input. Thus, using automake (without autoconf ) isn't terribly different from using the least-common-denominator approach.