Updated file to understand the new formats that FreeBSD now supports.
[unix-history] / usr.bin / make / make.1
CommitLineData
15637ed4
RG
1.\" Copyright (c) 1990 The Regents of the University of California.
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\" notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\" notice, this list of conditions and the following disclaimer in the
11.\" documentation and/or other materials provided with the distribution.
12.\" 3. All advertising materials mentioning features or use of this software
13.\" must display the following acknowledgement:
14.\" This product includes software developed by the University of
15.\" California, Berkeley and its contributors.
16.\" 4. Neither the name of the University nor the names of its contributors
17.\" may be used to endorse or promote products derived from this software
18.\" without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.\" @(#)make.1 5.7 (Berkeley) 7/24/91
33.\"
34.\" PATCHES MAGIC LEVEL PATCH THAT GOT US HERE
35.\" -------------------- ----- ----------------------
36.\" CURRENT PATCH LEVEL: 1 00130
37.\" -------------------- ----- ----------------------
38.\"
39.\" 06 Apr 93 Sascha Wildner Misc small fixes
40.\"
41.Dd July 24, 1991
42.Dt MAKE 1
43.Os
44.Sh NAME
45.Nm make
46.Nd maintain program dependencies
47.Sh SYNOPSIS
48.Nm make
49.Op Fl eiknqrstv
50.Op Fl D Ar variable
51.Op Fl d Ar flags
52.Op Fl f Ar makefile
53.Op Fl I Ar directory
54.Bk -words
55.Op Fl j Ar max_jobs
56.Ek
57.Op Ar variable=value
58.Op Ar target ...
59.Sh DESCRIPTION
60.Nm Make
61is a program designed to simplify the maintenance of other programs.
62Its input is a list of specifications as to the files upon which programs
63and other files depend.
64If the file
65.Ql Pa makefile
66exists, it is read for this list of specifications.
67If it does not exist, the file
68.Ql Pa Makefile
69is read.
70If the file
71.Ql Pa .depend
72exists, it is read (see
73.Xr mkdep 1) .
74.Pp
75This manual page is intended as a reference document only.
76For a more thorough description of
77.Nm make
78and makefiles, please refer to
79.%T "Make \- A Tutorial" .
80.Pp
81The options are as follows:
82.Bl -tag -width Ds
83.It Fl D Ar variable
84Define
85.Ar variable
86to be 1, in the global context.
87.It Fl d Ar flags
88Turn on debugging, and specify which portions of
89.Nm make
90are to print debugging information.
91.Ar Flags
92is one or more of the following:
93.Bl -tag -width Ds
94.It Ar A
95Print all possible debugging information;
96equivalent to specifying all of the debugging flags.
97.It Ar a
98Print debugging information about archive searching and caching.
99.It Ar c
100Print debugging information about conditional evaluation.
101.It Ar d
102Print debugging information about directory searching and caching.
103.It Ar "g1"
104Print the input graph before making anything.
105.It Ar "g2"
106Print the input graph after making everything, or before exiting
107on error.
108.It Ar j
109Print debugging information about running multiple shells.
110.It Ar m
111Print debugging information about making targets, including modification
112dates.
113.It Ar s
114Print debugging information about suffix-transformation rules.
115.It Ar t
116Print debugging information about target list maintenance.
117.It Ar v
118Print debugging information about variable assignment.
119.El
120.It Fl e
121Specify that environmental variables override macro assignments within
122makefiles.
123.It Fl f Ar makefile
124Specify a makefile to read instead of the default
125.Ql Pa makefile
126and
127.Ql Pa Makefile .
128If
129.Ar makefile
130is
131.Ql Fl ,
132standard input is read.
133Multiple makefile's may be specified, and are read in the order specified.
134.It Fl I Ar directory
135Specify a directory in which to search for makefiles and included makefiles.
136The system makefile directory is automatically included as part of this
137list.
138.It Fl i
139Ignore non-zero exit of shell commands in the makefile.
140Equivalent to specifying
141.Ql Fl
142before each command line in the makefile.
143.It Fl j Ar max_jobs
144Specify the maximum number of jobs that
145.Nm make
146may have running at any one time.
147.It Fl k
148Continue processing after errors are encountered, but only on those targets
149that do not depend on the target whose creation caused the error.
150.It Fl n
151Display the commands that would have been executed, but do not actually
152execute them.
153.It Fl q
154Do not execute any commands, but exit 0 if the specified targets are
155up-to-date and 1, otherwise.
156.It Fl r
157Do not use the built-in rules specified in the system makefile.
158.It Fl s
159Do not echo any commands as they are executed.
160Equivalent to specifying
161.Ql Ic @
162before each command line in the makefile.
163.It Fl t
164Rather than re-building a target as specified in the makefile, create it
165or update its modification time to make it appear up-to-date.
166.It Ar variable=value
167Set the value of the variable
168.Ar variable
169to
170.Ar value .
171.El
172.Pp
173There are six different types of lines in a makefile: file dependency
174specifications, shell commands, variable assignments, include statements,
175conditional directives, and comments.
176.Pp
177In general, lines may be continued from one line to the next by ending
178them with a backslash
179.Pq Ql \e .
180The trailing newline character and initial whitespace on the following
181line are compressed into a single space.
182.Sh FILE DEPENDENCY SPECIFICATIONS
183Dependency lines consist of one or more targets, an operator, and zero
184or more sources.
185This creates a relationship where the targets ``depend'' on the sources
186and are usually created from them.
187The exact relationship between the target and the source is determined
188by the operator that separates them.
189The three operators are as follows:
190.Bl -tag -width flag
191.It Ic \&:
192A target is considered out-of-date if its modification time is less than
193those of any of its sources.
194Sources for a target accumulate over dependency lines when this operator
195is used.
196The target is removed if
197.Nm make
198is interrupted.
199.It Ic \&!
200Targets are always re-created, but not until all sources have been
201examined and re-created as necessary.
202Sources for a target accumulate over dependency lines when this operator
203is used.
204The target is removed if
205.Nm make
206is interrupted.
207.It Ic \&::
208If no sources are specified, the target is always re-created.
209Otherwise, a target is considered out-of-date if any of its sources has
210been modified more recently than the target.
211Sources for a target do not accumulate over dependency lines when this
212operator is used.
213The target will not be removed if
214.Nm make
215is interrupted.
216.El
217.Pp
218Targets and sources may contain the shell wildcard values
219.Ql ? ,
220.Ql * ,
221.Ql []
222and
223.Ql {} .
224The values
225.Ql ? ,
226.Ql *
227and
228.Ql []
229may only be used as part of the final
230component of the target or source, and must be used to describe existing
231files.
232The value
233.Ql {}
234need not necessarily be used to describe existing files.
235Expansion is in directory order, not alphabetically as done in the shell.
236.Sh SHELL COMMANDS
237Each target may have associated with it a series of shell commands, normally
238used to create the target.
239Each of the commands in this script
240.Em must
241be preceded by a tab.
242While any target may appear on a dependency line, only one of these
243dependencies may be followed by a creation script, unless the
244.Ql Ic ::
245operator is used.
246.Pp
247If the first or first two characters of the command line are
248.Ql Ic @
249and/or
250.Ql Ic \- ,
251the command is treated specially.
252A
253.Ql Ic @
254causes the command not to be echoed before it is executed.
255A
256.Ql Ic \-
257causes any non-zero exit status of the command line to be ignored.
258.Sh VARIABLE ASSIGNMENTS
259Variables in make are much like variables in the shell, and, by tradition,
260consist of all upper-case letters.
261The five operators that can be used to assign values to variables are as
262follows:
263.Bl -tag -width Ds
264.It Ic \&=
265Assign the value to the variable.
266Any previous value is overridden.
267.It Ic \&+=
268Append the value to the current value of the variable.
269.It Ic \&?=
270Assign the value to the variable if it is not already defined.
271.It Ic \&:=
272Assign with expansion, i.e. expand the value before assigning it
273to the variable.
274Normally, expansion is not done until the variable is referenced.
275.It Ic \&!=
276Expand the value and pass it to the shell for execution and assign
277the result to the variable.
278Any newlines in the result are replaced with spaces.
279.El
280.Pp
281Any white-space before the assigned
282.Ar value
283is removed; if the value is being appended, a single space is inserted
284between the previous contents of the variable and the appended value.
285.Pp
286Variables are expanded by surrounding the variable name with either
287curly braces
288.Pq Ql {}
289or parenthesis
290.Pq Ql ()
291and preceding it with
292a dollar sign
293.Pq Ql \&$ .
294If the variable name contains only a single letter, the surrounding
295braces or parenthesis are not required.
296This shorter form is not recommended.
297.Pp
298Variable substitution occurs at two distinct times, depending on where
299the variable is being used.
300Variables in dependency lines are expanded as the line is read.
301Variables in shell commands are expanded when the shell command is
302executed.
303.Pp
304The four different classes of variables (in order of increasing precedence)
305are:
306.Bl -tag -width Ds
307.It Environment variables
308Variables defined as part of
309.Nm make Ns 's
310environment.
311.It Global variables
312Variables defined in the makefile or in included makefiles.
313.It Command line variables
314Variables defined as part of the command line.
315.It Local variables
316Variables that are defined specific to a certain target.
317The seven local variables are as follows:
318.Bl -tag -width ".ARCHIVE"
319.It Va .ALLSRC
320The list of all sources for this target; also known as
321.Ql Va \&> .
322.It Va .ARCHIVE
323The name of the archive file.
324.It Va .IMPSRC
325The name/path of the source from which the target is to be transformed
326(the ``implied'' source); also known as
327.Ql Va \&< .
328.It Va .MEMBER
329The name of the archive member.
330.It Va .OODATE
331The list of sources for this target that were deemed out-of-date; also
332known as
333.Ql Va \&? .
334.It Va .PREFIX
335The file prefix of the file, containing only the file portion, no suffix
336or preceding directory components; also known as
337.Ql Va * .
338.It Va .TARGET
339The name of the target; also known as
340.Ql Va @ .
341.El
342.Pp
343The shorter forms
344.Ql Va @ ,
345.Ql Va ? ,
346.Ql Va \&>
347and
348.Ql Va *
349are permitted for backward
350compatibility with historical makefiles and are not recommended.
351The six variables
352.Ql Va "@F" ,
353.Ql Va "@D" ,
354.Ql Va "<F" ,
355.Ql Va "<D" ,
356.Ql Va "*F"
357and
358.Ql Va "*D"
359are
360permitted for compatibility with
361.At V
362makefiles and are not recommended.
363.Pp
364Four of the local variables may be used in sources on dependency lines
365because they expand to the proper value for each target on the line.
366These variables are
367.Ql Va .TARGET ,
368.Ql Va .PREFIX ,
369.Ql Va .ARCHIVE ,
370and
371.Ql Va .MEMBER .
372.Pp
373In addition,
374.Nm make
375sets or knows about the following variables:
376.Bl -tag -width MAKEFLAGS
377.It Va \&$
378A single dollar sign
379.Ql \&$ ,
380i.e.
381.Ql \&$$
382expands to a single dollar
383sign.
384.It Va .MAKE
385The name that
386.Nm make
387was executed with
388.Pq Va argv Op 0
389.It Va .CURDIR
390A path to the directory where
391.Nm make
392was executed.
393.It Ev MAKEFLAGS
394The environment variable
395.Ql Ev MAKEFLAGS
396may contain anything that
397may be specified on
398.Nm make Ns 's
399command line.
400Anything specified on
401.Nm make Ns 's
402command line is appended to the
403.Ql Ev MAKEFLAGS
404variable which is then
405entered into the environment for all programs which
406.Nm make
407executes.
408.El
409.Pp
410Variable expansion may be modified to select or modify each word of the
411variable (where a ``word'' is white-space delimited sequence of characters).
412The general format of a variable expansion is as follows:
413.Pp
414.Dl {variable[:modifier[:...]]}
415.Pp
416Each modifier begins with a colon and one of the following
417special characters.
418The colon may be escaped with a backslash
419.Pq Ql \e .
420.Bl -tag -width Cm E\&
421.It Cm E
422Replaces each word in the variable with its suffix.
423.It Cm H
424Replaces each word in the variable with everything but the last component.
425.It Cm M Ns Ar pattern
426Select only those words that match the rest of the modifier.
427The standard shell wildcard characters
428.Pf ( Ql * ,
429.Ql ? ,
430and
431.Ql Op )
432may
433be used.
434The wildcard characters may be escaped with a backslash
435.Pq Ql \e .
436.It Cm N Ns Ar pattern
437This is identical to
438.Ql Cm M ,
439but selects all words which do not match
440the rest of the modifier.
441.It Cm R
442Replaces each word in the variable with everything but its suffix.
443.Sm off
444.It Cm S No \&/ Ar old_pattern Xo
445.No \&/ Ar new_pattern
446.No \&/ Op Cm g
447.Xc
448.Sm on
449Modify the first occurrence of
450.Ar old_pattern
451in each word to be replaced with
452.Ar new_pattern .
453If a
454.Ql g
455is appended to the last slash of the pattern, all occurrences
456in each word are replaced.
457If
458.Ar old_pattern
459begins with a carat
460.Pq Ql ^ ,
461.Ar old_pattern
462is anchored at the beginning of each word.
463If
464.Ar old_pattern
465ends with a dollar sign
466.Pq Ql \&$ ,
467it is anchored at the end of each word.
468Inside
469.Ar new_string ,
470an ampersand
471.Pq Ql &
472is replaced by
473.Ar old_pattern .
474Any character may be used as a delimiter for the parts of the modifier
475string.
476The anchoring, ampersand and delimiter characters may be escaped with a
477backslash
478.Pq Ql \e .
479.Pp
480Variable expansion occurs in the normal fashion inside both
481.Ar old_string
482and
483.Ar new_string
484with the single exception that a backslash is used to prevent the expansion
485of a dollar sign
486.Pq Ql \&$
487not a preceding dollar sign as is usual.
488.It Cm T
489Replaces each word in the variable with its last component.
490.It Ar old_string=new_string
491This is the
492.At V
493style variable substitution.
494It must be the last modifier specified.
495.Ar Old_string
496is anchored at the end of each word, so only suffixes or entire
497words may be replaced.
498.El
499.Sh INCLUDE STATEMENTS AND CONDITIONALS
500Makefile inclusion and conditional structures reminiscent of the C
501programming language are provided in
502.Nm make .
503All such structures are identified by a line beginning with a single
504dot
505.Pq Ql \&.
506character.
507Files are included with either
508.Ql .include <file>
509or
510.Ql .include \*qfile\*q .
511Variables between the angle brackets or double quotes are expanded
512to form the file name.
513If angle brackets are used, the included makefile is expected to be in
514the system makefile directory.
515If double quotes are used, the including makefile's directory and any
516directories specified using the
517.Fl I
518option are searched before the system
519makefile directory.
520.Pp
521Conditional expressions are also preceded by a single dot as the first
522chraracter of a line.
523The possible conditionals are as follows:
524.Bl -tag -width Ds
525.It Ic .undef Ar variable
526Un-define the specified global variable.
527Only global variables may be un-defined.
528.It Xo
529.Ic \&.if
530.Oo \&! Oc Ns Ar expression
531.Op Ar operator expression ...
532.Xc
533Test the value of an expression.
534.It Xo
535.Ic .ifdef
536.Oo \&! Oc Ns Ar variable
537.Op Ar operator variable ...
538.Xc
539Test the value of an variable.
540.It Xo
541.Ic .ifndef
542.Oo \&! Oc Ns Ar variable
543.Op Ar operator variable ...
544.Xc
545Test the value of an variable.
546.It Xo
547.Ic .ifmake
548.Oo \&! Oc Ns Ar target
549.Op Ar operator target ...
550.Xc
551Test the the target being built.
552.It Xo
553.Ic .ifnmake
554.Oo \&! Oc Ar target
555.Op Ar operator target ...
556.Xc
557Test the target being built.
558.It Ic .else
559Reverse the sense of the last conditional.
560.It Xo
561.Ic .elif
562.Oo \&! Oc Ar expression
563.Op Ar operator expression ...
564.Xc
565A combination of
566.Ql Ic .else
567followed by
568.Ql Ic .if .
569.It Xo
570.Ic .elifdef
571.Oo \&! Oc Ns Ar variable
572.Op Ar operator variable ...
573.Xc
574A combination of
575.Ql Ic .else
576followed by
577.Ql Ic .ifdef .
578.It Xo
579.Ic .elifndef
580.Oo \&! Oc Ns Ar variable
581.Op Ar operator variable ...
582.Xc
583A combination of
584.Ql Ic .else
585followed by
586.Ql Ic .ifndef .
587.It Xo
588.Ic .elifmake
589.Oo \&! Oc Ns Ar target
590.Op Ar operator target ...
591.Xc
592A combination of
593.Ql Ic .else
594followed by
595.Ql Ic .ifmake .
596.It Xo
597.Ic .elifnmake
598.Oo \&! Oc Ns Ar target
599.Op Ar operator target ...
600.Xc
601A combination of
602.Ql Ic .else
603followed by
604.Ql Ic .ifnmake .
605.It Ic .endif
606End the body of the conditional.
607.El
608.Pp
609The
610.Ar operator
611may be any one of the following:
612.Bl -tag -width "Cm XX"
613.It Cm \&|\&|
614logical OR
615.It Cm \&&&
616Logical
617.Tn AND ;
618of higher precedence than
619.Dq .
620.El
621.Pp
622As in C,
623.Nm make
624will only evaluate a conditional as far as is necessary to determine
625its value.
626Parenthesis may be used to change the order of evaluation.
627The boolean operator
628.Ql Ic \&!
629may be used to logically negate an entire
630conditional.
631It is of higher precendence than
632.Ql Ic \&&& .
633.Pp
634The value of
635.Ar expression
636may be any of the following:
637.Bl -tag -width Ic defined
638.It Ic defined
639Takes a variable name as an argument and evaluates to true if the variable
640has been defined.
641.It Ic make
642Takes a target name as an argument and evaluates to true if the target
643was specified as part of
644.Nm make Ns 's
645command line or was declared the default target (either implicitly or
646explicitly, see
647.Va .MAIN )
648before the line containing the conditional.
649.It Ic empty
650Takes a variable, with possible modifiers, and evalutes to true if
651the expansion of the variable would result in an empty string.
652.It Ic exists
653Takes a file name as an argument and evaluates to true if the file exists.
654The file is searched for on the system search path (see
655.Va .PATH ) .
656.It Ic target
657Takes a target name as an argument and evaluates to true if the target
658has been defined.
659.El
660.Pp
661.Ar Expression
662may also be an arithmetic or string comparison, with the left-hand side
663being a variable expansion.
664The standard C relational operators are all supported, and the usual
665number/base conversion is performed.
666Note, octal numbers are not supported.
667If the righthand value of a
668.Ql Ic ==
669or
670.Ql Ic "!="
671operator begins with a
672quotation mark
673.Pq Ql \*q
674a string comparison is done between the expanded
675variable and the text between the quotation marks.
676If no relational operator is given, it is assumed that the expanded
677variable is being compared against 0.
678.Pp
679When
680.Nm make
681is evaluating one of these conditional expression, and it encounters
682a word it doesn't recognize, either the ``make'' or ``defined''
683expression is applied to it, depending on the form of the conditional.
684If the form is
685.Ql Ic .ifdef
686or
687.Ql Ic .ifndef ,
688the ``defined'' expression
689is applied.
690Similarly, if the form is
691.Ql Ic .ifmake
692or
693.Ql Ic .ifnmake , the ``make''
694expression is applied.
695.Pp
696If the conditional evaluates to true the parsing of the makefile continues
697as before.
698If it evaluates to false, the following lines are skipped.
699In both cases this continues until a
700.Ql Ic .else
701or
702.Ql Ic .endif
703is found.
704.Sh COMMENTS
705Comments begin with a hash
706.Pq Ql \&#
707character, anywhere but in a shell
708command line, and continue to the end of the line.
709.Sh SPECIAL SOURCES
710.Bl -tag -width Ic .IGNORE
711.It Ic .IGNORE
712Ignore any errors from the commands associated with this target, exactly
713as if they all were preceded by a dash
714.Pq Ql \- .
715.It Ic .MAKE
716Execute the commands associated with this target even if the
717.Fl n
718or
719.Fl t
720options were specified.
721Normally used to mark recursive
722.Nm make Ns 's .
723.It Ic .NOTMAIN
724Normally
725.Nm make
726selects the first target it encounters as the default target to be built
727if no target was specified.
728This source prevents this target from being selected.
729.It Ic .OPTIONAL
730If a target is marked with this attribute and
731.Nm make
732can't figure out how to create it, it will ignore this fact and assume
733the file isn't needed or already exists.
734.It Ic .PRECIOUS
735When
736.Nm make
737is interrupted, it removes any partially made targets.
738This source prevents the target from being removed.
739.It Ic .SILENT
740Do not echo any of the commands associated with this target, exactly
741as if they all were preceded by an at sign
742.Pq Ql @ .
743.It Ic .USE
744Turn the target into
745.Nm make Ns 's .
746version of a macro.
747When the target is used as a source for another target, the other target
748acquires the commands, sources, and attributes (except for
749.Ic .USE )
750of the
751source.
752If the target already has commands, the
753.Ic .USE
754target's commands are appended
755to them.
756.El
757.Sh "SPECIAL TARGETS"
758Special targets may not be included with other targets, i.e. they must be
759the only target specified.
760.Bl -tag -width Ic .BEGIN
761.It Ic .BEGIN
762Any command lines attached to this target are executed before anything
763else is done.
764.It Ic .DEFAULT
765This is sort of a
766.Ic .USE
767rule for any target (that was used only as a
768source) that
769.Nm make
770can't figure out any other way to create.
771Only the shell script is used.
772The
773.Ic .IMPSRC
774variable of a target that inherits
775.Ic .DEFAULT Ns 's
776commands is set
777to the target's own name.
778.It Ic .END
779Any command lines attached to this target are executed after everything
780else is done.
781.It Ic .IGNORE
782Mark each of the sources with the
783.Ic .IGNORE
784attribute.
785If no sources are specified, this is the equivalent of specifying the
786.Fl i
787option.
788.It Ic .INTERRUPT
789If
790.Nm make
791is interrupted, the commands for this target will be executed.
792.It Ic .MAIN
793If no target is specified when
794.Nm make
795is invoked, this target will be built.
796.It Ic .MAKEFLAGS
797This target provides a way to specify flags for
798.Nm make
799when the makefile is used.
800The flags are as if typed to the shell, though the
801.Fl f
802option will have
803no effect.
804.It Ic .PATH
805The sources are directories which are to be searched for files not
806found in the current directory.
807If no sources are specified, any previously specified directories are
808deleted.
809.It Ic .PRECIOUS
810Apply the
811.Ic .PRECIOUS
812attribute to any specified sources.
813If no sources are specified, the
814.Ic .PRECIOUS
815attribute is applied to every
816target in the file.
817.It Ic .SILENT
818Apply the
819.Ic .SILENT
820attribute to any specified sources.
821If no sources are specified, the
822.Ic .SILENT
823attribute is applied to every
824command in the file.
825.It Ic .SUFFIXES
826Each source specifies a suffix to
827.Nm make .
828If no sources are specified, any previous specifies suffices are deleted.
829.Sh ENVIRONMENT
830.Nm Make
831utilizes the following environment variables, if they exist:
832.Ev MAKE ,
833.Ev MAKEFLAGS
834and
835.Ev MAKEOBJDIR .
836.Sh FILES
837.Bl -tag -width /usr/share/mk -compact
838.It .depend
839list of dependencies
840.It Makefile
841list of dependencies
842.It makefile
843list of dependencies
844.It sys.mk
845system makefile
846.It /usr/share/mk
847system makefile directory
848.El
849.Sh SEE ALSO
850.Xr mkdep 1
851.Sh HISTORY
852A
853.Nm Make
854command appeared in
855.At v7 .