The easiest way to write an Imakefile is to find another one that does
something similar and copy/modify it!

Imake.tmpl provides defaults for the following variables:

	ArCmd			command used to create libraries
	AsCmd			command used to run assembler
	BootstrapCFlags		missing cpp symbols needed to get started
	BourneShell		command used to run Bourne Shell
	CURDIR			current directory relative to top of sources
	CcCmd			command to run C compiler
	CompressCmd		command to run compress program
	ConstructMFLAGS		System V option to set MFLAGS make variable
	CpCmd			command to copy one file to another
	CppCmd			command to run C preprocessor
	DebuggableCDebugFlags	C compiler -I's and -D's to turn on debug info
	DefaultCCOptions	default special C compiler options
	DefaultCDebugFlags	debug/optimize flags for programs
	DependFlags		extra makedepend flags
	DoRanlibCmd		boolean for system uses ranlib
	EqnCmd			command used for eqn
	ExecableScripts		boolean for systems that can exec() #!/bin/sh
	ExpandManNames		boolean to expand man pages names to long form
	ExtraFilesToClean	extra files to remove on make clean
	ExtraLibraries		system-specific libraries need to link
	ExtraLoadFlags		system-specific loader flags
	FilesToClean		files to delete in make clean
	FortranCmd		command to run Fortran compiler
	FortranDebugFlags	flags for Fortran debug info
	FortranFlags		Fortran compiler flags
	HasBsearch		boolean for libc has bsearch()
	HasFortran		boolean for system has Fortran compiler
	HasGcc			boolean for system has GNU C compiler
	HasLargeTmp		boolean for system has /tmp space
	HasNdbm			boolean for system has ndbm routines
	HasPutenv		boolean for libc has putenv()
	HasSaberC		boolean for system has Saber C
	HasSecureRPC		boolean for Sun Secure RPC
	HasSharedLibraries	boolean for system has shared libraries
	HasShm			boolean for System V shared memory
	HasSockets		boolean for system has BSD sockets
	HasVFork		boolean for system has vfork()
	HasVoidSignalReturn	boolean for POSIX signal() procs
	IncRoot			parent of X11 include directory
	InstBinFlags		install flags for binaries
	InstDatFlags		install flags for data files
	InstIncFlags		install flags for header files
	InstKmemFlags		install flags for xload to get at /dev/kmem
	InstLibFlags		install flags for libraries
	InstManFlags		install flags for manual pages
	InstPgmFlags		install flags for normal programs
	InstUidFlags		install flags for xterm to chown /dev/ptys
	InstallCmd		command to install files
	LdCmd			command to run loader
	LdCombineFlags		flags for incremental loading
	LintCmd			command to run lint
	LintLibFlag		flags to generate lint libraries
	LintOpts		lint options to control strictness
	LnCmd			command to link two files
	LoaderLibPrefix		loader flags before libraries
	MacroFile		name of machine-dependent config params file
	MacroIncludeFile	<MacroFile>
	MakeCmd			command to run make
	Malloc0ReturnsNull	boolean for malloc(0) == NULL
	MvCmd			command to rename a file
	NdbmDefines		-D's to turn on use of ndbm routines
	NeedConstPrototoypes	whether const is supported
	NeedFunctionPrototypes	whether or not to force function prototypes
	NeedNestedPrototypes	whether nested prototypes are supported
	NeedVarargsPrototypes	whether varargs prototypes are supported
	NeedWidePrototypes	whether or not to widen function prototypes
	NoOpCDebugFlags		C compiler flags to not debug or optimize
	OSMajorVersion		major version number of operating system
	OSMinorVersion		minor version number of operating system
	OptimizedCDebugFlags	C compiler flags to turn on optimization
	PreProcessCmd		command to run /lib/cpp on scripts
	RanlibCmd		command to clean up libraries
	RanlibInstFlags		flags to ranlib after copying
	RmCmd			command to delete files
	StandardCppDefines	-D's for running cpp
	StandardDefines		-D's for running C compiler
	StandardIncludes	-I's for running C compiler
	StripInstalledPrograms	boolean for sites that want to install -s
	SystemV			boolean for systems that are at least SVR2
	SystemV4		boolean for SVR4 systems
	TOPDIR			relative path to top of sources
	TagsCmd			command to run tags
	TblCmd			command to run tbl
	TroffCmd		command to run troff to get PostScript
	UNCOMPRESSPATH		command to run uncompress
	UnalignedReferencesAllowed	boolean for unaligned copies ok
	UsrLibDir		directory in which to install libraries

