|
|
1.1 root 1: .TH MKMF 1 "28 June 1985"
2: .\" $Header: mkmf.n,v 1.8 86/01/12 00:53:14 lepreau Exp $
3: .UC 4
4: .SH NAME
5: mkmf \- makefile editor
6: .SH SYNOPSIS
7: .B mkmf
8: [\fB\-acdil\fR] [\fB\-f \fRmakefile] [\fB\-F \fRtemplate] [macroname=value ...]
9: .SH DESCRIPTION
10: .I Mkmf
11: creates a makefile that tells the
12: .I make
13: command how to construct and maintain programs and libraries.
14: After gathering up all the source code file names in the current working
15: directory and inserting them into the makefile,
16: .I mkmf
17: scans source code files for included
18: files and generates dependency information which is appended to the makefile.
19: Source code files are identified by their file name suffixes.
20: .I Mkmf
21: knows about the following suffixes:
22: .LP
23: .nf
24: .ta 1.5i +1i
25: .c C
26: .e Efl
27: .F Fortran
28: .f Fortran
29: .h Include files
30: .i Pascal include files
31: .l Lex or Lisp
32: .o Object files
33: .p Pascal
34: .r Ratfor
35: .s Assembler
36: .y Yacc
37: .fi
38: .DT
39: .LP
40: .I Mkmf
41: checks for an existing makefile before creating one. If no
42: .B \-f
43: option is present, the makefiles `makefile' and `Makefile' are tried
44: in order.
45: .LP
46: After the makefile has been created, arbitrary changes can be made using
47: a regular text editor.
48: .I Mkmf
49: can also be used to re-edit the macro definitions in the makefile, regardless
50: of changes that may have been made since it was created.
51: .LP
52: By default,
53: .I mkmf
54: creates a program makefile. To create a makefile that deals with libraries,
55: the
56: .B \-l
57: option must be used.
58: .LP
59: \fBMake Requests\fR
60: .LP
61: Given a makefile created by
62: .I mkmf,
63: .I make
64: recognizes the following requests:
65: .IP \fBall\fR 15
66: Compile and load a program or library.
67: .IP \fBclean\fR
68: Remove all unnecessary files.
69: .IP \fBdepend\fR
70: Edit the makefile and regenerate the dependency information.
71: .IP \fBextract\fR
72: Extract all the object files from the library and place them in the
73: same directory as the source code files. The library is not altered.
74: .IP \fBindex\fR
75: Print an index of functions on standard output.
76: .IP \fBinstall\fR
77: Compile and load the program or library and move it to its destination
78: directory.
79: .IP \fBlibrary\fR
80: Compile and load a library.
81: .IP \fBprint\fR
82: Print source code files on standard output.
83: .IP \fBtags\fR
84: Create a tags file for the
85: .I ex
86: editor, for C, Pascal, and Fortran source code files.
87: .IP \fBprogram\fR
88: Compile and link a program.
89: .IP \fBupdate\fR
90: Recompile only if there are source code files that are newer than the
91: program or library, link and install the program or library. In the case
92: of an out-of-date library, all the object files are extracted from the
93: library before any recompilation takes place.
94: .LP
95: Several requests may be given simultaneously. For example, to
96: compile and link a program,
97: move the program to its destination directory, and remove
98: any unnecessary object files:
99: .IP
100: make program install clean
101: .LP
102: \fBMacro Definitions\fR
103: .LP
104: .I Mkmf
105: understands the following macro definitions:
106: .IP CFLAGS 15
107: C compiler flags. After searching for included files in the directory
108: currently being processed,
109: .I mkmf
110: searchs in directories named in
111: .B \-I
112: compiler options, and then in the `/usr/include' directory.
113: .IP DEST
114: Directory where the program or library is to be installed.
115: .IP EXTHDRS
116: List of included files external to the current directory.
117: .I Mkmf
118: automatically updates this macro definition in the makefile if dependency
119: information is being generated.
120: .IP FFLAGS
121: Fortran compiler flags. After searching for included files in the directory
122: currently being processed,
123: .I mkmf
124: searchs in directories named in
125: .B \-I
126: compiler options, and then in the `/usr/include' directory.
127: .IP HDRS
128: List of included files in the current directory.
129: .I Mkmf
130: automatically updates this macro definition in the makefile.
131: .IP LIBRARY
132: Library name. This macro also implies the
133: .B \-l
134: option.
135: .IP LIBS
136: List of libraries needed by the link editor to resolve external references.
137: .IP MAKEFILE
138: Makefile name.
139: .IP OBJS
140: List of object files.
141: .I Mkmf
142: automatically updates this macro definition in the makefile.
143: .IP PROGRAM
144: Program name.
145: .IP SRCS
146: List of source code files.
147: .I Mkmf
148: automatically updates this macro definition in the makefile.
149: .IP SUFFIX
150: List of additional file name suffixes for
151: .I mkmf
152: to know about.
153: .LP
154: Both these and any other macro definitions already within the makefile may
155: be replaced by definitions on the command line in the form
156: .I "macroname=value".
157: For example, to change the C compiler flags, the program name, and the
158: destination directory in the makefile, the user might type the following line:
159: .LP
160: .nf
161: mkmf ``CFLAGS=\-I../include \-O'' PROGRAM=mkmf DEST=/usr/new
162: .fi
163: .LP
164: Note that macro definitions like CFLAGS with blanks in them
165: must be enclosed in double quote `"' marks.
166: .LP
167: \fBFile Name Suffixes\fR
168: .LP
169: .I Mkmf
170: can be instructed to recognize additional file name suffixes, or ignore ones
171: that it already knows about, by specifying suffix descriptions in
172: the SUFFIX macro definition. Each suffix description takes the
173: form `.\fIsuffix:tI\^\fR' where
174: .I t
175: is a character indicating the contents of the file (s = source file,
176: o = object file, h = header file, x = executable file) and
177: .I I
178: is an optional character indicating the include syntax for included
179: files (C = C syntax, F = Fortran, Efl, and Ratfor syntax, P = Pascal
180: syntax). The following table describes
181: the default configuration for
182: .I mkmf:
183:
184: .nf
185: .ta 1.5i +1i
186: .c:sC C
187: .e:sF Efl
188: .F:sF Fortran
189: .f:sF Fortran
190: .h:h Include files
191: .i:h Pascal include files
192: .l:sC Lex or Lisp
193: .o:o Object files
194: .p:sP Pascal
195: .r:sF Ratfor
196: .s:s Assembler
197: .y:sC Yacc
198: .fi
199: .DT
200: .LP
201: For example, to change the object file suffix to .obj, undefine the Pascal
202: include file suffix, and prevent Fortran files from being scanned for
203: included files, the SUFFIX macro definition might look like:
204: .IP
205: \&"SUFFIX = .obj:o .i: .f:s"
206: .LP
207: \fBInclude Statement Syntax\fR
208: .LP
209: The syntax of include statements for C, Fortran, and Pascal source code are
210: of the form
211: .IP \fB\C:\fR
212: #include "\fIfilename\fR"
213: .RS
214: where # must be the first character in the line.
215: .RE
216: .IP \fB\Fortran:\fR
217: include '\fIfilename\fR'
218: .RS
219: INCLUDE '\fIfilename\fR'
220: .br
221: where the include statement starts in column 7.
222: .RE
223: .IP \fB\Pascal:\fR
224: #include "\fIfilename\fR"
225: .RS
226: #INCLUDE "\fIfilename\fR"
227: .br
228: where # must be the first character in the line.
229: .RE
230: .LP
231: \fBUser-Defined Templates\fR
232: .LP
233: If
234: .I mkmf
235: can not find a makefile within the current directory, it normally uses
236: one of the standard makefile templates, `p.Makefile' or `l.Makefile', in
237: /usr/new/lib unless the user has alternative `p.Makefile'
238: or `l.Makefile' template files in a directory $PROJECT/lib where
239: $PROJECT is the absolute pathname of the directory assigned to the PROJECT
240: environment variable.
241: .SH OPTIONS
242: .IP \fB\-a\fR
243: When searching a directory for source and include files, also consider files
244: which have names beginning with periods. By default,
245: .I mkmf
246: ignores
247: file names which have leading "dots," such as those of
248: backup files created by some
249: editors.
250: .IP \fB\-c\fR
251: Suppress `creating
252: .I makefile
253: from ...' message.
254: .IP \fB\-d\fR
255: Turn
256: .B off
257: scanning of source code for `include' files. Old dependency information
258: is left untouched in the makefile.
259: .IP "\fB\-f \fImakefile\fR"
260: Specify an alternative
261: .I makefile
262: file name. The default file name is `Makefile'.
263: .IP \fB\-i\fR
264: Cause
265: .I mkmf
266: to prompt the user for the name of the program or library, and the
267: directory where it is to be installed. If a carriage return is typed
268: in response to each of these queries,
269: .I mkmf
270: will assume that the default program name is
271: .I a.out
272: or the default library name is
273: .I lib.a,
274: and the destination directory is the current directory.
275: .IP \fB\-l\fR
276: Force the makefile to be a library makefile.
277: .IP "\fB\-F \fItemplate\fR"
278: Specify an alternative makefile
279: .I template
280: file name. The default program makefile template is `p.Makefile'
281: and the default library makefile template is `l.Makefile'.
282: .I Mkmf
283: normally looks for
284: .I template
285: in /usr/new/lib or $PROJECT/lib. However,
286: .I template
287: can be specified as an absolute pathname.
288: .SH FILES
289: .nf
290: .ta \w'/usr/new/lib/p.Makefile'u+.5i
291: /usr/new/lib/p.Makefile Standard program makefile template.
292: /usr/new/lib/l.Makefile Standard library makefile template.
293: $PROJECT/lib/p.Makefile User-defined program makefile template.
294: $PROJECT/lib/l.Makefile User-defined library makefile template.
295: .fi
296: .DT
297: .SH "SEE ALSO"
298: ar(1), ctags(1), ex(1), ld(1), ls(1), make(1)
299: .sp
300: Feldman, S.I., "Make \- A Program for Maintaining Computer Programs"
301: .sp
302: Walden, K., "Automatic Generation of Make Dependencies", \fISoftware\-Practice
303: and Experience\fP, vol. 14, no. 6, pp. 575-585, June 1984.
304: .SH DIAGNOSTICS
305: Exit status 0 is normal. Exit status 1 indicates an error.
306: .SH AUTHOR
307: Peter J. Nicklin
308: .SH BUGS
309: The name of the makefile is included as a macro definition within the
310: makefile and must be changed if the makefile is renamed.
311: .LP
312: Since executable files are dependent on libraries, standard library
313: abbreviations must be expanded to full pathnames within the LIBS macro
314: definition in the makefile.
315: .LP
316: Generated dependency information appears after a line in the makefile
317: beginning with `###'. This line must
318: .B not
319: be removed, nor must any other information be inserted in the makefile
320: below this line.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.