IMake is a program, whose name stands for "independent make". Its input files are called "imakefiles" and contain some platoform independent description of the build process. IMake uses a common database of host specific data and the content of the "imakefiles" to assemble the real makefiles using the C preprocessor.
This appoarch makes sense in software whose distribution is made by one central authority who has control over this database. An example of such a software is the X11 (the X Windows system implementation by the X Consortium).
However most free software systems are distributed as collections of tools produced intependently by developers scattered over a very large area, very often over the entire world. Using a common database here would be a maintenance nightmare so generally those systems don't use IMake.
Another problem with IMake is that it uses C preprocessor, which is designed to preprocess C source code, not makefiles. As a result, strange interactions may appear between the IMake and the C preprocessor installed on the machine. Also the C preprocessor is not very programmable: it has limited conditional facitities, has no looping and cannot inspect its enviroment.
Currently the IMake is used by the X11 and its tools and is considered not to be very useful outside X11.