Revert "Enable the use of the TIRPC library on Linux."
[oweals/cde.git] / cde / config / cf / README
1 $TOG: README /main/76 1998/05/11 14:35:10 barstow $
2
3 The easiest way to write an Imakefile is to find another one that does
4 something similar and copy/modify it!
5
6 To change any of these variables, edit the site.def file.
7
8 Imake.tmpl provides defaults for the following variables:
9
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
133                                         Management
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
150
151 X11.tmpl provides defaults for the following variables:
152
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
333
334
335 Library.tmpl provides defaults for the following variables:
336
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?
346
347
348 Server.tmpl provides defaults for the following variables:
349
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?
355
356
357 Threads.tmpl provides defaults for the following variables:
358
359         LocalThreads            whether to enable multi-threading support
360         LocalThreadsDefines     -D flags needed in this directory
361
362
363 An <os>Lib.rules file provides defaults for the following variables:
364
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++
374
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.
379
380 An <os>Lib.tmpl file provides defaults for the following variables:
381
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
436
437 The following variables are used by some part of the tree:
438
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
460
461
462 Make Variables
463
464 The following make variables are used by imake rules and may be set in
465 an individual Imakefile.
466
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
478                         the Xlib Imakefile.
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
487                         link time.
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 
510                         files.
511
512
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.
517
518 DEPLIBS                 library dependencies for ComplexProgramTarget
519 SRCS                    source files used by ComplexProgramTarget and
520                         DependTarget.
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
532
533 Variables that can be set on the make command line:
534
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".
545
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
549 them:
550
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.
557
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.
561
562
563 Comments
564
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.
569 (The "XCOMM" will
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.
573
574
575 Imake variables
576
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.
581
582
583 Examples
584
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
587 distribution:
588
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
594
595 Common Rules
596
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."
600
601 Basic program-building rules
602
603 All of these except NormalProgramTarget also generate rules to install
604 the program and its manual page, and to generate dependencies.
605
606 SimpleProgramTarget     Use if there is only one program to be made
607                         and it has only one source file.
608
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.
614
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,
624                         OBJS2, and DEPLIBS2.
625 ComplexProgramTarget_3  Use after ComplexProgramTarget_2 for the
626                         third program in a directory.  Uses SRCS3,
627                         OBJS3, and DEPLIBS3.
628
629 NormalProgramTarget     Build a program.  Can be used multiple times
630                         with different arguments in the same Imakefile.
631
632 Lower level rules, often used with NormalProgramTarget
633
634 InstallProgram          install a program.
635
636 InstallManPage          install a manual page.
637
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.
641
642 Manual page rules, commonly used only in special documentation directories:
643
644 InstallManPage
645 InstallManPageLong
646 InstallManPageAliases
647
648 Other rules:
649
650 SpecialCObjectRule      Compile a C file with special flags.
651 AllTarget               Declare additional targets to build.
652 InstallAppDefaults      Install X application defaults file.
653
654 Imakefile for directory with subdirectories
655
656 XCOMM this is a sample Imakefile for a directory containing subdirectories
657 #define IHaveSubdirs
658 #define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
659 SUBDIRS = list of subdirs ...
660 MakeSubdirs($(SUBDIRS))
661 DependSubdirs($(SUBDIRS))
662
663
664 Common Targets
665
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.
670
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
678                         header files.
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.
684 lint                    Run lint.
685 tags                    Create a tags file.