imake generates makefiles from a template, a set of cpp macro functions, and a per-directory input file called an Imakefile. This allows machine dependencies (such as compiler options, alternate command names, and special make rules) to be kept separate from the descriptions of the various items to be built.
imake grew out of the X Window System and has been part of its distribution since Version 11. With the release of X.org X11R7.0, it is being replaced by GNU autotools. X11R6.9 was the final version of X.org to use imake; imake is now only used by XFree86.