From 96ca806ed31eb593707ef4039d898e4532bfd756 Mon Sep 17 00:00:00 2001 From: Theodore Tso Date: Wed, 8 Mar 1995 05:05:04 +0000 Subject: [PATCH] README file describes imake configuration standards; imake is long gone git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5085 dc483132-0cff-0310-8789-dd5450dbe970 --- src/config/README | 323 ---------------------------------------------- 1 file changed, 323 deletions(-) delete mode 100644 src/config/README diff --git a/src/config/README b/src/config/README deleted file mode 100644 index ada2639f5..000000000 --- a/src/config/README +++ /dev/null @@ -1,323 +0,0 @@ - - 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 - InstScrFlags install flags for scripts - 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). - -- 2.26.2