1The xorg-cf-files package contains the data files for the imake utility,
2defining the known settings for a wide variety of platforms (many of which
3have not been verified or tested in almost two decades), and for many of the
4libraries formerly delivered in the X.Org monolithic releases.
5
6The X Window System used imake extensively up through the X11R6.9 release,
7for both full builds within the source tree and external software.
8X moved to GNU autoconf and automake for its build system in 2005 for
9X11R7.0 and later releases, but still provides imake for building existing
10external software programs that have not yet converted, though we are not
11actively maintaining it for new OS or platform releases.
12
13More information about Imake and its usage may be found in the resources
14at:
15 http://www.snake.net/software/imake-stuff/
16 http://www.kitebird.com/imake-book/
17
18All questions regarding this software should be directed at the
19Xorg mailing list:
20
21 https://lists.x.org/mailman/listinfo/xorg
22
23The primary development code repository can be found at:
24
25 https://gitlab.freedesktop.org/xorg/util/cf
26
27Please submit bug reports and requests to merge patches there.
28
29For patch submission instructions, see:
30
31 https://www.x.org/wiki/Development/Documentation/SubmittingPatches
32
33------------------------------------------------------------------------------
34
35$Xorg: README,v 1.4 2000/08/18 04:03:58 coskrey Exp $
36$XFree86: xc/config/cf/README,v 1.20 2003/04/14 20:35:50 herrb Exp $
37
38The easiest way to write an Imakefile is to find another one that does
39something similar and copy/modify it!
40
41To change any of these variables, edit the site.def file.
42
43Imake.tmpl provides defaults for the following variables:
44
45 AlternateIncRoot compiler needs -I to find project includes
46 AlternateUsrLibDir linker needs -L to find project libraries
47 ArCmd command used to create libraries
48 ArCmdBase program name part of ArCmd
49 ArAddCmd flags to have ArCmdBase add files to a library
50 ArExtCmd flags to have ArCmdBase extract files
51 AsCmd command used to run assembler
52 BootstrapCFlags missing cpp symbols needed to get started
53 BourneShell command used to run Bourne Shell
54 CCsuf suffix that C++ source files have
55 CURDIR current directory relative to top of sources
56 CcCmd command to run C compiler
57 CompressCmd command to run compress program
58 ConstructMFLAGS System V option to set MFLAGS make variable
59 CpCmd command to copy one file to another
60 CplusplusCmd command to run C++ compiler
61 CplusplusFilt command to run C++ name demangler
62 CplusplusYaccCmd command to produce C++ source from yacc source
63 CppCmd command to run C preprocessor
64 CrossCompiling cross compiling? (not fully supported)
65 DebuggableCDebugFlags C compiler -I's and -D's to turn on debug info
66 DefaultCCOptions default special C compiler options
67 DefaultCDebugFlags debug/optimize flags for programs
68 DefaultUsrBin program directory used even if PATH not set
69 DependFlags extra makedepend flags
70 DoRanlibCmd boolean for system uses ranlib
71 EqnCmd command used for eqn
72 ExecableScripts boolean for systems that can exec() #!/bin/sh
73 ExpandManNames boolean to expand man pages names to long form
74 ExtraFilesToClean extra files to remove on make clean
75 ExtraLibraries system-specific libraries need to link
76 ExtraLoadFlags system-specific loader flags
77 FileManSuffix man suffix for file format pages
78 FilesToClean files to delete in make clean
79 FortranCmd command to run Fortran compiler
80 FortranDebugFlags flags for Fortran debug info
81 FortranFlags Fortran compiler flags
82 GzipCmd command to run gzip program
83 HasBSD44Sockets boolean for system has BSD4.4 sockets
84 HasBsdMake use the 4.4BSD variant of the make program?
85 HasBsearch boolean for libc has bsearch()
86 HasBrokenCCForLink boolean for brain damaged cc driver
87 HasCenterLineC boolean for system has CenterLine C compiler
88 HasCenterLineCplusplus boolean for system has CenterLine C++ compiler
89 HasClearmake use Clearcase's clearmake make program?
90 HasCodeCenter boolean for system has CodeCenter
91 HasCookieMaker boolean for system has xauth cookie generator
92 HasCplusplus system has a C++ compiler?
93 HasDECnet system has DECnet?
94 HasFortran boolean for system has Fortran compiler
95 HasGcc boolean for system has GNU gcc compiler
96 HasGcc2 boolean for system has GNU gcc 2.x compiler
97 HasGcc2ForCplusplus use gcc 2 for C++ programs?
98 HasGnuMake use the GNU make program?
99 HasGhostPCL boolean for system has GhostPCL
100 HasGhostScript boolean for system has GhostScript
101 HasKrbIV system has Kerberos version IV support?
102 HasKrb5 system has Kerberos version 5 support?
103 HasLargeTmp boolean for system has /tmp space
104 HasLatex system has LaTeX document preparation software
105 HasLibCrypt boolean for system has libcrypt
106 HasMotif boolean for system has Motif
107 HasMotif2 boolean for system has Motif2 or OpenMotif
108 HasNdbm boolean for system has ndbm routines
109 HasPoll use poll() syscall?
110 HasPurify boolean for system has Purify
111 HasPutenv boolean for libc has putenv()
112 HasSecureRPC boolean for Sun Secure RPC
113 HasSetProcTitle boolean for setproctitle()
114 HasSetUserContext boolean for setusercontext()
115 HasSentinel boolean for system has Sentinel available
116 HasSharedLibraries boolean for system has shared libraries
117 HasShm boolean for System V shared memory
118 HasSockets boolean for system has BSD sockets
119 HasStrcasecmp boolean for system implements str[n]casecmp
120 HasStreams use STREAMS I/O interface?
121 HasSymLinks boolean for system has symbolic links
122 HasTestCenter boolean for system has TestCenter
123 HasVarDirectory boolean for system has /var
124 HasVFork boolean for system has vfork()
125 HasVoidSignalReturn boolean for POSIX signal() procs
126 HasZlib boolean for system has libz
127 IncludeSharedObjectInNormalLib define for static libs to include
128 -fPIC objects on relevant archs
129 IncRoot parent of X11 include directory
130 InstBinFlags install flags for binaries
131 InstDatFlags install flags for data files
132 InstIncFlags install flags for header files
133 InstKmemFlags install flags for xload to get at /dev/kmem
134 InstLibFlags install flags for libraries
135 InstManFlags install flags for manual pages
136 InstPgmFlags install flags for normal programs
137 InstUidFlags install flags for xterm to chown /dev/ptys
138 InstallCmd command to install files
139 KrbIVIncludes where to include KerberosIV header files from
140 KrbIVLibraries where to load KerberosIV libraries from
141 Krb5Includes where to include Kerberos header files from
142 Krb5Libraries where to load Kerberos libraries from
143 LdCmd command to run loader
144 LdCombineFlags flags for incremental loading
145 LexCmd command to run lex
146 LexLib library for programs using lex output
147 LintCmd command to run lint
148 LintLibFlag flags to generate lint libraries
149 LintOpts lint options to control strictness
150 LnCmd command to link two files
151 LoaderLibPrefix loader flags before libraries
152 LocalRulesFile site-specific file with additional imake rules
153 LocalTmplFile file with additional imake variables
154 MacroFile name of machine-dependent config params file
155 MacroIncludeFile <MacroFile>
156 MakeCmd command to run make
157 Malloc0ReturnsNull boolean for malloc(0) == NULL
158 Malloc0ReturnsNullDefines -D's to build libX11/libXt
159 MathLibrary library for programs using C math functions
160 MkCookieCmd command to generate an xauth cookie
161 MsMacros macro flag for TroffCmd, normally "-ms"
162 MvCmd command to rename a file
163 NdbmDefines -D's to turn on use of ndbm routines
164 NeedConstPrototypes whether const is supported
165 NeedFunctionPrototypes whether or not to force function prototypes
166 NeedNestedPrototypes whether nested prototypes are supported
167 NeedVarargsPrototypes whether varargs prototypes are supported
168 NeedWidePrototypes whether or not to widen function prototypes
169 NoOpCDebugFlags C compiler flags to not debug or optimize
170 NoRConst YES if const for structs of funcs is bad
171 OSMajorVersion major version number of operating system
172 OSMinorVersion minor version number of operating system
173 OSName operating system name
174 OSTeenyVersion maintenance version number of operating system
175 OptimizedCDebugFlags C compiler flags to turn on optimization
176 XtPopdownConformance XtPopdown conformance to the specification
177 PreProcessCmd command to run /lib/cpp on scripts
178 RanlibCmd command to clean up libraries
179 RanlibInstFlags flags to ranlib after copying
180 ResourceConfigurationManagement boolean for Xt's Resource Configuration
181 Management
182 RmCmd command to delete files
183 ShLibDir directory in which to install shared libraries
184 StandardCppDefines -D's for running cpp
185 StandardDefines -D's for running C compiler
186 StandardIncludes -I's for running C compiler
187 StripInstalledPrograms boolean for sites that want to install -s
188 SystemV boolean for systems that are at least SVR2
189 SystemV4 boolean for SVR4 systems
190 TOPDIR relative path to top of sources
191 TagsCmd command to run tags
192 TblCmd command to run tbl
193 TroffCmd command to run troff to get PostScript
194 UNCOMPRESSPATH command to run uncompress (obsolete)
195 UnalignedReferencesAllowed boolean for unaligned copies ok
196 UsrLibDir directory in which to install libraries
197 YaccCmd command to run yacc
198
199X11.tmpl provides defaults for the following variables:
200
201 AdmDir directory containing system log files
202 AllocateLocalDefines -D's to turn on alloca() (should be in Imake.tmpl)
203 BDFTOSNFFILT command to run bdftosnf
204 BaseExtensionDefines universal extensions to use
205 BinDir directory in which to install programs
206 BuildAppgroup build AppGroup extension in server
207 BuildCup build Colormap Utilization extension in server
208 BuildDBE build DOUBLE-BUFFER extension
209 BuildDmx build Distributed Multihead X server and extension
210 BuildDPMS build Display Power Management Signaling extension
211 BuildFontServer build font server
212 BuildFonts build pcf fonts
213 BuildIncRoot relative path to location of headers in build
214 BuildIncTop path from build includes directory to top
215 BuildEVI build EVI server extension
216 BuildLBX build LBX (aka X.fast) server extension
217 BuildMultibuffer build Multibuffer extension (obsolete)
218 BuildPlugin build xrx plug-in for web browsers
219 BuildRECORD Build RECORD extension
220 BuildServer build X server
221 BuildXAudio build Audio
222 BuildXAServer build Audio server
223 BuildXCSecurity Build Security Extension
224 BuildXInputExt build X Input extension (requires ddx support,
225 which exists only in Xhp and XFree86)
226 BuildXInputLib build X Input library
227 BuildXKB build X Keyboard Extension?
228 BuildXKBlib build X Keyboard Extension into Xlib?
229 UseXKBInClients Use XKB functions in normal clients?
230 ConfigDir install directory for config files
231 ConnectionFlags -D's for supported transports
232 ContribDir location of user-contributed sources
233 DebugLibFS build libFS_d.a
234 DebugLibICE build libICE_d.a
235 DebugLibSM build libSM_d.a
236 DebugLibX11 build libX11_d.a
237 DebugLibXau build libXau_d.a
238 DebugLibXaw build libXaw_d.a
239 DebugLibXdmcp build libXdmcp_d.a
240 DebugLibXext build libXext_d.a
241 DebugLibXi build libXi_d.a
242 DebugLibXmu build libXmu_d.a
243 DebugLibXt build libXt_d.a
244 DebugLibXtst build libXtst_d.a
245 DebugLibXag build libXag_d.a
246 DebugOldX build liboldX_d.a
247 DefaultCursorTheme name of default cursor theme
248 DefaultFSConfigFile default font server config file
249 DefaultFontPath default server font path
250 DefaultRGBDatabase default server rgb color database
251 DefaultSystemPath default system xdm PATH environment variable
252 DefaultSystemShell default /bin/sh
253 DefaultUserPath default user xdm PATH environment variable
254 DependCmd command to run makedepend
255 DependDir build directory containing makedepend program
256 DriverManDir directory in which to install driver man pages
257 DriverManSuffix man suffix for driver pages
258 ExtensionDefines -D's for universal extensions
259 ExtensionOSDefines -D's for additional extensions
260 FontCompilerFlags flags for bdftosnf
261 FontDefines -D's to turn on font options
262 FontDir directory in which to install fonts
263 FontFilters -D's to specify font conversion filters
264 FontOSDefines -D's for which fonts to support
265 ForceNormalLib force building of .a in addition to shared lib
266 GzipFontCompression boolean for using gzip instead of compress
267 HasXdmAuth boolean for using XDM-AUTHORIZATION-1;
268 needs Wraphelp.c, see Release Notes
269 InstallAppDefFiles install new app defaults files over old?
270 InstallFSConfig install fs config file over old?
271 InstallLibManPages boolean for installing library man pages
272 InstallSecurityConfig install server security policy file over old?
273 InstallXdmConfig install xdm config files over old?
274 InstallXinitConfig install xinit config files over old?
275 KrbIVDefines defines for use with KerberosIV
276 LibDir directory in which to install X11 support files
277 LibManSuffix man suffix for library pages
278 LibmanDir directory in which to install library man pages
279 LintlibDir directory in which to install lint libs
280 ManDir directory in which to install program man pages
281 ManDirectoryRoot parent of man directories relative to root
282 ManPath full path of parent directory
283 ManSourcePath common prefix of man page directories
284 ManSuffix man suffix for programs
285 MiscManSuffix man suffix for miscellaneous pages
286 MiscManDir directory in which to install misc man pages
287 NeedDefaultDepLibs boolean for enabling default DEPLIBS
288 NlsDir directory in which to install nls files
289 NormalLibFS build libFS.a
290 NormalLibICE build libICE.a
291 NormalLibSM build libSM.a
292 NormalLibX11 build libX11.a
293 NormalLibXau build libXau.a
294 NormalLibXaw build libXaw.a
295 NormalLibXdmcp build libXdmcp.a
296 NormalLibXext build libXext.a
297 NormalLibXi build libXi.a
298 NormalLibXmu build libXmu.a
299 NormalLibXt build libXt.a
300 NormalLibXtst build libXtst.a
301 NormalLibXag build libXag.a
302 NormalOldX build liboldX.a
303 OsNameDefines If uname(2) unavailable, set to -DOS_NAME=OSName
304 PrimaryScreenResolution resolution of default server screen
305 ProfileLibFS build libFS_p.a
306 ProfileLibICE build libICE_p.a
307 ProfileLibSM build libSM_p.a
308 ProfileLibX11 build libX11_p.a
309 ProfileLibXau build libXau_p.a
310 ProfileLibXaw build libXaw_p.a
311 ProfileLibXdmcp build libXdmcp_p.a
312 ProfileLibXext build libXext_p.a
313 ProfileLibXi build libXi_p.a
314 ProfileLibXmu build libXmu_p.a
315 ProfileLibXt build libXt_p.a
316 ProfileLibXtst build libXtst_p.a
317 ProfileLibXag build libXag_p.a
318 ProfileOldX build liboldX_p.a
319 ProjectX version indicating this is the X Window System
320 RemoveTargetProgramByMoving boolean for rm -f that doesn't
321 SHELLPATH -D for /bin/sh
322 ServerConfigDir directory for server security config files
323 ServerDefines complete -D's for server
324 ServerExtraDefines special -D's for server
325 ServerOSDefines OS -D's for server
326 ServerAssertDefines -DNDEBUG for no assertions, /**/ for assertions
327 SharedLibFS boolean for making shareable libFS.so
328 SharedLibICE boolean for making shareable libICE.so
329 SharedLibSM boolean for making shareable libSM.so
330 SharedLibX11 boolean for making shareable libX11.so
331 SharedLibXau boolean for making shareable libXau.so
332 SharedLibXaw boolean for making shareable libXaw.so
333 SharedLibXdmcp boolean for making shareable libXdmcp.so
334 SharedLibXext boolean for making shareable libXext.so
335 SharedLibXi boolean for making shareable libXi.so
336 SharedLibXmu boolean for making shareable libXmu.so
337 SharedLibXt boolean for making shareable libXt.so
338 SharedLibXtst boolean for making shareable libXtst.so
339 SharedLibXag boolean for making shareable libXag.so
340 SharedOldX boolean for making shareable liboldX.so
341 ShmDefines MIT-SHM define
342 TwmDir directory in which to install twm config files
343 UseCCMakeDepend boolean for using alternate makedepend script
344 UseRgbTxt use rgb.txt file as is instead of DBM-compiled
345 VarDirectory directory in /var for logs, etc., and config
346 VendorHasX11R6_3libXext don't need Security & AppGroup in xrx plug-in
347 XAppLoadDir directory in which to install app defaults
348 XFileSearchPathBase base file search path
349 XFileSearchPathDefault default path to search for app defaults files
350 XInputDefines XINPUT define
351 XMalloc0ReturnsNullDefines -D's specifically for libX11
352 XawClientDepLibs DEPLIBS for clients that use Xaw
353 XawClientLibs LOCAL_LIBRARIES for clients that use Xaw
354 XdmConfigurationSubdirectory name of default xdm configuration
355 XdmDir directory in which to install xdm files
356 XdmServersType type of xdm Xservers file to install
357 XinitDir directory in which to install xinit files
358 XPrintDir parent of X Print server config directory
359 XprtServer build the X Print server
360 XpRasterDDX include the raster print ddx driver
361 XpColorPclDDX include the color PCL print ddx driver
362 XpMonoPclDDX include the monochrome PCL print ddx driver
363 XpPostScriptDDX include the PostScript print ddx driver
364 XpPdfDDX include the PDF print ddx driver
365 XpSvgDDX include the SVG print ddx driver
366 XmanLocalSearchPath non-standard path for man pages
367 XtErrorPrefix leading text in XtError() msg; eg. 'X Toolkit '
368 XtWarningPrefix leading text in XtWarning()msg, same as above
369 XtMalloc0ReturnsNullDefines -D's specifically for libXt
370 ZBDFTOSNFFILT -D to run uncompress and bdftosnf (obsolete)
371
372
373Library.tmpl provides defaults for the following variables:
374
375 AvoidNullMakeCommand for makes that spout about $(_NULLCMD_)
376 LibraryCCOptions special C compiler options for libraries
377 LibraryCDebugFlags library debug/optimize flags to override defs
378 LibraryCcCmd command to run C compiler in libraries
379 LibraryCplusplusOptions special C++ options for libraries
380 LibraryCplusplusDebugFlags library debug/optimize flags for C++
381 LibraryCplusplusCmd command to run C++ compiler in libraries
382 LibraryDefines -D's for libraries
383 SeparateSharedCompile shared and unshared libs use same binaries?
384
385
386Server.tmpl provides defaults for the following variables:
387
388 ServerCCOptions server C compiler options to override defaults
389 ServerCcCmd command to run C compiler in server
390 ServerCDebugFlags server debug/opt compiler flags
391 ServerDefines server standard -D's
392 InstallServerSetUID does this system need X server suid to root?
393
394
395Threads.tmpl provides defaults for the following variables:
396
397 LocalThreads whether to enable multi-threading support
398 LocalThreadsDefines -D flags needed in this directory
399
400
401An <os>Lib.rules file provides defaults for the following variables:
402
403 HasSharedLibraries boolean for using shared libraries
404 SharedDataSeparation boolean indicating separate data/code
405 SharedCodeDef -D's for compiling shared library files
406 SharedLibraryDef -D's for defining which kind of shared lib
407 ShLibIncludeFile location of the <os>Lib.tmpl file
408 SharedLibraryLoadFlags loader flags when making the library
409 UseExportLists boolean for using an export list
410 PositionIndependentCFlags PIC compiler flags for C
411 PositionIndependentCplusplusFlags PIC compiler flags for C++
412
413 Note: PositionIndependentCplusplusFlags is only required if the
414 C and C++ compilers use different flags to build PIC code. The
415 default configuration will try to use PositionIndependentCFlags
416 for both C and C++ compiles.
417
418An <os>Lib.tmpl file provides defaults for the following variables:
419
420 SharedFSReqs required libs for libFS.so
421 SharedFSRev version number for libFS.so
422 SharedICEReqs required libs for libICE.so
423 SharedICERev version number for libICE.so
424 SharedOldXReqs required libs for liboldX.so
425 SharedOldXRev version number for liboldX.so
426 SharedSMReqs required libs for libSM.so
427 SharedSMRev version number for libSM.so
428 SharedX11Reqs required libs for libX11.so
429 SharedX11Rev version number for libX11.so
430 SharedXauReqs required libs for libXau.so
431 SharedXauRev version number for libXau.so
432 SharedXawReqs required libs for libXaw.so
433 SharedXawRev version number for libXaw.so
434 SharedXdmcpReqs required libs for libXdmcp.so
435 SharedXdmcpRev version number for libXdmcp.so
436 SharedXextReqs required libs for libXext.so
437 SharedXextRev version number for libXext.so
438 SharedXiReqs required libs for libXi.so
439 SharedXiRev version number for libXi.so
440 SharedXmuReqs required libs for libXmu.so
441 SharedXmuRev version number for libXmu.so
442 SharedXtReqs required libs for libXt.so
443 SharedXtRev version number for libXt.so
444 SharedXtstReqs required libs for libXtst.so
445 SharedXtstRev version number for libXtst.so
446 SharedXmReqs required libs for libXm.so
447 SharedXmRev version number for libXm.so
448 SharedMrmReqs required libs for libMrm.so
449 SharedMrmRev version number for libMrm.so
450 SharedUilReqs required libs for libUil.so
451 SharedUilRev version number for libUil.so
452 SharedTtReqs required libs for libtt.so
453 SharedTtRev version number for libtt.so
454 SharedPamReqs required libs for libpam.so
455 SharedPamRev version number for libpam.so
456 SharedDtSvcReqs required libs for libDtSvc.so
457 SharedDtSvcRev version number for libDtSvc.so
458 SharedDtSearchReqs required libs for libDtSearch.so
459 SharedDtSearchRev version number for libDtSearch.so
460 SharedDtWidgetReqs required libs for libDtWidget.so
461 SharedDtWidgetRev version number for libDtWidget.so
462 SharedDtHelpReqs required libs for libDtHelp.so
463 SharedDtHelpRev version number for libDtHelp.so
464 SharedDtPrintReqs required libs for libDtPrint.so
465 SharedDtPrintRev version number for libDtPrint.so
466 SharedDtTermReqs required libs for libDtTerm.so
467 SharedDtTermRev version number for libDtTerm.so
468 SharedDtMrmReqs required libs for libDtMrm.so
469 SharedDtMrmRev version number for libDtMrm.so
470
471Vendor.cf files and/or site/host specific .def files may define the
472following variables:
473
474 ProjectRoot The directory under which the installation
475 will operate. This value will be hard coded
476 into some programs. As a result do not use it
477 to specify the installation directory for a
478 cross compiled system, use DESTDIR to
479 accomplish that task.
480
481The following variables are used by some part of the tree:
482
483 AckToolset programs/Xserver/hw/xfree86
484 BuildChooser build the xdm chooser program?
485 SharedLibXdmGreet use xdm shared dynamic greeter library?
486 LatexCmd command to run LaTeX on a document
487 DvipsCmd command to turn .dvi file into PostScript
488 MotifBC using Motif 1.1.1, 1.1.2, or 1.1.3?
489 GetValuesBC compat GetValues behavior for broken apps?
490 NeedBerklib application needs libXbsd?
491 SvgaConfig default SVGA configuration
492 HasGetReturnAddress util/memleak
493 HasShadowPasswd system has getspnam() function
494 XnestServer build X server with Xlib-based ddx
495 XVirtualFramebufferServer build X server with virtual memory framebuffer
496 WebServer host:port of your Web server (see programs/xrx)
497 HtmlDir path used by Web server for HTML and RX docs
498 CgiBinDir path used by Web server for CGI programs
499 ProxyManager ICE network ID to contact a running proxymngr
500 XdmxServer build Distributed Multihead X server
501
502
503Make Variables
504
505The following make variables are used by imake rules and may be set in
506an individual Imakefile.
507
508DEFINES program-specific -D flags and other arguments
509 to pass to the C compiler, lint, and makedepend.
510DEPEND_DEFINES program-specific flags in addition to
511 $(DEFINES) to pass to lint and makedepend.
512 This is usually used when there are special
513 compilation rules for individual files, and
514 the defines passed to those files affect
515 makedepend results. If they can be passed to
516 all files during the makedepend step without
517 affecting the results for other files,
518 DEPEND_DEFINES is used to do that. Example is
519 the Xlib Imakefile.
520INCLUDES program-specific -I flags.
521HEADERS .h files to install with "make includes" and
522 "make install". If this Imakefile includes
523 Library.tmpl there are no headers, include
524 this line instead of a HEADERS definition:
525 #define LibHeaders NO
526REQUIREDLIBS when building a shared library, other libraries used
527 by this library that should be referenced at
528 link time.
529LINTLIBS program-specific libraries for lint.
530LOCAL_LDFLAGS program-specific flags for the linker.
531LOCAL_LIBRARIES project libraries (usually specified
532 as -lname) needed by this program.
533 For example, "-lXt -lXext -lX11".
534 Used by SimpleProgramTarget and
535 ComplexProgramTarget* rules.
536 Do not include any system-specific libraries here.
537SYS_LIBRARIES system libraries (usually specified
538 as -lname) needed by this program.
539 For example "MathLibrary".
540 Do not include any system-specific libraries
541 such as "-lnsl" here; they are automatically
542 added to the link command by the
543 vendor-specific .cf file.
544SUBDIRS for an Imakefile in a directory containing
545 subdirectories, this names the subdirectories.
546 Such an Imakefile also needs to #define IHaveSubdirs
547 and call MakeSubdirs() and DependSubdirs().
548MANSUFFIX suffix used by InstallManPage* rules.
549 May be set to $(LIBMANSUFFIX), $(FILEMANSUFFIX), or
550 $(MISCMANSUFFIX) in directories for libraries or data
551 files.
552
553
554Rule-specific variables that may be set in an individual Imakefile.
555If you aren't using these rules, you may need variables with a similar
556function, but you need not use these names. However, following these
557conventions may make your Imakefile easier to read and maintain.
558
559DEPLIBS library dependencies for ComplexProgramTarget
560SRCS source files used by ComplexProgramTarget and
561 DependTarget.
562OBJS object files used by ComplexProgramTarget
563PROGRAMS default target used with ComplexProgramTarget_(n)
564SRCS1 source files used by ComplexProgramTarget_1
565OBJS1 object files used by ComplexProgramTarget_1
566DEPLIBS1 library dependencies for ComplexProgramTarget_1
567SRCS2 source files used by ComplexProgramTarget_2
568OBJS2 object files used by ComplexProgramTarget_2
569DEPLIBS2 library dependencies for ComplexProgramTarget_2
570SRCS3 source files used by ComplexProgramTarget_3
571OBJS3 object files used by ComplexProgramTarget_3
572DEPLIBS3 library dependencies for ComplexProgramTarget_3
573
574Variables that can be set on the make command line:
575
576DESTDIR directory under which "make install" should
577 install instead of "/"; used only for testing
578 "make install" rules, binary package building,
579 and specifying alternative installation directories
580 for cross compiles.
581FILE file for "lint1" target to run lint on.
582CDEBUGFLAGS -g and/or -O flag to control C compiler optimization.
583CXXDEBUGFLAGS -g and/or -O flag to control C++ optimization.
584LDSTRIPFLAGS flag to have linker strip objects (typically -x).
585 Typically set to the empty string to prevent
586 the linker from stripping objects; use this
587 way when setting CDEBUGFLAGS to "-g".
588
589These variables are set in project-specific files such as X11.tmpl.
590They should NOT be set in an Imakefile. These variables are sometimes
591misused; they are included here to remind Imakefile writers NOT to use
592them:
593
594EXTRA_DEFINES project-specific -D flags
595EXTRA_INCLUDES project-specific -I flags
596EXTRA_ICONFIGFILES Additional project-specific imake config files
597 to add to ICONFIGFILES.
598 This is a list of files that define variables
599 that might affect compilation of some files.
600
601Many other make variables are set up by the imake config files and can
602be used in an Imakefile. The easiest way to discover them is to look
603at the Makefile generated by an empty Imakefile.
604
605
606Comments
607
608Use C comment syntax in an Imakefile for comments that should not
609appear in the resulting Makefile.
610Use "XCOMM" at the start of each
611line to produce a comment that will appear in the Makefile.
612(The "XCOMM" will
613be translated into the Makefile comment character "#" by imake.)
614Do NOT use "#" as a comment character in Imakefiles; it confuses the C
615preprocessor used by imake on some systems.
616
617
618Imake variables
619
620Don't abuse the variables in X11.tmpl that describe
621particular pieces of X by using them to describe your own subsystems.
622Instead, create new variables that are defaulted using
623Imake.tmpl variables.
624
625
626Examples
627
628Since the easiest way to write an Imakefile is to start with one that
629works, here are some short, easy-to-read Imakefile examples in the X
630distribution:
631
632with subdirs: config/Imakefile
633library: lib/Xau/Imakefile
634simple program: programs/xdpyinfo/Imakefile
635complex progs: programs/xclipboard/Imakefile
636complex prog: programs/xmodmap/Imakefile
637
638Common Rules
639
640Here are some of the common rules for building programs. How to use
641them is described in Imake.rules and in the O'Reilly book "Software
642Portability with imake."
643
644Basic program-building rules
645
646All of these except NormalProgramTarget also generate rules to install
647the program and its manual page, and to generate dependencies.
648
649SimpleProgramTarget Use if there is only one program to be made
650 and it has only one source file.
651
652ComplexProgramTarget Use if there is only one program to be made
653 and it has multiple source files. Set SRCS to
654 the names of the source files, set OBJS to
655 the names of the object files, and set DEPLIBS
656 to the libraries that this program depends on.
657
658ComplexProgramTarget_1 Like ComplexProgramTarget, but uses SRCS1,
659 OBJS1, and DEPLIBS1 and can be used with
660 ComplexProgramTarget_2 and ComplexProgramTarget_3
661 to build up to three programs in the same directory.
662 Set PROGRAMS to the programs built by all of
663 these rules. For more than 3 programs, use
664 NormalProgramTarget for each.
665ComplexProgramTarget_2 Use after ComplexProgramTarget_1 for the
666 second program in a directory. Uses SRCS2,
667 OBJS2, and DEPLIBS2.
668ComplexProgramTarget_3 Use after ComplexProgramTarget_2 for the
669 third program in a directory. Uses SRCS3,
670 OBJS3, and DEPLIBS3.
671
672NormalProgramTarget Build a program. Can be used multiple times
673 with different arguments in the same Imakefile.
674
675Lower level rules, often used with NormalProgramTarget
676
677InstallProgram install a program.
678
679InstallManPage install a manual page.
680
681InstallDirectory install a directory.
682
683DependTarget() include once at end of Imakefile with
684 NormalProgramTarget rules or that uses Library.tmpl.
685 Generates dependencies for files named in SRCS.
686
687Manual page rules, commonly used only in special documentation directories:
688
689InstallManPage
690InstallManPageLong
691InstallManPageAliases
692
693Other rules:
694
695SpecialCObjectRule Compile a C file with special flags.
696AllTarget Declare additional targets to build.
697InstallAppDefaults Install X application defaults file.
698
699Imakefile for directory with subdirectories
700
701XCOMM this is a sample Imakefile for a directory containing subdirectories
702#define IHaveSubdirs
703#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
704SUBDIRS = list of subdirs ...
705MakeSubdirs($(SUBDIRS))
706DependSubdirs($(SUBDIRS))
707
708
709Common Targets
710
711These targets are typically NOT defined explicitly by the Imakefile
712writer; rather they are generated automatically by imake rules.
713They are listed here for the convenience of people using the resulting
714Makefile, not people writing the original Imakefile.
715
716all Default rule; builds whatever is in this directory.
717Makefile Remake the Makefile (use after changing Imakefile).
718 Run "make depend" after.
719Makefiles Remake all Makefiles in subdirectories. (Does
720 nothing if no subdirectories.)
721 Run "make depend" after.
722includes Generate and install in the tree any necessary
723 header files.
724depend Update dependencies in the Makefile calculated
725 by examining the source files.
726install Install what "make all" built on the system.
727install.man Install manual pages.
728clean Remove built objects and other derived files.
729lint Run lint.
730tags Create a tags file.
731