123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685 |
- $TOG: README /main/76 1998/05/11 14:35:10 barstow $
- The easiest way to write an Imakefile is to find another one that does
- something similar and copy/modify it!
- To change any of these variables, edit the site.def file.
- Imake.tmpl provides defaults for the following variables:
- AlternateIncRoot compiler needs -I to find project includes
- AlternateUsrLibDir linker needs -L to find project libraries
- ArCmd command used to create libraries
- ArCmdBase program name part of ArCmd
- ArAddCmd flags to have ArCmdBase add files to a library
- ArExtCmd flags to have ArCmdBase extract files
- AsCmd command used to run assembler
- BootstrapCFlags missing cpp symbols needed to get started
- BourneShell command used to run Bourne Shell
- CCsuf suffix that C++ source files have
- CURDIR current directory relative to top of sources
- CcCmd command to run C compiler
- CompressCmd command to run compress program
- GzipCmd command to run gzip program
- ConstructMFLAGS System V option to set MFLAGS make variable
- CpCmd command to copy one file to another
- CplusplusCmd command to run C++ compiler
- CplusplusDependIncludes additional -I's for makedepend
- CplusplusFilt command to run C++ name demangler
- CplusplusYaccCmd command to produce C++ source from yacc source
- CppCmd command to run C preprocessor
- CrossCompiling cross compiling? (not fully supported)
- DebuggableCDebugFlags C compiler -I's and -D's to turn on debug info
- DefaultCCOptions default special C compiler options
- DefaultCDebugFlags debug/optimize flags for programs
- DefaultUsrBin program directory used even if PATH not set
- DependFlags extra makedepend flags
- DependDefines additional -D's for makedepend
- DoRanlibCmd boolean for system uses ranlib
- EqnCmd command used for eqn
- ExecableScripts boolean for systems that can exec() #!/bin/sh
- ExpandManNames boolean to expand man pages names to long form
- ExtraFilesToClean extra files to remove on make clean
- ExtraLibraries system-specific libraries need to link
- ExtraLoadFlags system-specific loader flags
- FileManSuffix man suffix for file format pages
- FilesToClean files to delete in make clean
- FortranCmd command to run Fortran compiler
- FortranDebugFlags flags for Fortran debug info
- FortranFlags Fortran compiler flags
- HasBSD44Sockets boolean for system has BSD4.4 sockets
- HasBsearch boolean for libc has bsearch()
- HasBrokenCCForLink boolean for brain damaged cc driver
- HasCenterLineC boolean for system has CenterLine C compiler
- HasCenterLineCplusplus boolean for system has CenterLine C++ compiler
- HasClearmake use Clearcase's clearmake make program?
- HasCodeCenter boolean for system has CodeCenter
- HasCplusplus system has a C++ compiler?
- HasDECnet system has DECnet?
- HasFortran boolean for system has Fortran compiler
- HasGcc boolean for system has GNU gcc compiler
- HasGcc2 boolean for system has GNU gcc 2.x compiler
- HasGcc2ForCplusplus use gcc 2 for C++ programs?
- HasKrb5 system has Kerberos version 5 support?
- HasLargeTmp boolean for system has /tmp space
- HasLatex system has LaTeX document preparation software
- HasLibCrypt boolean for system has libcrypt
- HasNdbm boolean for system has ndbm routines
- HasPoll use poll() syscall?
- HasPurify boolean for system has Purify
- HasPutenv boolean for libc has putenv()
- HasSecureRPC boolean for Sun Secure RPC
- HasSetUserContext boolean for setusercontext()
- HasSentinel boolean for system has Sentinel available
- HasSharedLibraries boolean for system has shared libraries
- HasShm boolean for System V shared memory
- HasSockets boolean for system has BSD sockets
- HasStrcasecmp boolean for system implements str[n]casecmp
- HasStreams use STREAMS I/O interface?
- HasSymLinks boolean for system has symbolic links
- HasTestCenter boolean for system has TestCenter
- HasVarDirectory boolean for system has /var
- HasVFork boolean for system has vfork()
- HasVoidSignalReturn boolean for POSIX signal() procs
- HasZlib boolean for system has libz
- IncRoot parent of X11 include directory
- InstBinFlags install flags for binaries
- InstDatFlags install flags for data files
- InstIncFlags install flags for header files
- InstKmemFlags install flags for xload to get at /dev/kmem
- InstLibFlags install flags for libraries
- InstManFlags install flags for manual pages
- InstPgmFlags install flags for normal programs
- InstUidFlags install flags for xterm to chown /dev/ptys
- InstallCmd command to install files
- KornShell command used to run Korn Shell
- Krb5Includes where to include Kerberos header files from
- Krb5Libraries where to load Kerberos libraries from
- LdCmd command to run loader
- LdCombineFlags flags for incremental loading
- LexCmd command to run lex
- LexLib library for programs using lex output
- LintCmd command to run lint
- LintLibFlag flags to generate lint libraries
- LintOpts lint options to control strictness
- LnCmd command to link two files
- LoaderLibPrefix loader flags before libraries
- LocalRulesFile site-specific file with additional imake rules
- LocalTmplFile file with additional imake variables
- MacroFile name of machine-dependent config params file
- MacroIncludeFile <MacroFile>
- MakeCmd command to run make
- Malloc0ReturnsNull boolean for malloc(0) == NULL
- Malloc0ReturnsNullDefines -D's to build libX11/libXt
- MathLibrary library for programs using C math functions
- MsMacros macro flag for TroffCmd, normally "-ms"
- MvCmd command to rename a file
- NdbmDefines -D's to turn on use of ndbm routines
- NeedConstPrototoypes whether const is supported
- NeedFunctionPrototypes whether or not to force function prototypes
- NeedNestedPrototypes whether nested prototypes are supported
- NeedVarargsPrototypes whether varargs prototypes are supported
- NeedWidePrototypes whether or not to widen function prototypes
- NoOpCDebugFlags C compiler flags to not debug or optimize
- NoRConst YES if const for structs of funcs is bad
- OSMajorVersion major version number of operating system
- OSMinorVersion minor version number of operating system
- OptimizedCDebugFlags C compiler flags to turn on optimization
- XtPopdownConformance XtPopdown conformans to the specification
- PreProcessCmd command to run /lib/cpp on scripts
- RanlibCmd command to clean up libraries
- RanlibInstFlags flags to ranlib after copying
- ResourceConfigurationManagement boolean for Xt's Resource Configuration
- Management
- RmCmd command to delete files
- ShLibDir directory in which to install shared libraries
- StandardCppDefines -D's for running cpp
- StandardDefines -D's for running C compiler
- StandardIncludes -I's for running C compiler
- StripInstalledPrograms boolean for sites that want to install -s
- SystemV boolean for systems that are at least SVR2
- SystemV4 boolean for SVR4 systems
- TOPDIR relative path to top of sources
- TagsCmd command to run tags
- TblCmd command to run tbl
- TroffCmd command to run troff to get PostScript
- UNCOMPRESSPATH command to run uncompress
- UnalignedReferencesAllowed boolean for unaligned copies ok
- UsrLibDir directory in which to install libraries
- YaccCmd command to run yacc
- X11.tmpl provides defaults for the following variables:
- AdmDir directory containing system log files
- AllocateLocalDefines -D's to turn on alloca() (should be in Imake.tmpl)
- BDFTOSNFFILT command to run bdftosnf
- BaseExtensionDefines universal extensions to use
- BinDir directory in which to install programs
- BuildAppgroup build AppGroup extension in server
- BuildCup build Colormap Utilization extension in server
- BuildDBE build DOUBLE-BUFFER extension
- BuildDIS build Document Imaging Subset of XIE
- BuildDPMS build Display Power Management Signaling extension
- BuildFontServer build font server
- BuildFonts build pcf fonts
- BuildIncRoot relative path to location of headers in build
- BuildIncTop path from build includes directory to top
- BuildEVI build EVI server extension
- BuildLBX build LBX (aka X.fast) server extension
- BuildMultibuffer build Multibuffer extension (obsolete)
- BuildPlugin build xrx plug-in for web browsers
- BuildRECORD Build RECORD extension
- BuildPexExt build PEX server extension and fonts
- BuildPhigs build Phigs (obsolete)
- BuildServer build X server
- BuildXAudio build Audio
- BuildXAServer build Audio server
- BuildXCSecurity Build Security Extension
- BuildXIE build X Image Extension
- BuildXInputExt build X Input extension (requires ddx support,
- which exists only in Xhp and XFree86)
- BuildXInputLib build X Input library
- BuildXKB build X Keyboard Extension?
- BuildXKBlib build X Keyboard Extension into Xlib?
- UseXKBInClients Use XKB functions in normal clients?
- ConfigDir install directory for config files
- ConnectionFlags -D's for supported transports
- ContribDir location of user-contributed sources
- DebugLibFS build libFS_d.a
- DebugLibICE build libICE_d.a
- DebugLibPex build libPEX5_d.a
- DebugLibSM build libSM_d.a
- DebugLibX11 build libX11_d.a
- DebugLibXau build libXau_d.a
- DebugLibXaw build libXaw_d.a
- DebugLibXdmcp build libXdmcp_d.a
- DebugLibXext build libXext_d.a
- DebugLibXi build libXi_d.a
- DebugLibXie build libXie_d.a
- DebugLibXmu build libXmu_d.a
- DebugLibXt build libXt_d.a
- DebugLibXtst build libXtst_d.a
- DebugLibXag build libXag_d.a
- DebugOldX build liboldX_d.a
- DefaultFSConfigFile default font server config file
- DefaultFontPath default server font path
- DefaultRGBDatabase default server rgb color database
- DefaultSystemPath default system xdm PATH environment variable
- DefaultSystemShell default /bin/sh
- DefaultUserPath default user xdm PATH environment variable
- DependCmd command to run makedepend
- DependDir build directory containing makedepend program
- ExtensionDefines -D's for universal extensions
- ExtensionOSDefines -D's for additional extensions
- FontCompilerFlags flags for bdftosnf
- FontDefines -D's to turn on font options
- FontDir directory in which to install fonts
- FontFilters -D's to specify font conversion filters
- FontOSDefines -D's for which fonts to support
- ForceNormalLib force building of .a in addition to shared lib
- GzipFontCompression boolean for using gzip instead of compress
- HasXdmAuth boolean for using XDM-AUTHORIZATION-1;
- needs Wraphelp.c, see Release Notes
- InstallAppDefFiles install new app defaults files over old?
- InstallFSConfig install fs config file over old?
- InstallLibManPages boolean for installing library man pages
- InstallSecurityConfig install server security policy file over old?
- InstallXdmConfig install xdm config files over old?
- InstallXinitConfig install xinit config files over old?
- LibDir directory in which to install X11 support files
- LibManSuffix man suffix for library pages
- LibmanDir directory in which to install library man pages
- LintlibDir directory in which to install lint libs
- ManDir directory in which to install program man pages
- ManDirectoryRoot parent of man directories relative to root
- ManPath full path of parent directory
- ManSourcePath common prefix of man page directories
- ManSuffix man suffix for programs
- MiscManSuffix man suffix for miscellaneous pages
- NeedDefaultDepLibs boolean for enabling default DEPLIBS
- NlsDir directory in which to install nls files
- NormalLibFS build libFS.a
- NormalLibICE build libICE.a
- NormalLibPex build libPEX5.a
- NormalLibPhigs build libphigs.a
- NormalLibSM build libSM.a
- NormalLibX11 build libX11.a
- NormalLibXau build libXau.a
- NormalLibXaw build libXaw.a
- NormalLibXdmcp build libXdmcp.a
- NormalLibXext build libXext.a
- NormalLibXi build libXi.a
- NormalLibXie build libXie.a
- NormalLibXmu build libXmu.a
- NormalLibXt build libXt.a
- NormalLibXtst build libXtst.a
- NormalLibXag build libXag.a
- NormalOldX build liboldX.a
- OsNameDefines beats me
- PexApiDir PEX include file location
- PexCCOptions special options for building PEX library
- PexCDebugFlags special flags for building PEX library
- PexClientDefines special -D's for building PEX clients
- PexDipexDefines special -D's for building PEX di files
- PexPhigsDefines special -D's for building PEX library
- PexShmIPC boolean for using shared memory in phigsmon
- PhigsInclude include directory for phigs clients
- PrimaryScreenResolution resolution of default server screen
- ProfileLibFS build libFS_p.a
- ProfileLibICE build libICE_p.a
- ProfileLibPex build libPEX5_p.a
- ProfileLibSM build libSM_p.a
- ProfileLibX11 build libX11_p.a
- ProfileLibXau build libXau_p.a
- ProfileLibXaw build libXaw_p.a
- ProfileLibXdmcp build libXdmcp_p.a
- ProfileLibXext build libXext_p.a
- ProfileLibXi build libXi_p.a
- ProfileLibXie build libXie_p.a
- ProfileLibXmu build libXmu_p.a
- ProfileLibXt build libXt_p.a
- ProfileLibXtst build libXtst_p.a
- ProfileLibXag build libXag_p.a
- ProfileOldX build liboldX_p.a
- ProjectX version indicating this is the X Window System
- RemoveTargetProgramByMoving boolean for rm -f that doesn't
- SHELLPATH -D for /bin/sh
- ServerConfigDir directory for server security config files
- ServerDefines complete -D's for server
- ServerExtraDefines special -D's for server
- ServerOSDefines OS -D's for server
- ServerAssertDefines -DNDEBUG for no assertions, /**/ for assertions
- SharedLibFS boolean for making sharable libFS.so
- SharedLibICE boolean for making sharable libICE.so
- SharedLibPex boolean for making sharable libPEX5.so
- SharedLibPhigs boolean for making sharable libphigs.so
- SharedLibSM boolean for making sharable libSM.so
- SharedLibX11 boolean for making sharable libX11.so
- SharedLibXau boolean for making sharable libXau.so
- SharedLibXaw boolean for making sharable libXaw.so
- SharedLibXdmcp boolean for making sharable libXdmcp.so
- SharedLibXext boolean for making sharable libXext.so
- SharedLibXi boolean for making sharable libXi.so
- SharedLibXie boolean for making sharable libXie.so
- SharedLibXmu boolean for making sharable libXmu.so
- SharedLibXt boolean for making sharable libXt.so
- SharedLibXtst boolean for making sharable libXtst.so
- SharedLibXag boolean for making sharable libXag.so
- SharedOldX boolean for making sharable liboldX.so
- ShmDefines MIT-SHM define
- TwmDir directory in which to install twm config files
- UseCCMakeDepend boolean for using alternate makedepend script
- UseRgbTxt use rgb.txt file as is instead of DBM-compiled
- VarDirectory directory in /var for logs, etc., and config
- VendorHasX11R6_3libXext don't need Security & AppGroup in xrx plug-in
- XAppLoadDir directory in which to install app defaults
- XFileSearchPathBase base file search path
- XFileSearchPathDefault default path to search for app defaults files
- XInputDefines XINPUT define
- XMalloc0ReturnsNullDefines -D's specifically for libX11
- XawClientDepLibs DEPLIBS for clients that use Xaw
- XawClientLibs LOCAL_LIBRARIES for clients that use Xaw
- XdmConfigurationSubdirectory name of default xdm configuration
- XdmDir directory in which to install xdm files
- XdmServersType type of xdm Xservers file to install
- XinitDir directory in which to install xinit files
- XPrintDir parent of X Print server config directory
- XprtServer build the X Print server
- XmanLocalSearchPath non-standard path for man pages
- XtErrorPrefix leading text in XtError() msg; eg. 'X Toolkit '
- XtWarningPrefix leading text in XtWarning()msg, same as above
- XtMalloc0ReturnsNullDefines -D's specifically for libXt
- ZBDFTOSNFFILT -D to run uncompress and bdftosnf
- Library.tmpl provides defaults for the following variables:
- AvoidNullMakeCommand for makes that spout about $(_NULLCMD_)
- LibraryCCOptions special C compiler options for libraries
- LibraryCDebugFlags library debug/optimize flags to override defs
- LibraryCcCmd command to run C compiler in libraries
- LibraryCplusplusOptions special C++ options for libraries
- LibraryCplusplusDebugFlags library debug/optimize flags for C++
- LibraryCplusplusCmd command to run C++ compiler in libraries
- LibraryDefines -D's for libraries
- SeparateSharedCompile shared and unshared libs use same binaries?
- Server.tmpl provides defaults for the following variables:
- ServerCCOptions server C compiler options to override defaults
- ServerCcCmd command to run C compiler in server
- ServerCDebugFlags server debug/opt compiler flags
- ServerDefines server standard -D's
- InstallServerSetUID does this system need X server suid to root?
- Threads.tmpl provides defaults for the following variables:
- LocalThreads whether to enable multi-threading support
- LocalThreadsDefines -D flags needed in this directory
- An <os>Lib.rules file provides defaults for the following variables:
- HasSharedLibraries boolean for using shared libraries
- SharedDataSeparation boolean indicating separate data/code
- SharedCodeDef -D's for compiling shared library files
- SharedLibraryDef -D's for defining which kind of shared lib
- ShLibIncludeFile location of the <os>Lib.tmpl file
- SharedLibraryLoadFlags loader flags when making the library
- UseExportLists boolean for using an export list
- PositionIndependentCFlags PIC compiler flags for C
- PositionIndependentCplusplusFlags PIC compiler flags for C++
- Note: PositionIndependentCplusplusFlags is only required if the
- C and C++ compilers use different flags to build PIC code. The
- default configuration will try to use PositionIndependentCFlags
- for both C and C++ compiles.
- An <os>Lib.tmpl file provides defaults for the following variables:
- SharedFSReqs required libs for libFS.so
- SharedFSRev version number for libFS.so
- SharedICEReqs required libs for libICE.so
- SharedICERev version number for libICE.so
- SharedOldXReqs required libs for liboldX.so
- SharedOldXRev version number for liboldX.so
- SharedPexReqs required libs for libPEX5.so
- SharedPexRev version number for libPEX5.so
- SharedSMReqs required libs for libSM.so
- SharedSMRev version number for libSM.so
- SharedX11Reqs required libs for libX11.so
- SharedX11Rev version number for libX11.so
- SharedXauReqs required libs for libXau.so
- SharedXauRev version number for libXau.so
- SharedXawReqs required libs for libXaw.so
- SharedXawRev version number for libXaw.so
- SharedXdmcpReqs required libs for libXdmcp.so
- SharedXdmcpRev version number for libXdmcp.so
- SharedXextReqs required libs for libXext.so
- SharedXextRev version number for libXext.so
- SharedXiReqs required libs for libXi.so
- SharedXiRev version number for libXi.so
- SharedXieReqs required libs for libXie.so
- SharedXieRev version number for libXie.so
- SharedXmuReqs required libs for libXmu.so
- SharedXmuRev version number for libXmu.so
- SharedXtReqs required libs for libXt.so
- SharedXtRev version number for libXt.so
- SharedXtstReqs required libs for libXtst.so
- SharedXtstRev version number for libXtst.so
- SharedXmReqs required libs for libXm.so
- SharedXmRev version number for libXm.so
- SharedMrmReqs required libs for libMrm.so
- SharedMrmRev version number for libMrm.so
- SharedUilReqs required libs for libUil.so
- SharedUilRev version number for libUil.so
- SharedTtReqs required libs for libtt.so
- SharedTtRev version number for libtt.so
- SharedPamReqs required libs for libpam.so
- SharedPamRev version number for libpam.so
- SharedDtSvcReqs required libs for libDtSvc.so
- SharedDtSvcRev version number for libDtSvc.so
- SharedDtSearchReqs required libs for libDtSearch.so
- SharedDtSearchRev version number for libDtSearch.so
- SharedDtWidgetReqs required libs for libDtWidget.so
- SharedDtWidgetRev version number for libDtWidget.so
- SharedDtHelpReqs required libs for libDtHelp.so
- SharedDtHelpRev version number for libDtHelp.so
- SharedDtPrintReqs required libs for libDtPrint.so
- SharedDtPrintRev version number for libDtPrint.so
- SharedDtTermReqs required libs for libDtTerm.so
- SharedDtTermRev version number for libDtTerm.so
- SharedDtMrmReqs required libs for libDtMrm.so
- SharedDtMrmRev version number for libDtMrm.so
- The following variables are used by some part of the tree:
- AckToolset programs/Xserver/hw/xfree86
- BuildChooser build the xdm chooser program?
- SharedLibXdmGreet use xdm shared dynamic greeter library?
- LatexCmd command to run LaTeX on a document
- DvipsCmd command to turn .dvi file into PostScript
- MotifBC using Motif 1.1.1, 1.1.2, or 1.1.3?
- GetValuesBC compat GetValues behavior for broken apps?
- NeedBerklib application needs libXbsd?
- SvgaConfig default SVGA configuration
- HasGetReturnAddress util/memleak
- HasShadowPasswd system has getspnam() function
- XnestServer build X server with Xlib-based ddx
- XVirtualFramebufferServer build X server with virtual memory framebuffer
- XpRasterDDX include the raster print ddx driver
- XpColorPclDDX include the color PCL print ddx driver
- XpMonoPclDDX include the monochrome PCL print ddx driver
- XpPostScriptDDX include the PostScript print ddx driver
- WebServer host:port of your Web server (see programs/xrx)
- HtmlDir path used by Web server for HTML and RX docs
- CgiBinDir path used by Web server for CGI programs
- ProxyManager ICE network ID to contact a running proxymngr
- Make Variables
- The following make variables are used by imake rules and may be set in
- an individual Imakefile.
- DEFINES program-specific -D flags and other arguments
- to pass to the C compiler, lint, and makedepend.
- DEPEND_DEFINES program-specific flags in addition to
- $(DEFINES) to pass to lint and makedepend.
- This is usually used when there are special
- compilation rules for individual files, and
- the defines passed to those files affect
- makedepend results. If they can be passed to
- all files during the makedepend step without
- affecting the results for other files,
- DEPEND_DEFINES is used to do that. Example is
- the Xlib Imakefile.
- INCLUDES program-specific -I flags.
- HEADERS .h files to install with "make includes" and
- "make install". If this Imakefile includes
- Library.tmpl there are no headers, include
- this line instead of a HEADERS definition:
- #define LibHeaders NO
- REQUIREDLIBS when building a shared library, other libraries used
- by this library that should be referenced at
- link time.
- LINTLIBS program-specific libraries for lint.
- LOCAL_LDFLAGS program-specific flags for the linker.
- LOCAL_LIBRARIES project libraries (usually specified
- as -lname) needed by this program.
- For example, "-lXt -lXext -lX11".
- Used by SimpleProgramTarget and
- ComplexProgramTarget* rules.
- Do not include any system-specific libraries here.
- SYS_LIBRARIES system libraries (usually specified
- as -lname) needed by this program.
- For example "MathLibrary".
- Do not include any system-specific libraries
- such as "-lnsl" here; they are automatically
- added to the link command by the
- vendor-specific .cf file.
- SUBDIRS for an Imakefile in a directory containing
- subdirectories, this names the subdirectories.
- Such an Imakefile also needs to #define IHaveSubdirs
- and call MakeSubdirs() and DependSubdirs().
- MANSUFFIX suffix used by InstallManPage* rules.
- May be set to $(LIBMANSUFFIX), $(FILEMANSUFFIX), or
- $(MISCMANSUFFIX) in directories for libraries or data
- files.
- Rule-specific variables that may be set in an individual Imakefile.
- If you aren't using these rules, you may need variables with a similar
- function, but you need not use these names. However, following these
- conventions may make your Imakefile easier to read and maintain.
- DEPLIBS library dependencies for ComplexProgramTarget
- SRCS source files used by ComplexProgramTarget and
- DependTarget.
- OBJS object files used by ComplexProgramTarget
- PROGRAMS default target used with ComplexProgramTarget_(n)
- SRCS1 source files used by ComplexProgramTarget_1
- OBJS1 object files used by ComplexProgramTarget_1
- DEPLIBS1 library dependencies for ComplexProgramTarget_1
- SRCS2 source files used by ComplexProgramTarget_2
- OBJS2 object files used by ComplexProgramTarget_2
- DEPLIBS2 library dependencies for ComplexProgramTarget_2
- SRCS3 source files used by ComplexProgramTarget_3
- OBJS3 object files used by ComplexProgramTarget_3
- DEPLIBS3 library dependencies for ComplexProgramTarget_3
- Variables that can be set on the make command line:
- DESTDIR directory under which "make install" should
- install instead of "/"; used only for testing
- "make install" rules.
- FILE file for "lint1" target to run lint on.
- CDEBUGFLAGS -g and/or -O flag to control C compiler optimization.
- CXXDEBUGFLAGS -g and/or -O flag to control C++ optimization.
- LDSTRIPFLAGS flag to have linker strip objects (typically -x).
- Typically set to the empty string to prevent
- the linker from stripping objects; use this
- way when setting CDEBUGFLAGS to "-g".
- These variables are set in project-specific files such as X11.tmpl.
- They should NOT be set in an Imakefile. These variables are sometimes
- misused; they are included here to remind Imakefile writers NOT to use
- them:
- EXTRA_DEFINES project-specific -D flags
- EXTRA_INCLUDES project-specific -I flags
- EXTRA_ICONFIGFILES Additional project-specific imake config files
- to add to ICONFIGFILES.
- This is a list of files that define variables
- that might affect compilation of some files.
- Many other make variables are set up by the imake config files and can
- be used in an Imakefile. The easiest way to discover them is to look
- at the Makefile generated by an empty Imakefile.
- Comments
- Use C comment syntax in an Imakefile for comments that should not
- appear in the resulting Makefile.
- Use "XCOMM" at the start of each
- line to produce a comment that will appear in the Makefile.
- (The "XCOMM" will
- be translated into the Makefile comment character "#" by imake.)
- Do NOT use "#" as a comment character in Imakefiles; it confuses the C
- preprocessor used by imake on some systems.
- Imake variables
- Don't abuse the variables in X11.tmpl that describe
- particular pieces of X by using them to describe your own subsystems.
- Instead, create new variables that are defaulted using
- Imake.tmpl variables.
- Examples
- Since the easiest way to write an Imakefile is to start with one that
- works, here are some short, easy-to-read Imakefile examples in the X
- distribution:
- with subdirs: config/Imakefile
- library: lib/Xau/Imakefile
- simple program: programs/xdpyinfo/Imakefile
- complex progs: programs/xclipboard/Imakefile
- complex prog: programs/xmodmap/Imakefile
- Common Rules
- Here are some of the common rules for building programs. How to use
- them is described in Imake.rules and in the O'Reilly book "Software
- Portability with imake."
- Basic program-building rules
- All of these except NormalProgramTarget also generate rules to install
- the program and its manual page, and to generate dependencies.
- SimpleProgramTarget Use if there is only one program to be made
- and it has only one source file.
- ComplexProgramTarget Use if there is only one program to be made
- and it has multiple source files. Set SRCS to
- the names of the source files, set OBJS to
- the names of the object files, and set DEPLIBS
- to the libraries that this program depends on.
- ComplexProgramTarget_1 Like ComplexProgramTarget, but uses SRCS1,
- OBJS1, and DEPLIBS1 and can be used with
- ComplexProgramTarget_2 and ComplexProgramTarget_3
- to build up to three programs in the same directory.
- Set PROGRAMS to the programs built by all of
- these rules. For more than 3 programs, use
- NormalProgramTarget for each.
- ComplexProgramTarget_2 Use after ComplexProgramTarget_1 for the
- second program in a directory. Uses SRCS2,
- OBJS2, and DEPLIBS2.
- ComplexProgramTarget_3 Use after ComplexProgramTarget_2 for the
- third program in a directory. Uses SRCS3,
- OBJS3, and DEPLIBS3.
- NormalProgramTarget Build a program. Can be used multiple times
- with different arguments in the same Imakefile.
- Lower level rules, often used with NormalProgramTarget
- InstallProgram install a program.
- InstallManPage install a manual page.
- DependTarget() include once at end of Imakefile with
- NormalProgramTarget rules or that uses Library.tmpl.
- Generates dependencies for files named in SRCS.
- Manual page rules, commonly used only in special documentation directories:
- InstallManPage
- InstallManPageLong
- InstallManPageAliases
- Other rules:
- SpecialCObjectRule Compile a C file with special flags.
- AllTarget Declare additional targets to build.
- InstallAppDefaults Install X application defaults file.
- Imakefile for directory with subdirectories
- XCOMM this is a sample Imakefile for a directory containing subdirectories
- #define IHaveSubdirs
- #define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
- SUBDIRS = list of subdirs ...
- MakeSubdirs($(SUBDIRS))
- DependSubdirs($(SUBDIRS))
- Common Targets
- These targets are typically NOT defined explicitly by the Imakefile
- writer; rather they are generated automatically by imake rules.
- They are listed here for the convenience of people using the resulting
- Makefile, not people writing the original Imakefile.
- all Default rule; builds whatever is in this directory.
- Makefile Remake the Makefile (use after changing Imakefile).
- Run "make depend" after.
- Makefiles Remake all Makefiles in subdirectories. (Does
- nothing if no subdirectories.)
- Run "make depend" after.
- includes Generate and install in the tree any necessary
- header files.
- depend Update dependencies in the Makefile calculated
- by examining the source files.
- install Install what "make all" built on the system.
- install.man Install manual pages.
- clean Remove built objects and other derived files.
- lint Run lint.
- tags Create a tags file.
|