README
上传用户:xu_441
上传日期:2007-01-04
资源大小:1640k
文件大小:12k
源码类别:

Email客户端

开发平台:

Unix_Linux

  1. This directory contains tools.  Do not attempt to actually build
  2. anything in this directory.
  3. The Build script allows you to specify a base location for the object
  4. files by using the -O flag:
  5. Build -O /tmp
  6. will put the object files in /tmp/obj.*/.  Also, if the SENDMAIL_SUFFIX
  7. environment variable is set, its value will be used in the obj.* directory
  8. name.
  9. The Build script allows you to specify a site configuration file by using
  10. the -f flag:
  11. Build -f siteconfig.m4
  12. You can put such site configuration files in the Site sub-directory;
  13. see Site/README for details.
  14. If you need to support multiple build configurations from the same tree,
  15. you can use prefixes to differentiate your configurations.  Use the -Q
  16. flag to Build:
  17. Build -Q prefix
  18. Build will select a prefix.*.m4 file instead of the site.*.m4 file according
  19. to the conventions in Site/README, and use it to modify the build
  20. configuration.  The object directory used will be obj.prefix.*/.  Your
  21. prefix.*.m4 files should reside in the Site directory.  You may not use
  22. -Q and -f simultaneously.
  23. While building a site configuration file, beyond using define() to set
  24. variables, you can also add to a definition using the APPENDDEF() and
  25. PREPENDDEF() macros.  For example:
  26. APPENDDEF(`confINCDIRS', `-I/usr/local/bind/include')
  27. will add -I/usr/local/bind/include to the already existing confINCDIRS.
  28. Note: There must be no trailing spaces after the last quote mark and
  29. before the closing parenthesis.  Also you may need to properly quote
  30. m4 reserved words as specified by your vendor's m4 command.
  31. By default, sendmail will search your system for include and library
  32. directories as well as certain libraries (libdb.* for Berkeley DB and
  33. libbind.a or libresolv.* for name resolution).  You can turn off this
  34. configuration step by specifying the -S flag with the Build command.
  35. The OS subtree contains definitions for variations on a standard
  36. model for system installation.  The M4 variables that can be defined
  37. and their defaults before referencing the appropriate OS definitions
  38. are listed below.  Note that variables preceded by an asterisk (*)
  39. are currently not used in the open source distribution.
  40. confBEFORE     [empty] Files to create before sendmail is
  41. compiled.  The methods must be defined
  42. in the Makefile using PUSHDIVERT(3).
  43. confBUILDBIN     ../../devtools/bin The location of the build support
  44. binaries, relative to the obj.*
  45. directory.
  46. confCC     cc The C compiler to use.
  47. confOPTIMIZE     -O Flags passed to C compiler as ${O}.
  48. confCCOPTS     [empty] Additional options to pass to confCC.
  49. *confCCOPTS_SO     -fPIC Additional options for compiling
  50. shared object libraries.
  51. *confMTCCOPTS     [empty] Additional options for compiling
  52. multi-threaded object files.
  53. confCOPY     cp A program that copies files.
  54. confDEPEND_TYPE     generic How to build dependencies.  This should
  55. be the name of a file in
  56. devtools/M4/depend
  57. confEBINDIR     /usr/libexec The location for binaries executed
  58. from other binaries, e.g., mail.local
  59. or smrsh.
  60. confENVDEF     [empty] -D flags passed to C compiler.
  61. confFORCE_RMAIL     [undefined] If defined, install the rmail program 
  62. without question.
  63. confHFDIR     /etc/mail Location of the sendmail helpfile.
  64. confHFFILE     helpfile Name of the installed helpfile.
  65. confINCDIRS     [empty] -I flags passed to C compiler.
  66. confINSTALL     install The BSD-compatible install program.
  67. Use ${BUILDBIN}/install.sh if none
  68. is available on your system.
  69. confINSTALL_RAWMAN  [undefined] Install the unformatted manual pages.
  70. *confLD     confCC Linker to use.
  71. confLDOPTS     [empty] Linker options passed to ld.
  72. *confLDOPTS_SO     -shared -Wl Additional linker options for
  73. linking shared object libraries.
  74. *confMTLDOPTS     [empty] Additional linker options for
  75. linking multithreaded binaries.
  76. confLIBDIRS     [empty] -L flags passed to ld.
  77. confLIBS     [varies] -l flags passed to ld.
  78. confLIBSEARCH     db bind resolv 44bsd
  79. Search for these libraries for
  80. linking with programs.
  81. confLIBSEARCHPATH   /lib /usr/lib /usr/shlib
  82. Locations to search for the
  83. libraries specified by confLIBSEARCH.
  84. confLINKS     ${UBINDIR}/newaliases ${UBINDIR}/mailq 
  85.     ${UBINDIR}/hoststat ${UBINDIR}/purgestat
  86. Names of links to sendmail.
  87. confMANROOT     /usr/share/man/cat The root of the man subtree.
  88. confMANROOTMAN     /usr/share/man/man The root of the man subtree, for 
  89. unformatted manual pages.
  90. confMAN1     confMANROOT 1 The location of man1 files.
  91. confMAN1EXT     1 The extension on files in confMAN1.
  92. confMAN1SRC     0 The source for man pages installed
  93. in confMAN1.
  94. confMAN3     confMANROOT 3 The location of man3 files.
  95. confMAN3EXT     4 The extension on files in confMAN3.
  96. confMAN3SRC     0 The source for man pages installed
  97. in confMAN3.
  98. confMAN4     confMANROOT 4 The location of man4 files.
  99. confMAN4EXT     4 The extension on files in confMAN4.
  100. confMAN4SRC     0 The source for man pages installed
  101. in confMAN4.
  102. confMAN5     confMANROOT 5 The location of man5 files.
  103. confMAN5EXT     5 The extension on files in confMAN5.
  104. confMAN5SRC     0 The source for man pages installed
  105. in confMAN5.
  106. confMAN8     confMANROOT 8 The location of man8 files.
  107. confMAN8EXT     8 The extension on files in confMAN8.
  108. confMAN8SRC     0 The source for man pages installed
  109. in confMAN8.
  110. confMANDOC     -man The macros used to format man pages.
  111. confMANOWN     bin The owner of installed man pages.
  112. confMANGRP     bin The group of installed man pages.
  113. confMANMODE     444 The mode of installed man pages.
  114. confMAPDEF     [varies] The map definitions, e.g.,
  115. -DNDBM -DNEWDB.  -DNEWDB is always
  116. added if libdb.* can be found.
  117. confNO_MAN_BUILD    [undefined] If defined, don't build the man
  118. pages.
  119. confNO_HELPFILE_INSTALL  [undefined] If defined, don't install the sendmail
  120. helpfile by default.
  121. confNO_MAN_INSTALL  [undefined] If defined, don't install the man
  122. pages by default.
  123. confNO_STATISTICS_INSTALL  [undefined] If defined, don't install the sendmail
  124. statistics file by default.
  125. confMBINDIR     /usr/sbin The location of the MTA (sendmail)
  126. binary.
  127. confNROFF     groff -Tascii The command to format man pages.
  128. confOBJADD     [empty] Objects that should be included in
  129. when linking sendmail and the
  130. associated utilities.  See also
  131. confSRCADD.
  132. confRANLIB     echo The path to the program to use
  133. as ranlib.
  134. confRANLIBOPTS      [empty] Options to pass to ranlib.
  135. confSBINDIR     /usr/sbin The location of root-oriented
  136. commands, such as makemap.
  137. confSBINOWN     root The owner for setuid binaries.
  138. confSBINGRP     sbin The group for setuid binaries.
  139. confSBINMODE     4555 The mode for setuid binaries.
  140. confSHELL     /bin/sh The shell to use inside make.
  141. confSMOBJADD     [empty] Objects that should be included in
  142. when linking sendmail.  See also
  143. confSMSRCADD.
  144. confSMSRCADD     [empty] C source files which correspond to
  145. objects listed in confSMOBJADD.
  146. confSMSRCDIR     [varies] The sendmail source directory
  147. relative to support program obj.*
  148. directories.  If not set, the
  149. Makefile will use a path set by the
  150. Build script.
  151. confSRCADD     [empty] C source files which correspond to
  152. objects listed in confOBJADD.
  153. confSRCDIR     [varies] The root of the source directories
  154. relative to support program obj.*
  155. directories.  If not set, the
  156. Makefile will use a path set by the
  157. Build script.
  158. confSTDIO_TYPE     portable Buffered file implementation
  159. (based on stdio library).  Either
  160. portable or torek.
  161. confSTDIR     /etc/mail The directory in which to store the
  162. sendmail statistics file.
  163. confSTFILE     statistics Name of the installed statistics file.
  164. confSTRIP     strip What program to use for stripping
  165. executables.
  166. confSTRIPOPTS     [empty] Options to pass to the strip program.
  167. confUBINDIR     /usr/bin The directory for user-executable
  168. binaries.
  169. confUBINOWN     bin The owner for user-executable binaries.
  170. confUBINGRP     bin The group for user-executable binaries.
  171. confUBINMODE     555 The mode for user-executable binaries.
  172. There are also program specific variables for each of the programs
  173. in the sendmail distribution.  Each has the form `conf_prog_ENVDEF',
  174. for example, `conf_sendmail_ENVDEF'.  If the program name consists
  175. a '.' it must be replaced by '_' first, e.g., use `conf_mail_local_LIBS'
  176. instead of `conf_mail.local_LIBS'.  The variables are:
  177. conf_prog_ENVDEF    [empty] -D flags passed to C compiler when
  178. compiling prog.
  179. conf_prog_LIBS     [varies] -l flags passed to ld when linking
  180. prog.
  181. conf_prog_SRCADD    [empty] C source files to compile and link
  182. for prog.
  183. conf_prog_OBJADD    [empty] Additional object files given to ld
  184. when linking prog.
  185. ----------------------------------------------------------------
  186. ----------------
  187. New build system
  188. ----------------
  189. Sendmail's build system has undergone some rearrangement to accommodate
  190. future development.  To the end user building sendmail from a distribution,
  191. this should have little effect.  All the same configuration files and macros
  192. should still behave the same. 
  193. If you need to make some radical changes to a Makefile.m4 or are adding new
  194. libraries or utilities, you may want to read the rest of this document on
  195. how to work with the new system.
  196. --------
  197. Overview
  198. --------
  199. The purpose of the redesign is twofold.  First, it cuts down massively on
  200. replicated information.  Second, the new design should lend itself better to
  201. working on platforms with somewhat different build tools than on standard
  202. unix.
  203. The main idea is to have the Makefile.m4 in each subdirectory contain the
  204. minimum amount of information needed to describe the elements needed for
  205. the build process and the products produced.
  206. Each product has a type and each type has a template that provides a basic
  207. makefile for that type.  Right now the templates are organized by the broad
  208. type of the operating system. The two existing types are UNIX and NT.
  209. ------------------
  210. Makefile.m4 basics
  211. ------------------
  212. Each Makefile.m4 is split into separate products.  For the most part, the
  213. products are considered totally separate from other products in the
  214. Makefile.m4.  Each products is delineated by two macros: bldPRODUCT_START and
  215. bldPRODUCT_END.
  216. The form for bldPRODUCT_START is:
  217. bldPRODUCT_START(<product_type>, <product_name>)
  218. where <product_type> is the type of product to be produced (e.g., executable,
  219. library, manpage) and <product_name> is a unique identifier within the
  220. product_type name space for this Makefile.m4
  221. The form for bldPRODUCT_END is:
  222. bldPRODUCT_END
  223. This is marks the end of all the information for the current product.
  224. There is one other macro required in any Makefile.m4 and that is bldFINISH
  225. which takes no arguments and must appear after all the products have been
  226. defined.
  227. When the actual makefile is generated each product appears in two sections.
  228. The first is where makefile variables are set (e.g., CFLAGS=-O).  The second
  229. is where the targets appear (e.g., foo.o: foo.c).  Anything diverted to
  230. bldTARGETS_SECTION ends up in the second part of the makefile.  Anything
  231. else turns up in the header part where variables are defined.
  232. As always, any straight text put into Makefile.m4 will just show up as is
  233. in the finished makefile.
  234. -------------
  235. Product Types
  236. -------------
  237. executable
  238. ----------
  239. This means an executable created from C sources.  The name of the executable
  240. is derived from the product_name in the bldPRODUCT_START macro. 
  241. bldSOURCES - This should be defined to a space separated list of source
  242. files that make up the executable.
  243. bldBIN_TYPE - This determines where the binaries will be installed and what
  244. permissions they will have.  Available types are `U', `K', `S', and `E'.  See
  245. M4/make/executable.m4 for what the different types mean.
  246. bldTARGET_LINKS - This determines where additional symbolic links to the
  247. executable are placed.  These should be full pathnames, separated by
  248. spaces.
  249. manpage
  250. -------
  251. This builds manpages from source using *roff. 
  252. bldSOURCES - This should be defined to a space separated list of man source
  253. files.
  254. library
  255. -------
  256. This builds a static library from C sources.
  257. bldSOURCES - This should be defined to a space separated list of C source
  258. files that make up the library.
  259. $Revision: 8.62 $, Last updated $Date: 1999/11/16 16:29:40 $