From: Ezra Peisach Date: Thu, 4 Jan 1990 23:04:10 +0000 (+0000) Subject: Initial revision X-Git-Tag: krb5-1.0-alpha2~1303 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=30fbdeeb5865e172e96163a3039a30e953acd57e;p=krb5.git Initial revision git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@70 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/config/README b/src/config/README new file mode 100644 index 000000000..bf55f22da --- /dev/null +++ b/src/config/README @@ -0,0 +1,322 @@ + + X Window System + Imake Configuration Guide + + Release 4 + + + + Abstract + +This document describes the various parameters that are used to configure this +release of the X Window System. It should be read by anyone who is porting X +to a new platform or attempting to change the default installation. + + + + +0. Overview + +Sources for a paper giving an overview of the build system may be found in +./doc/config/usenixws/paper.ms. + + + +1. Introduction + +Because Makefiles are inherently unportable, this release uses a tool called +Imake to generate platform-specific Makefiles from machine-independent +descriptions called Imakefiles. It makes very heavy use of the C preprocessor +both for constants and macro functions and can be somewhat tricky to master. +However, it is invaluable for making the release easy to configure on a wide +variety of machines. + +Imakefiles usually contain definitions of make variables plus one or more +invocations of macro functions to build the desired parts of the Makefile. +Imake reads a template file containing definitions that are common to all +Makefiles, which includes a machine-specific file containing definitions for +the various commonly used commands and flags for enabling certain build +options. It then includes a rules file in which all of the various macro +functions are defined followed by the Imakefile being processed. Finally, +it appends a set of common rules to the bottom. + + + + +2. The template file + +All of the common configuration parameters and make rules are located in +the file Imake.tmpl. The top of the file defines some useful constants +and then has a series of conditional blocks for setting the platform type. + +This requires that there be a unique preprocessor symbol that can be used to +identify which configuration block to use. Systems whose cpp does not define +such a symbol must add one to the cpp_argv table in config/imakemdep.h and +build with BOOTSTRAPCFLAGS set to the appropriate name. Any additional flags +(such as -DSYSV or -DUSG) that are needed to compile imake.c should be added +to the file ccflags.c. + +Each block defines several symbol names representing the type of system +being configured: + + #define MacroIncludeFile "PLATFORM.cf" + #define MacroFile PLATFORM.cf + #define PLATFORMArchitecture + +where PLATFORM is the type of the system being configured. The redundant +versions are needed because one is used by cpp to include the file and the +other is used in generating filenames. The Architecture variable may be +used in Imakefiles to obtain platform-specific rules or values. The unique +symbols that were used to select the configuration block are then undefined +to prevent Imakefiles from using system-dependent rules as opposed to +platform-dependent (some platforms run on multiple systems). + +The rest of the template file should not be edited. Server-specific changes +can be made in the appropriate .cf file and site-specific changes can be +made in site.def. Any parameter that is not set will be given a default value +in the appropriate .tmpl file. THESE DEFAULTS SHOULD NOT BE CHANGED. + + + + +3. Server-specific .cf file + +Differences between operating systems are handled by setting various +configuration parameters in the .cf files. The easiest way to create +a new one is to: + + o find a configuration similar to yours or start with generic.cf. + o set the SystemV variable if your OS is based on SVR2. + o set the OSName, OSMajorVersion, and OSMinorVersion variables. + o set BuildServer to NO if you are doing a client-only build. + o look at the other .cf files, Imake.tmpl, and Project.tmpl to see + if there are any variables you'd like to set; common ones include: + + HasSockets, HasVFork, HasVoidSignalReturn, HasBsearch, + HasPutenv, NeedBerklibInXlib, ConnectionFlags, CcCmd, LnCmd, + setTtyGroup, UnalignedReferencesAllowed + + +Imake.tmpl provides defaults for the following variables: + + ArCmd command used to create libraries + AsCmd command used to run assembler + BootstrapCFlags missing cpp symbols needed to get started + BourneShell command used to run Bourne Shell + CURDIR current directory relative to top of sources + CcCmd command to run C compiler + CompatibilityFlags flags turn on backwards compatibility + CompressCmd command to run compress program + ConstructMFLAGS System V option to set MFLAGS make variable + CpCmd command to copy one file to another + CppCmd command to run C preprocessor + 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 + DestDir prefix to root directory when installed + ExecableScripts boolean for systems that can exec() #!/bin/sh + ExtraLibraries system-specific libraries need to link + ExtraLoadFlags system-specific loader flags + FilesToClean files to delete in make clean + FortranCmd command to run Fortran compiler + FortranDebugFlags flags for Fortran debug info + FortranFlags Fortran compiler flags + HasBsearch boolean for libc has bsearch() + HasDESLibrary boolean for system has DES library + HasFortran boolean for system has Fortran compiler + HasGcc boolean for system has GNU C compiler + HasLargeTmp boolean for system has /tmp space + HasNdbm boolean for system has ndbm routines + HasPutenv boolean for libc has putenv() + HasSaberC boolean for system has Saber C + HasSharedLibraries boolean for system has shared libraries + HasSockets boolean for system has BSD sockets + HasSunOSSharedLibraries boolean for system has SunOS shared libs + HasVFork boolean for system has vfork() + HasVoidSignalReturn boolean for POSIX signal() procs + IncRoot parent of X11 include directory + 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 + LdCmd command to run loader + LdCombineFlags flags for incremental loading + LibraryCCOptions special C compiler options for libraries + LibraryCDebugFlags library debug/optimize flags to override defs + LibraryCcCmd command to run C compiler in libraries + 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 + MacroFile name of machine-dependent config params file + MacroIncludeFile + MakeCmd command to run make + MvCmd command to rename a file + NdbmDefines -D's to turn on use of ndbm routines + NeedFunctionPrototypes whether or not to force function prototypes + NeedWidePrototypes whether or not to widen function prototypes + NoOpCDebugFlags C compiler flags to not debug or optimize + OSMajorVersion major version number of operating system + OSMinorVersion minor version number of operating system + OptimizedCDebugFlags C compiler flags to turn on optimization + PexCDebugFlags special -D's for PEX + PreProcessCmd command to run /lib/cpp on scripts + RanlibCmd command to clean up libraries + RanlibInstFlags flags to ranlib after copying + RmCmd command to delete files + ServerCCOptions server C compiler options to override defaults + ServerCcCmd command to run C compiler in server + SharedCodeDef -D's to turn on sharable code in libraries + SharedLibraryDef -D's to turn on use of 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 + TOPDIR relative path to top of sources + TagsCmd command to run tags + UNCOMPRESSPATH command to run uncompress + UnalignedReferencesAllowed boolean for unaligned copies ok + UsrLibDir directory in which to install libraries + + +Project.tmpl provides defaults for the following variables: + + AdmDir directory containing system log files + AllocateLocalDefines -D's to turn on alloca() + AwmDir directory containing awm config files + BDFTOSNFFILT command to run bdftosnf + BandAidLibraryNeeded boolean for systems that need extra Xlib stuff + BandAidLibraryObjects Xlib object files to merge in + BandAidLibrarySources Xlib source files to merge in + BinDir directory in which to install programs + BuildExamples boolean controlling make of examples stuff + BuildIncRoot relative path to location of headers in build + BuildIncTop path from build includes directory to top + BuildServer boolean controlling make of server stuff + BuildXawBC boolean controlling R3 compatibility in Xaw + ConfigDir install directory for config files + ConnectionFlags -D's for supported transports + ContribDir location of user-contributed sources + DebugLibX boolean for compiling extra Xlib -g + DebugLibXArchive boolean for building extra libX11_g.a + DebugLibXaw boolean for compiling/building) libXaw_g + DebugLibXext boolean for compiling/building) libXext_g + DebugLibXmu boolean for compiling/building) libXmu_g + DebugLibXt boolean for compiling/building) libXt_g + DebugOldLibX boolean for compiling/building) liboldX_g + 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 + DoInstallExtensionsIntoXlib merge -lXext into -lX11 + ExtensionDefines -D's for 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 + GwmDir directory in which to install gwm config stuff + HasInputExtension boolean for systems that want XInput extension + IncRoot parent directory of installed header files + InstallAppDefFiles boolean for installing new app defaults files + InstallOldHeaderFiles boolean for installing R3-compatible headers + InstallXdmConfig boolean for installing xdm config files + InstallXinitConfig boolean for installing xinit files + LibDir directory in which to install X11 data files + LibManSuffix man suffix for library pages + LibmanDir directory in which to install library man pages + LibraryDefines -D's for libraries + 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 + NeedBerklibInXlib boolean for systems that need BSD emulation + NeedDefaultDepLibs boolean for enabling default DEPLIBS + PrimaryScreenResolution resolution of default server screen + ProfileLibX boolean for compiling -p Xlib + ProfileLibXArchive boolean for building libX11_p + ProfileLibXaw boolean for compiling/building libXaw_p + ProfileLibXext boolean for compiling/building libXext_p + ProfileLibXmu boolean for compiling/building libXmu_p + ProfileLibXt boolean for compiling/building libXt_p + ProfileOldLibX boolean for compiling/building liboldX_p + ProjectX boolean indicating this is the X Window System + RemoveTargetProgramByMoving boolean for rm -f that doesn't + SHELLPATH -D for /bin/sh + ServerCDebugFlags server debug/opt compiler flags + ServerDefines -D's for server + SharedLibX boolean for making sharable libX11 + SharedLibXaw boolean for making sharable libXaw + SharedLibXext boolean for making sharable libXext + SharedLibXmu boolean for making sharable libXmu + SharedLibXt boolean for making sharable libXt + SharedOldLibX boolean for making sharable liboldX + SharedOldXRev version number for shared libX11 + SharedXawRev version number for shared libXaw + SharedXextRev version number for shared libXext + SharedXlibRev version number for shared libXmu + SharedXmuRev version number for shared libXt + SharedXtRev version number for shared liboldX + TwmDir directory in which to install twm config files + UNCOMPRESSFILT -D of command to run uncompress + UseCCMakeDepend boolean for using alternate makedepend script + XAppLoadDir directory in which to install app defaults + 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 + XinitDir directory in which to install xinit files + ZBDFTOSNFFILT -D to run uncompress and bdftosnf + + +4. Site-specific site.def file + +The site.def file is used to set configuration parameters that apply to all all +servers in a given site. It should use #ifndef so that servers may still +override it. The second use for site.def is to define installation directories +and flags. The following additional build parameters are defined: + + HasXcuWidgets include Xcu make variables in Makefiles + HasXwWidgets include Xw make variables in Makefiles + + + +5. Imakefiles + +Individual Imakefiles may use any of the macros defined in Imake.rules. Many +of these rules use auxillary make variables: + + FILE used by lint1 phase + INSTALLFLAGS used by default installs + LINTLIBS used by NormalLintTarget + LOCAL_LIBRARIES used by ComplexProgramTarget + MAKEFILE_SUBDIR used by MakeMakeSubdirs + OBJS used by ComplexProgramTarget + OBJS1 used by ComplexProgramTarget_1 + OBJS2 used by ComplexProgramTarget_2 + OBJS3 used by ComplexProgramTarget_3 + PROGRAM used by ComplexProgramTarget + PROGRAMS used by ComplexProgramTarget_1 + SRCS used by DependTarget + SRCS1 used by DependTarget + SRCS2 used by DependTarget + SRCS3 used by DependTarget + +The easiest way to write an Imakefile is to find another one that does the +same thing and modify it. + +The most important guidelines are that the X Libraries be refered to by their +make variables names (e.g. $(XLIB)) rather than -llib, and should go in +LOCAL_LIBRARIES rather than SYSTEM_LIBRARIES (which is only for things like +-lm). +