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