Imake

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
m
Line 25: Line 25:
 
[[Category:Software]]
 
[[Category:Software]]
 
[[Category:X Window System]]
 
[[Category:X Window System]]
 +
[[Category:File formats with a distinctive filename]]

Revision as of 20:26, 5 May 2016

File Format
Name Imake
Ontology

Imake was a build tool used to generate Makefiles for software to be portable to a range of operating systems. It was originally developed to build the X Window System, and was adopted by many X applications, and some non-X software such as the tcsh shell. It required maintaining a per-platform config file containing all the information about which interfaces were used on each platform, and thus did not scale well from the commercial Unix world it was designed for to the explosion of free OS distros, nor to handling interface choices that were needed by new programs. The X Window System itself moved from Imake to the GNU autotools (autoconf, automake, libtool, pkg-config) in 2005, and while X.Org still provides Imake for existing software that needs it, has deprecated it and recommends against using it in new software.

File Format

Software that was to be built with imake distributed files named Imakefile, one in each directory that needed a Makefile. The file was basically a Makefile format file in which certain sections or text would be generated using C language style macros which were expanded via the cpp preprocessor.

To build such software, users would usually run the command xmkmf which is a shell script wrapper around the imake command. imake in turn determined which platform specific defines needed to be passed to cpp, set up the include paths for the imake config files which cpp would include to find the macro defintions, and then used cpp to generate Makefile files in each subdirectory. Users could then run "make" or "make install" as necessary to build and install the software.

Software

References

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox