diff options
author | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2006-11-25 16:16:48 +0000 |
---|---|---|
committer | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2006-11-25 16:16:48 +0000 |
commit | 3f58440c73fee49a1cbf3a9f47ba06592f33208b (patch) | |
tree | 1a39da9e217885b74c9c0f09e6431bb66a2c0a32 /util/cf/README | |
parent | 7b467928c509058d60342a08c51c85693cdfa281 (diff) |
import from X.Org 7.2RC2
Diffstat (limited to 'util/cf/README')
-rw-r--r-- | util/cf/README | 700 |
1 files changed, 700 insertions, 0 deletions
diff --git a/util/cf/README b/util/cf/README new file mode 100644 index 000000000..c4c5f59ab --- /dev/null +++ b/util/cf/README @@ -0,0 +1,700 @@ +$Xorg: README,v 1.4 2000/08/18 04:03:58 coskrey Exp $ + + + + +$XFree86: xc/config/cf/README,v 1.20 2003/04/14 20:35:50 herrb Exp $ + +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 + ConstructMFLAGS System V option to set MFLAGS make variable + CpCmd command to copy one file to another + CplusplusCmd command to run C++ compiler + 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 + 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 + GzipCmd command to run gzip program + HasBSD44Sockets boolean for system has BSD4.4 sockets + HasBsdMake use the 4.4BSD variant of the make program? + 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 + HasCookieMaker boolean for system has xauth cookie generator + 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? + HasGnuMake use the GNU make program? + HasGhostPCL boolean for system has GhostPCL + HasGhostScript boolean for system has GhostScript + HasKrbIV system has Kerberos version IV support? + 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 + HasMotif boolean for system has Motif + HasMotif2 boolean for system has Motif2 or OpenMotif + 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 + HasSetProcTitle boolean for setproctitle() + 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 + IncludeSharedObjectInNormalLib define for static libs to include + -fPIC objects on relevant archs + 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 + KrbIVIncludes where to include KerberosIV header files from + KrbIVLibraries where to load KerberosIV libraries from + 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 + MkCookieCmd command to generate an xauth cookie + 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 + OSName operating system name + OSTeenyVersion maintenance 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 (obsolete) + 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 + BuildDmx build Distributed Multihead X server and extension + 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 + BuildServer build X server + BuildXAudio build Audio + BuildXAServer build Audio server + BuildXCSecurity Build Security 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 + 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 + 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 + DefaultCursorTheme name of default cursor theme + 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 + DriverManDir directory in which to install driver man pages + DriverManSuffix man suffix for driver pages + 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? + KrbIVDefines defines for use with KerberosIV + 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 + MiscManDir directory in which to install misc man pages + NeedDefaultDepLibs boolean for enabling default DEPLIBS + NlsDir directory in which to install nls files + NormalLibFS build libFS.a + NormalLibICE build libICE.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 + NormalLibXmu build libXmu.a + NormalLibXt build libXt.a + NormalLibXtst build libXtst.a + NormalLibXag build libXag.a + NormalOldX build liboldX.a + OsNameDefines If uname(2) unavailable, set to -DOS_NAME=OSName + PrimaryScreenResolution resolution of default server screen + ProfileLibFS build libFS_p.a + ProfileLibICE build libICE_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 + 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 + 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 + 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 + 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 + XpPdfDDX include the PDF print ddx driver + XpSvgDDX include the SVG print ddx driver + 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 (obsolete) + + +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 + 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 + 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 + +Vendor.cf files and/or site/host specific .def files may define the +following variables: + + ProjectRoot The directory under which the installation + will operate. This value will be hard coded + into some programs. As a result do not use it + to specify the installation directory for a + cross compiled system, use DESTDIR to + accomplish that task. + +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 + 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 + XdmxServer build Distributed Multihead X server + + +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, binary package building, + and specifying alternative installation directories + for cross compiles. +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. + +InstallDirectory install a directory. + +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. |