README
上传用户:xu_441
上传日期:2007-01-04
资源大小:1640k
文件大小:12k
- This directory contains tools. Do not attempt to actually build
- anything in this directory.
- The Build script allows you to specify a base location for the object
- files by using the -O flag:
- Build -O /tmp
- will put the object files in /tmp/obj.*/. Also, if the SENDMAIL_SUFFIX
- environment variable is set, its value will be used in the obj.* directory
- name.
- The Build script allows you to specify a site configuration file by using
- the -f flag:
- Build -f siteconfig.m4
- You can put such site configuration files in the Site sub-directory;
- see Site/README for details.
- If you need to support multiple build configurations from the same tree,
- you can use prefixes to differentiate your configurations. Use the -Q
- flag to Build:
- Build -Q prefix
- Build will select a prefix.*.m4 file instead of the site.*.m4 file according
- to the conventions in Site/README, and use it to modify the build
- configuration. The object directory used will be obj.prefix.*/. Your
- prefix.*.m4 files should reside in the Site directory. You may not use
- -Q and -f simultaneously.
- While building a site configuration file, beyond using define() to set
- variables, you can also add to a definition using the APPENDDEF() and
- PREPENDDEF() macros. For example:
- APPENDDEF(`confINCDIRS', `-I/usr/local/bind/include')
- will add -I/usr/local/bind/include to the already existing confINCDIRS.
- Note: There must be no trailing spaces after the last quote mark and
- before the closing parenthesis. Also you may need to properly quote
- m4 reserved words as specified by your vendor's m4 command.
- By default, sendmail will search your system for include and library
- directories as well as certain libraries (libdb.* for Berkeley DB and
- libbind.a or libresolv.* for name resolution). You can turn off this
- configuration step by specifying the -S flag with the Build command.
- The OS subtree contains definitions for variations on a standard
- model for system installation. The M4 variables that can be defined
- and their defaults before referencing the appropriate OS definitions
- are listed below. Note that variables preceded by an asterisk (*)
- are currently not used in the open source distribution.
- confBEFORE [empty] Files to create before sendmail is
- compiled. The methods must be defined
- in the Makefile using PUSHDIVERT(3).
- confBUILDBIN ../../devtools/bin The location of the build support
- binaries, relative to the obj.*
- directory.
- confCC cc The C compiler to use.
- confOPTIMIZE -O Flags passed to C compiler as ${O}.
- confCCOPTS [empty] Additional options to pass to confCC.
- *confCCOPTS_SO -fPIC Additional options for compiling
- shared object libraries.
- *confMTCCOPTS [empty] Additional options for compiling
- multi-threaded object files.
- confCOPY cp A program that copies files.
- confDEPEND_TYPE generic How to build dependencies. This should
- be the name of a file in
- devtools/M4/depend
- confEBINDIR /usr/libexec The location for binaries executed
- from other binaries, e.g., mail.local
- or smrsh.
- confENVDEF [empty] -D flags passed to C compiler.
- confFORCE_RMAIL [undefined] If defined, install the rmail program
- without question.
- confHFDIR /etc/mail Location of the sendmail helpfile.
- confHFFILE helpfile Name of the installed helpfile.
- confINCDIRS [empty] -I flags passed to C compiler.
- confINSTALL install The BSD-compatible install program.
- Use ${BUILDBIN}/install.sh if none
- is available on your system.
- confINSTALL_RAWMAN [undefined] Install the unformatted manual pages.
- *confLD confCC Linker to use.
- confLDOPTS [empty] Linker options passed to ld.
- *confLDOPTS_SO -shared -Wl Additional linker options for
- linking shared object libraries.
- *confMTLDOPTS [empty] Additional linker options for
- linking multithreaded binaries.
- confLIBDIRS [empty] -L flags passed to ld.
- confLIBS [varies] -l flags passed to ld.
- confLIBSEARCH db bind resolv 44bsd
- Search for these libraries for
- linking with programs.
- confLIBSEARCHPATH /lib /usr/lib /usr/shlib
- Locations to search for the
- libraries specified by confLIBSEARCH.
- confLINKS ${UBINDIR}/newaliases ${UBINDIR}/mailq
- ${UBINDIR}/hoststat ${UBINDIR}/purgestat
- Names of links to sendmail.
- confMANROOT /usr/share/man/cat The root of the man subtree.
- confMANROOTMAN /usr/share/man/man The root of the man subtree, for
- unformatted manual pages.
- confMAN1 confMANROOT 1 The location of man1 files.
- confMAN1EXT 1 The extension on files in confMAN1.
- confMAN1SRC 0 The source for man pages installed
- in confMAN1.
- confMAN3 confMANROOT 3 The location of man3 files.
- confMAN3EXT 4 The extension on files in confMAN3.
- confMAN3SRC 0 The source for man pages installed
- in confMAN3.
- confMAN4 confMANROOT 4 The location of man4 files.
- confMAN4EXT 4 The extension on files in confMAN4.
- confMAN4SRC 0 The source for man pages installed
- in confMAN4.
- confMAN5 confMANROOT 5 The location of man5 files.
- confMAN5EXT 5 The extension on files in confMAN5.
- confMAN5SRC 0 The source for man pages installed
- in confMAN5.
- confMAN8 confMANROOT 8 The location of man8 files.
- confMAN8EXT 8 The extension on files in confMAN8.
- confMAN8SRC 0 The source for man pages installed
- in confMAN8.
- confMANDOC -man The macros used to format man pages.
- confMANOWN bin The owner of installed man pages.
- confMANGRP bin The group of installed man pages.
- confMANMODE 444 The mode of installed man pages.
- confMAPDEF [varies] The map definitions, e.g.,
- -DNDBM -DNEWDB. -DNEWDB is always
- added if libdb.* can be found.
- confNO_MAN_BUILD [undefined] If defined, don't build the man
- pages.
- confNO_HELPFILE_INSTALL [undefined] If defined, don't install the sendmail
- helpfile by default.
- confNO_MAN_INSTALL [undefined] If defined, don't install the man
- pages by default.
- confNO_STATISTICS_INSTALL [undefined] If defined, don't install the sendmail
- statistics file by default.
- confMBINDIR /usr/sbin The location of the MTA (sendmail)
- binary.
- confNROFF groff -Tascii The command to format man pages.
- confOBJADD [empty] Objects that should be included in
- when linking sendmail and the
- associated utilities. See also
- confSRCADD.
- confRANLIB echo The path to the program to use
- as ranlib.
- confRANLIBOPTS [empty] Options to pass to ranlib.
- confSBINDIR /usr/sbin The location of root-oriented
- commands, such as makemap.
- confSBINOWN root The owner for setuid binaries.
- confSBINGRP sbin The group for setuid binaries.
- confSBINMODE 4555 The mode for setuid binaries.
- confSHELL /bin/sh The shell to use inside make.
- confSMOBJADD [empty] Objects that should be included in
- when linking sendmail. See also
- confSMSRCADD.
- confSMSRCADD [empty] C source files which correspond to
- objects listed in confSMOBJADD.
- confSMSRCDIR [varies] The sendmail source directory
- relative to support program obj.*
- directories. If not set, the
- Makefile will use a path set by the
- Build script.
- confSRCADD [empty] C source files which correspond to
- objects listed in confOBJADD.
- confSRCDIR [varies] The root of the source directories
- relative to support program obj.*
- directories. If not set, the
- Makefile will use a path set by the
- Build script.
- confSTDIO_TYPE portable Buffered file implementation
- (based on stdio library). Either
- portable or torek.
- confSTDIR /etc/mail The directory in which to store the
- sendmail statistics file.
- confSTFILE statistics Name of the installed statistics file.
- confSTRIP strip What program to use for stripping
- executables.
- confSTRIPOPTS [empty] Options to pass to the strip program.
- confUBINDIR /usr/bin The directory for user-executable
- binaries.
- confUBINOWN bin The owner for user-executable binaries.
- confUBINGRP bin The group for user-executable binaries.
- confUBINMODE 555 The mode for user-executable binaries.
- There are also program specific variables for each of the programs
- in the sendmail distribution. Each has the form `conf_prog_ENVDEF',
- for example, `conf_sendmail_ENVDEF'. If the program name consists
- a '.' it must be replaced by '_' first, e.g., use `conf_mail_local_LIBS'
- instead of `conf_mail.local_LIBS'. The variables are:
- conf_prog_ENVDEF [empty] -D flags passed to C compiler when
- compiling prog.
- conf_prog_LIBS [varies] -l flags passed to ld when linking
- prog.
- conf_prog_SRCADD [empty] C source files to compile and link
- for prog.
- conf_prog_OBJADD [empty] Additional object files given to ld
- when linking prog.
- ----------------------------------------------------------------
- ----------------
- New build system
- ----------------
- Sendmail's build system has undergone some rearrangement to accommodate
- future development. To the end user building sendmail from a distribution,
- this should have little effect. All the same configuration files and macros
- should still behave the same.
- If you need to make some radical changes to a Makefile.m4 or are adding new
- libraries or utilities, you may want to read the rest of this document on
- how to work with the new system.
- --------
- Overview
- --------
- The purpose of the redesign is twofold. First, it cuts down massively on
- replicated information. Second, the new design should lend itself better to
- working on platforms with somewhat different build tools than on standard
- unix.
- The main idea is to have the Makefile.m4 in each subdirectory contain the
- minimum amount of information needed to describe the elements needed for
- the build process and the products produced.
- Each product has a type and each type has a template that provides a basic
- makefile for that type. Right now the templates are organized by the broad
- type of the operating system. The two existing types are UNIX and NT.
- ------------------
- Makefile.m4 basics
- ------------------
- Each Makefile.m4 is split into separate products. For the most part, the
- products are considered totally separate from other products in the
- Makefile.m4. Each products is delineated by two macros: bldPRODUCT_START and
- bldPRODUCT_END.
- The form for bldPRODUCT_START is:
- bldPRODUCT_START(<product_type>, <product_name>)
- where <product_type> is the type of product to be produced (e.g., executable,
- library, manpage) and <product_name> is a unique identifier within the
- product_type name space for this Makefile.m4
- The form for bldPRODUCT_END is:
- bldPRODUCT_END
- This is marks the end of all the information for the current product.
- There is one other macro required in any Makefile.m4 and that is bldFINISH
- which takes no arguments and must appear after all the products have been
- defined.
- When the actual makefile is generated each product appears in two sections.
- The first is where makefile variables are set (e.g., CFLAGS=-O). The second
- is where the targets appear (e.g., foo.o: foo.c). Anything diverted to
- bldTARGETS_SECTION ends up in the second part of the makefile. Anything
- else turns up in the header part where variables are defined.
- As always, any straight text put into Makefile.m4 will just show up as is
- in the finished makefile.
- -------------
- Product Types
- -------------
- executable
- ----------
- This means an executable created from C sources. The name of the executable
- is derived from the product_name in the bldPRODUCT_START macro.
- bldSOURCES - This should be defined to a space separated list of source
- files that make up the executable.
- bldBIN_TYPE - This determines where the binaries will be installed and what
- permissions they will have. Available types are `U', `K', `S', and `E'. See
- M4/make/executable.m4 for what the different types mean.
- bldTARGET_LINKS - This determines where additional symbolic links to the
- executable are placed. These should be full pathnames, separated by
- spaces.
- manpage
- -------
- This builds manpages from source using *roff.
- bldSOURCES - This should be defined to a space separated list of man source
- files.
- library
- -------
- This builds a static library from C sources.
- bldSOURCES - This should be defined to a space separated list of C source
- files that make up the library.
- $Revision: 8.62 $, Last updated $Date: 1999/11/16 16:29:40 $