Annotation of 43BSDReno/usr.bin/make/make.1, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.