home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 342a.lha / make / make.n < prev    next >
Text File  |  1990-02-10  |  7KB  |  251 lines

  1. .so an
  2. .de HP
  3. .ti -5
  4. .en
  5. .TH MAKE 1 "AMIGA Programmer's Manual"
  6. .SH NAME
  7. make - maintain program groups
  8. .SH SYNTAX
  9. make [ -f makefile ] [ option ] ... file ...
  10. .SH DESCRIPTION
  11. .I Make
  12. executes commands in
  13. .I makefile
  14. to update one or more target
  15. .I names. Name
  16. is typically a program. If no -f option
  17. is present, `makefile' and `Makefile' are tried in order.
  18. If
  19. .I makefile
  20. is `-', the standard input is taken. More than one -f option may appear.
  21.  
  22. .I Make
  23. updates a target if it depends on prerequisite files that have been
  24. modified since the target was last modified, or if the target does not
  25. exist.
  26.  
  27. .I Makefile
  28. contains a sequence of entries that specify dependencies. The first line of
  29. an entry is a blank-separated list of targets, then a colon, then a list of
  30. prerequisite files. Text following a semicolon, and all following lines
  31. that begin with a tab, are shell commands to be executed to update the
  32. target. If a name appears on the left of more than one `colon' line, then
  33. it depends on all of the names on the right of the colon on those lines,
  34. but only one command sequence may be specified for it. If a name appears on
  35. a line with a double colon :: then the command sequence following that line
  36. is performed only if the name is out of date with respect to the names to
  37. the right of the double colon, and is not affected by other double colon
  38. lines on which that name may appear.
  39.  
  40. Two special forms of a name are recognized. A name like
  41. .I a(b)
  42. means the file named
  43. .I b
  44. stored in the archive named
  45. .I a.
  46. A name like
  47. .I a((b))
  48. means the file stored in archive a containing the entry point
  49. .I b.
  50.  
  51. Sharp and newline surround comments.
  52.  
  53. The following makefile says that `pgm' depends on two files `a.o' and
  54. `b.o', and that they in turn depend on `.c' files and a common file `incl'.
  55.  
  56.         pgm: a.o b.o
  57.                 cc a.o b.o -lm -o pgm
  58.         a.o: incl a.c
  59.                 cc -c a.c
  60.         b.o: incl b.c
  61.                 cc -c b.c
  62.  
  63. .I Makefile
  64. entries of the form
  65.  
  66.         string1 = string2
  67.  
  68. are macro definitions. Subsequent appearances of
  69. .I $(string1)
  70. or
  71. .I ${string1}
  72. are replaced by
  73. .I string2.
  74. If
  75. .I string1
  76. is a single character, the parentheses or braces are optional.
  77.  
  78. .I Make
  79. infers prerequisites for files for which
  80. .I makefile
  81. gives no construction commands. For example, a `.c' file may be inferred as
  82. prerequisite for a `.o' file and be compiled to produce the `.o' file. Thus
  83. the preceding example can be done more briefly:
  84.  
  85.         pgm: a.o b.o
  86.                 cc a.o b.o -lm -o pgm
  87.         a.o b.o: incl
  88.  
  89. Prerequisites are inferred according to selected suffixes listed as the
  90. `prerequisites' for the special name `.SUFFIXES'; multiple lists
  91. accumulate; an empty list clears what came before. Order is significant;
  92. the first possible name for which both a file and a rule as described in
  93. the next paragraph exist is inferred. The default list is
  94.  
  95.         .SUFFIXES: .out .o .c .e .r .f .y .l .s .p
  96.  
  97. The rule to create a file with suffix
  98. .I s2
  99. that depends on a similarly named file with suffix
  100. .I s1
  101. is specified as an entry for the `target'
  102. .I s1s2.
  103. In such an entry, the special macro $* stands for the target name with
  104. suffix deleted, $@@ for the full target name, $< for the complete list of
  105. prerequisites, and $? for the list of prerequisites that are out of date.
  106. For example, a rule for making optimized `.o' files from `.c' files is
  107.  
  108.         .c.o: ; cc -c -O -o $@@ $*.c
  109.  
  110. Certain macros are used by the default inference rules to communicate
  111. optional arguments to any resulting compilations. In particular, `CFLAGS'
  112. is used for
  113. .I cc(1)
  114. options, `FFLAGS' for
  115. .I f77(1)
  116. options, `PFLAGS' for
  117. .I pc(1)
  118. options, and `LFLAGS' and `YFLAGS' for
  119. .I lex
  120. and
  121. .I yacc(1)
  122. options. In addition, the macro `MFLAGS' is filled in with the initial
  123. command line options supplied to
  124. .I make.
  125. This simplifies maintaining a hierarchy of makefiles as one may then invoke
  126. .I make
  127. on makefiles in subdirectories and pass along useful options such as -k.
  128.  
  129. Command lines are executed one at a time, each by its own shell. A line is
  130. printed when it is executed unless the special target `.SILENT' is in
  131. .I makefile,
  132. or the first character of the command is `@@'.
  133.  
  134. Commands returning nonzero status (see
  135. .I intro(1))
  136. cause
  137. .I make
  138. to terminate unless the special target `.IGNORE' is in
  139. .I makefile
  140. or the command begins with <tab><hyphen>.
  141.  
  142. Interrupt and quit cause the target to be deleted unless the target is a
  143. directory or depends on the special name `.PRECIOUS'.
  144.  
  145. Other options:
  146.  
  147. .RS +5
  148. .HP
  149. -i@tEquivalent to the special entry `.IGNORE:'.
  150.  
  151. .HP
  152. -k@tWhen a command returns nonzero status, abandon work on the current
  153. entry, but continue on branches that do not depend on the current entry.
  154.  
  155. .HP
  156. -n@tTrace and print, but do not execute the commands needed to update the
  157. targets.
  158.  
  159. .HP
  160. -t@tTouch, i.e. update the modified date of targets, without executing any
  161. commands.
  162.  
  163. .HP
  164. -r@tEquivalent to an initial special entry `.SUFFIXES:' with no list.
  165.  
  166. .HP
  167. -s@tEquivalent to the special entry `.SILENT:'.
  168.  
  169. .HP
  170. -q@tQuestion up-to-dateness of target. Return exit status 1 if not;
  171. otherwise, return 0.
  172.  
  173. .HP
  174. -r@tDon't use built-in rules.
  175. .RE
  176. .SH FILES
  177. makefile, Makefile
  178. .SH "SEE ALSO"
  179. sh(1), touch(1), f77(1), pc(1)
  180. .br
  181. S. I. Feldman
  182. .I "Make - A Program for Maintaining Computer Programs"
  183. .SH BUGS
  184. Some commands return nonzero status inappropriately. Use -i
  185. to overcome the difficulty.
  186. Commands that are directly executed by the shell, notably
  187. .I cd(1),
  188. are ineffectual across newlines in
  189. .I make.
  190. .SH "AMIGA VERSION"
  191. Not all of the above applies to the Amiga version of
  192. .I make.
  193. In particular, the default rules and suffixes are different.
  194.  
  195. Omissions:
  196. .br
  197. Libraries and the related notation are not implemented.
  198. .br
  199. The -k option is not supported.
  200. .br
  201. The `;' construct is not implemented.
  202. .br
  203. The remarks related to
  204. .I MFLAGS, lex(1), yacc(1), f77(1)
  205. and
  206. .I pc(1)
  207. do not apply.
  208. .br
  209. $< and $? are not exactly as specified: $< is ONE prerequisite that is out
  210. of date (including path name), and $? is ALL prerequisites (without path
  211. names).
  212.  
  213. Additions:
  214. .br
  215. If a file
  216. .I s:builtins.make
  217. exists, this file is used instead of the built-in rules.
  218. .br
  219. Filenames are not case-significant. Unfortunately, this also applies to the
  220. special target names .PRECIOUS, .IGNORE and .SILENT. These can also be
  221. specified as .Precious, or .iGnOrE.
  222. .br
  223. .I Cd
  224. commands are effective.
  225. .br
  226. Comment characters (#) may be escaped with a backslash (\).
  227. .br
  228. At most 1 colon is allowed in a target file name (for including device
  229. names). In that case, the trailing colon must follow the target name
  230. immediately, without any intervening white space. Spaces in the names are
  231. not allowed.
  232. .br
  233. A new special target name has been added:
  234. .it "@.PATH.
  235. Any prerequisite names for
  236. .it "@.PATH
  237. are used for finding source files for implicit rules. You name one or more
  238. directories, and if the source file for an implicit rule cannot be found
  239. in the current directory, each of the the given pathnames is prepended (in
  240. the order given) to the source name, until the file is found.
  241.  
  242. For instance, the Makefile
  243.  
  244.         .PATH:  src/ include/ src/old
  245.  
  246.         pgm:    pgm.o
  247.  
  248. will look (according to the .c.o rule) for pgm.c, src/pgm.c, include/pgm.c
  249. and src/oldpgm.c, in that order. Of course, due to other implicit rules,
  250. other files (with other suffixes) may be tried as well.
  251.