Project.tmpl provides defaults for the following variables:

	AdmDir			directory containing system log files
	AllocateLocalDefines	-D's to turn on alloca()
	BDFTOSNFFILT		command to run bdftosnf
	BaseExtensionDefines	univeral extensions to use
	BinDir			directory in which to install programs
	BuildFontServer		boolean for building font server
	BuildFonts		boolean for building pcf fonts
	BuildIncRoot		relative path to location of headers in build
	BuildIncTop		path from build includes directory to top
	BuildPex		boolean for building all PEX-related code
	BuildPexClients		boolean for buildiing PEX clients/demos
	BuildPexExt		boolean for building PEX extension
	BuildServer		boolean for building X server
	BuildXInputExt		boolean for building X Input extension
	BuildXInputLib		boolean for building X Input library
	ConfigDir		install directory for config files
	ConnectionFlags		-D's for supported transports
	ContribDir		location of user-contributed sources
	DebugLibX		boolean for compiling libX11_g.a .o's
	DebugLibXArchive	boolean for building libX11_g.a
	DebugLibXau		boolean for building libXau_g
	DebugLibXaw		boolean for building libXaw_g
	DebugLibXdmcp		boolean for building libXdmcp_g
	DebugLibXext		boolean for building libXext_g
	DebugLibXmu		boolean for building libXmu_g
	DebugLibXt		boolean for building libXt_g
	DebugOldLibX		boolean for building liboldX_g
	DefaultFSConfigFile	default font server config file
	DefaultFontPath		default server font path
	DefaultRGBDatabase	default server rgb color database
	DefaultSystemPath	default system xdm PATH environment variable
	DefaultSystemShell	default /bin/sh
	DefaultUserPath		default user xdm PATH environment variable
	DependCmd		command to run makedepend
	DependDir		build directory containing makedepend program
	DoInstallExtensionsIntoXlib	merge -lXext into -lX11 (shunned)
	ExtensionDefines	-D's for universal extensions
	ExtensionOSDefines	-D's for additional extensions
	FontCompilerFlags	flags for bdftosnf
	FontDefines		-D's to turn on font options
	FontDir			directory in which to install fonts
	FontFilters		-D's to specify font conversion filters
	FontOSDefines		-D's for which fonts to support
	ForceNormalLib		force building of .a in addition to shared lib
	HasXdmAuth		boolean for using XDM-AUTHORIZATION-1
	InstallAppDefFiles	boolean for installing new app defaults files
	InstallFSConfig		boolean for installing fs config file
	InstallLibManPages	boolean for installing library man pages
	InstallXdmConfig	boolean for installing xdm config files
	InstallXinitConfig	boolean for installing xinit config files
	LibDir			directory in which to install X11 data files
	LibManSuffix		man suffix for library pages
	LibmanDir		directory in which to install library man pages
	LintlibDir		directory in which to install lint libs
	ManDir			directory in which to install program man pages
	ManDirectoryRoot	parent of man directories relative to root
	ManPath			full path of parent directory
	ManSourcePath		common prefix of man page directories
	ManSuffix		man suffix for programs
	NeedDefaultDepLibs	boolean for enabling default DEPLIBS
	NlsDir			directory in which to install nls files
	NormalLibPhigs		boolean for building libphigs.a
	NormalLibX		boolean for building libX11.a
	NormalLibXau		boolean for building libXau.a
	NormalLibXaw		boolean for building libXaw.a
	NormalLibXdmcp		boolean for building libXdmcp.a
	NormalLibXext		boolean for building libXext.a
	NormalLibXinput		boolean for building libXi.a
	NormalLibXmu		boolean for building libXmu.a
	NormalLibXt		boolean for building libXt.a
	NormalOldLibX		boolean for building liboldX.a
	OsNameDefines		beats me
	PexApiDir		PEX include file location
	PexCCOptions		special options for building PEX library
	PexCDebugFlags		special flags for building PEX library
	PexClientDefines	special -D's for building PEX clients
	PexDipexDefines		special -D's for building PEX di files
	PexPhigsDefines		special -D's for building PEX library
	PexShmIPC		boolean for using shared memory in phigsmon
	PhigsInclude		include directory for phigs clients
	PrimaryScreenResolution	resolution of default server screen
	ProfileLibX		boolean for compiling -p Xlib
	ProfileLibXArchive	boolean for building libX11_p
	ProfileLibXau		boolean for buidling libXau_p
	ProfileLibXaw		boolean for building libXaw_p
	ProfileLibXdmcp		boolean for building libXdmcp_p
	ProfileLibXext		boolean for building libXext_p
	ProfileLibXmu		boolean for building libXmu_p
	ProfileLibXt		boolean for building libXt_p
	ProfileOldLibX		boolean for building liboldX_p
	ProjectX		version indicating this is the X Window System
	RemoveTargetProgramByMoving	boolean for rm -f that doesn't
	SHELLPATH		-D for /bin/sh
	ServerDefines		complete -D's for server
	ServerExtraDefines	special -D's for server
	ServerOSDefines		OS -D's for server
	SharedLibPhigs		boolean for making sharable libphigs
	SharedLibX		boolean for making sharable libX11
	SharedLibXau		boolean for making sharable libXau
	SharedLibXaw		boolean for making sharable libXaw
	SharedLibXdmcp		boolean for making sharable libXdmcp
	SharedLibXext		boolean for making sharable libXext
	SharedLibXinput		boolean for making sharable libXi
	SharedLibXmu		boolean for making sharable libXmu
	SharedLibXt		boolean for making sharable libXt
	SharedOldLibX		boolean for making sharable liboldX
	ShmDefines		MIT-SHM define
	TwmDir			directory in which to install twm config files
	UseCCMakeDepend		boolean for using alternate makedepend script
	XAppLoadDir		directory in which to install app defaults
	XFileSearchPathBase	base file search path
	XFileSearchPathDefault	default path to search for app defaults files
	XInputDefines		XINPUT define
	XawClientDepLibs	DEPLIBS for clients that use Xaw
	XawClientLibs		LOCAL_LIBRARIES for clients that use Xaw
	XdmConfigurationSubdirectory	name of default xdm configuration
	XdmDir			directory in which to install xdm files
	XdmServersType		type of xdm Xservers file to install
	XinitDir		directory in which to install xinit files
	XmanLocalSearchPath	non-standard path for man pages
	XtErrorPrefix		leading text in XtError() msg; eg. 'X Toolkit '
	XtWarningPrefix		leading text in XtWarning()msg, same as above
	ZBDFTOSNFFILT		-D to run uncompress and bdftosnf

Library.tmpl provides defaults for the following variables:

	AvoidNullMakeCommand	for makes that spout about $(_NULLCMD_)
	LibraryCCOptions	special C compiler options for libraries
	LibraryCDebugFlags	library debug/optimize flags to override defs
	LibraryCcCmd		command to run C compiler in libraries
	LibraryDefines		-D's for libraries


Server.tmpl provides defaults for the following variables:

	ServerCCOptions		server C compiler options to override defaults
	ServerCcCmd		command to run C compiler in server
	ServerCDebugFlags	server debug/opt compiler flags
	ServerDefines		server standard -D's


An <os>Lib.rules file provides defaults for the following variables:

	HasSharedLibraries	boolean for using shared libraries
	SharedDataSeparation	boolean indicating separate data/code
	SharedCodeDef		-D's for compiling shared library files
	SharedLibraryDef	-D's for defining which kind of shared lib
	ShLibIncludeFile	location of the <os>Lib.tmpl file
	SharedLibraryLoadFlags	loader flags when making the library
	PositionIndependentCFlags PIC compiler flags


An <os>Lib.tmpl file provides defaults for the following variables:

	SharedOldXRev		version number for shared liboldX
	SharedXauRev		version number for shared libXau
	SharedXawRev		version number for shared libXaw
	SharedXdmcpRev		version number for shared libXdmcp
	SharedXextRev		version number for shared libXext
	SharedXinputRev		version number for shared libXi
	SharedXlibRev		version number for shared libX11
	SharedXmuRev		version number for shared libXmu
	SharedXtRev		version number for shared libXt
