1 MAKE(1) NetBSD General Commands Manual MAKE(1)
4 b
\bbm
\bma
\bak
\bke
\be -- maintain program dependencies
6 S
\bSY
\bYN
\bNO
\bOP
\bPS
\bSI
\bIS
\bS
7 b
\bbm
\bma
\bak
\bke
\be [-
\b-B
\bBe
\bei
\bik
\bkN
\bNn
\bnq
\bqr
\brs
\bst
\btW
\bWX
\bX] [-
\b-C
\bC _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by] [-
\b-D
\bD _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be] [-
\b-d
\bd _
\bf_
\bl_
\ba_
\bg_
\bs]
8 [-
\b-f
\bf _
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be] [-
\b-I
\bI _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by] [-
\b-J
\bJ _
\bp_
\br_
\bi_
\bv_
\ba_
\bt_
\be] [-
\b-j
\bj _
\bm_
\ba_
\bx_
\b__
\bj_
\bo_
\bb_
\bs]
9 [-
\b-m
\bm _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by] [-
\b-T
\bT _
\bf_
\bi_
\bl_
\be] [-
\b-V
\bV _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be] [_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be_
\b=_
\bv_
\ba_
\bl_
\bu_
\be]
10 [_
\bt_
\ba_
\br_
\bg_
\be_
\bt _
\b._
\b._
\b.]
12 D
\bDE
\bES
\bSC
\bCR
\bRI
\bIP
\bPT
\bTI
\bIO
\bON
\bN
13 b
\bbm
\bma
\bak
\bke
\be is a program designed to simplify the maintenance of other pro-
14 grams. Its input is a list of specifications as to the files upon which
15 programs and other files depend. If no -
\b-f
\bf _
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be makefile option is
16 given, b
\bbm
\bma
\bak
\bke
\be will try to open `_
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be' then `_
\bM_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be' in order to find
17 the specifications. If the file `_
\b._
\bd_
\be_
\bp_
\be_
\bn_
\bd' exists, it is read (see
20 This manual page is intended as a reference document only. For a more
21 thorough description of b
\bbm
\bma
\bak
\bke
\be and makefiles, please refer to _
\bP_
\bM_
\ba_
\bk_
\be _
\b- _
\bA
22 _
\bT_
\bu_
\bt_
\bo_
\br_
\bi_
\ba_
\bl.
24 b
\bbm
\bma
\bak
\bke
\be will prepend the contents of the _
\bM_
\bA_
\bK_
\bE_
\bF_
\bL_
\bA_
\bG_
\bS environment variable to
25 the command line arguments before parsing them.
27 The options are as follows:
29 -
\b-B
\bB Try to be backwards compatible by executing a single shell per
30 command and by executing the commands to make the sources of a
31 dependency line in sequence.
33 -
\b-C
\bC _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by
34 Change to _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by before reading the makefiles or doing any-
35 thing else. If multiple -
\b-C
\bC options are specified, each is inter-
36 preted relative to the previous one: -
\b-C
\bC _
\b/ -
\b-C
\bC _
\be_
\bt_
\bc is equivalent to
37 -
\b-C
\bC _
\b/_
\be_
\bt_
\bc.
39 -
\b-D
\bD _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be
40 Define _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be to be 1, in the global context.
42 -
\b-d
\bd _
\b[_
\b-_
\b]_
\bf_
\bl_
\ba_
\bg_
\bs
43 Turn on debugging, and specify which portions of b
\bbm
\bma
\bak
\bke
\be are to
44 print debugging information. Unless the flags are preceded by
45 `-' they are added to the _
\bM_
\bA_
\bK_
\bE_
\bF_
\bL_
\bA_
\bG_
\bS environment variable and will
46 be processed by any child make processes. By default, debugging
47 information is printed to standard error, but this can be changed
48 using the _
\bF debugging flag. The debugging output is always
49 unbuffered; in addition, if debugging is enabled but debugging
50 output is not directed to standard output, then the standard out-
51 put is line buffered. _
\bF_
\bl_
\ba_
\bg_
\bs is one or more of the following:
53 _
\bA Print all possible debugging information; equivalent to
54 specifying all of the debugging flags.
56 _
\ba Print debugging information about archive searching and
59 _
\bC Print debugging information about current working direc-
62 _
\bc Print debugging information about conditional evaluation.
64 _
\bd Print debugging information about directory searching and
67 _
\be Print debugging information about failed commands and
70 _
\bF[+
\b+]_
\bf_
\bi_
\bl_
\be_
\bn_
\ba_
\bm_
\be
71 Specify where debugging output is written. This must be
72 the last flag, because it consumes the remainder of the
73 argument. If the character immediately after the `F'
74 flag is `+', then the file will be opened in append mode;
75 otherwise the file will be overwritten. If the file name
76 is `stdout' or `stderr' then debugging output will be
77 written to the standard output or standard error output
78 file descriptors respectively (and the `+' option has no
79 effect). Otherwise, the output will be written to the
80 named file. If the file name ends `.%d' then the `%d' is
83 _
\bf Print debugging information about loop evaluation.
85 _
\bg_
\b1 Print the input graph before making anything.
87 _
\bg_
\b2 Print the input graph after making everything, or before
90 _
\bg_
\b3 Print the input graph before exiting on error.
92 _
\bj Print debugging information about running multiple
95 _
\bl Print commands in Makefiles regardless of whether or not
96 they are prefixed by `@' or other "quiet" flags. Also
97 known as "loud" behavior.
99 _
\bM Print debugging information about "meta" mode decisions
102 _
\bm Print debugging information about making targets, includ-
103 ing modification dates.
105 _
\bn Don't delete the temporary command scripts created when
106 running commands. These temporary scripts are created in
107 the directory referred to by the TMPDIR environment vari-
108 able, or in _
\b/_
\bt_
\bm_
\bp if TMPDIR is unset or set to the empty
109 string. The temporary scripts are created by mkstemp(3),
110 and have names of the form _
\bm_
\ba_
\bk_
\be_
\bX_
\bX_
\bX_
\bX_
\bX_
\bX. _
\bN_
\bO_
\bT_
\bE: This can
111 create many files in TMPDIR or _
\b/_
\bt_
\bm_
\bp, so use with care.
113 _
\bp Print debugging information about makefile parsing.
115 _
\bs Print debugging information about suffix-transformation
118 _
\bt Print debugging information about target list mainte-
121 _
\bV Force the -
\b-V
\bV option to print raw values of variables.
123 _
\bv Print debugging information about variable assignment.
125 _
\bx Run shell commands with -
\b-x
\bx so the actual commands are
126 printed as they are executed.
128 -
\b-e
\be Specify that environment variables override macro assignments
131 -
\b-f
\bf _
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be
132 Specify a makefile to read instead of the default `_
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be'. If
133 _
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be is `-
\b-', standard input is read. Multiple makefiles may
134 be specified, and are read in the order specified.
136 -
\b-I
\bI _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by
137 Specify a directory in which to search for makefiles and included
138 makefiles. The system makefile directory (or directories, see
139 the -
\b-m
\bm option) is automatically included as part of this list.
141 -
\b-i
\bi Ignore non-zero exit of shell commands in the makefile. Equiva-
142 lent to specifying `-
\b-' before each command line in the makefile.
144 -
\b-J
\bJ _
\bp_
\br_
\bi_
\bv_
\ba_
\bt_
\be
145 This option should _
\bn_
\bo_
\bt be specified by the user.
147 When the _
\bj option is in use in a recursive build, this option is
148 passed by a make to child makes to allow all the make processes
149 in the build to cooperate to avoid overloading the system.
151 -
\b-j
\bj _
\bm_
\ba_
\bx_
\b__
\bj_
\bo_
\bb_
\bs
152 Specify the maximum number of jobs that b
\bbm
\bma
\bak
\bke
\be may have running at
153 any one time. The value is saved in _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bJ_
\bO_
\bB_
\bS. Turns compati-
154 bility mode off, unless the _
\bB flag is also specified. When com-
155 patibility mode is off, all commands associated with a target are
156 executed in a single shell invocation as opposed to the tradi-
157 tional one shell invocation per line. This can break traditional
158 scripts which change directories on each command invocation and
159 then expect to start with a fresh environment on the next line.
160 It is more efficient to correct the scripts rather than turn
161 backwards compatibility on.
163 -
\b-k
\bk Continue processing after errors are encountered, but only on
164 those targets that do not depend on the target whose creation
167 -
\b-m
\bm _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by
168 Specify a directory in which to search for sys.mk and makefiles
169 included via the <_
\bf_
\bi_
\bl_
\be>-style include statement. The -
\b-m
\bm option
170 can be used multiple times to form a search path. This path will
171 override the default system include path: /usr/share/mk. Fur-
172 thermore the system include path will be appended to the search
173 path used for "_
\bf_
\bi_
\bl_
\be"-style include statements (see the -
\b-I
\bI
176 If a file or directory name in the -
\b-m
\bm argument (or the
177 MAKESYSPATH environment variable) starts with the string ".../"
178 then b
\bbm
\bma
\bak
\bke
\be will search for the specified file or directory named
179 in the remaining part of the argument string. The search starts
180 with the current directory of the Makefile and then works upward
181 towards the root of the filesystem. If the search is successful,
182 then the resulting directory replaces the ".../" specification in
183 the -
\b-m
\bm argument. If used, this feature allows b
\bbm
\bma
\bak
\bke
\be to easily
184 search in the current source tree for customized sys.mk files
185 (e.g., by using ".../mk/sys.mk" as an argument).
187 -
\b-n
\bn Display the commands that would have been executed, but do not
188 actually execute them unless the target depends on the .MAKE spe-
189 cial source (see below).
191 -
\b-N
\bN Display the commands which would have been executed, but do not
192 actually execute any of them; useful for debugging top-level
193 makefiles without descending into subdirectories.
195 -
\b-q
\bq Do not execute any commands, but exit 0 if the specified targets
196 are up-to-date and 1, otherwise.
198 -
\b-r
\br Do not use the built-in rules specified in the system makefile.
200 -
\b-s
\bs Do not echo any commands as they are executed. Equivalent to
201 specifying `@
\b@' before each command line in the makefile.
203 -
\b-T
\bT _
\bt_
\br_
\ba_
\bc_
\be_
\bf_
\bi_
\bl_
\be
204 When used with the -
\b-j
\bj flag, append a trace record to _
\bt_
\br_
\ba_
\bc_
\be_
\bf_
\bi_
\bl_
\be
205 for each job started and completed.
207 -
\b-t
\bt Rather than re-building a target as specified in the makefile,
208 create it or update its modification time to make it appear up-
211 -
\b-V
\bV _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be
212 Print b
\bbm
\bma
\bak
\bke
\be's idea of the value of _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be, in the global con-
213 text. Do not build any targets. Multiple instances of this
214 option may be specified; the variables will be printed one per
215 line, with a blank line for each null or undefined variable. If
216 _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be contains a `$' then the value will be expanded before
219 -
\b-W
\bW Treat any warnings during makefile parsing as errors.
221 -
\b-X
\bX Don't export variables passed on the command line to the environ-
222 ment individually. Variables passed on the command line are
223 still exported via the _
\bM_
\bA_
\bK_
\bE_
\bF_
\bL_
\bA_
\bG_
\bS environment variable. This
224 option may be useful on systems which have a small limit on the
225 size of command arguments.
227 _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be_
\b=_
\bv_
\ba_
\bl_
\bu_
\be
228 Set the value of the variable _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be to _
\bv_
\ba_
\bl_
\bu_
\be. Normally, all
229 values passed on the command line are also exported to sub-makes
230 in the environment. The -
\b-X
\bX flag disables this behavior. Vari-
231 able assignments should follow options for POSIX compatibility
232 but no ordering is enforced.
234 There are seven different types of lines in a makefile: file dependency
235 specifications, shell commands, variable assignments, include statements,
236 conditional directives, for loops, and comments.
238 In general, lines may be continued from one line to the next by ending
239 them with a backslash (`\'). The trailing newline character and initial
240 whitespace on the following line are compressed into a single space.
242 F
\bFI
\bIL
\bLE
\bE D
\bDE
\bEP
\bPE
\bEN
\bND
\bDE
\bEN
\bNC
\bCY
\bY S
\bSP
\bPE
\bEC
\bCI
\bIF
\bFI
\bIC
\bCA
\bAT
\bTI
\bIO
\bON
\bNS
\bS
243 Dependency lines consist of one or more targets, an operator, and zero or
244 more sources. This creates a relationship where the targets ``depend''
245 on the sources and are usually created from them. The exact relationship
246 between the target and the source is determined by the operator that sep-
247 arates them. The three operators are as follows:
249 :
\b: A target is considered out-of-date if its modification time is less
250 than those of any of its sources. Sources for a target accumulate
251 over dependency lines when this operator is used. The target is
252 removed if b
\bbm
\bma
\bak
\bke
\be is interrupted.
254 !
\b! Targets are always re-created, but not until all sources have been
255 examined and re-created as necessary. Sources for a target accumu-
256 late over dependency lines when this operator is used. The target
257 is removed if b
\bbm
\bma
\bak
\bke
\be is interrupted.
259 :
\b::
\b: If no sources are specified, the target is always re-created. Oth-
260 erwise, a target is considered out-of-date if any of its sources
261 has been modified more recently than the target. Sources for a
262 target do not accumulate over dependency lines when this operator
263 is used. The target will not be removed if b
\bbm
\bma
\bak
\bke
\be is interrupted.
265 Targets and sources may contain the shell wildcard values `?', `*', `[]',
266 and `{}'. The values `?', `*', and `[]' may only be used as part of the
267 final component of the target or source, and must be used to describe
268 existing files. The value `{}' need not necessarily be used to describe
269 existing files. Expansion is in directory order, not alphabetically as
272 S
\bSH
\bHE
\bEL
\bLL
\bL C
\bCO
\bOM
\bMM
\bMA
\bAN
\bND
\bDS
\bS
273 Each target may have associated with it a series of shell commands, nor-
274 mally used to create the target. Each of the commands in this script
275 _
\bm_
\bu_
\bs_
\bt be preceded by a tab. While any target may appear on a dependency
276 line, only one of these dependencies may be followed by a creation
277 script, unless the `:
\b::
\b:' operator is used.
279 If the first characters of the command line are any combination of `@
\b@',
280 `+
\b+', or `-
\b-', the command is treated specially. A `@
\b@' causes the command
281 not to be echoed before it is executed. A `+
\b+' causes the command to be
282 executed even when -
\b-n
\bn is given. This is similar to the effect of the
283 .MAKE special source, except that the effect can be limited to a single
284 line of a script. A `-
\b-' causes any non-zero exit status of the command
287 V
\bVA
\bAR
\bRI
\bIA
\bAB
\bBL
\bLE
\bE A
\bAS
\bSS
\bSI
\bIG
\bGN
\bNM
\bME
\bEN
\bNT
\bTS
\bS
288 Variables in make are much like variables in the shell, and, by tradi-
289 tion, consist of all upper-case letters.
291 V
\bVa
\bar
\bri
\bia
\bab
\bbl
\ble
\be a
\bas
\bss
\bsi
\big
\bgn
\bnm
\bme
\ben
\bnt
\bt m
\bmo
\bod
\bdi
\bif
\bfi
\bie
\ber
\brs
\bs
292 The five operators that can be used to assign values to variables are as
295 =
\b= Assign the value to the variable. Any previous value is overrid-
298 +
\b+=
\b= Append the value to the current value of the variable.
300 ?
\b?=
\b= Assign the value to the variable if it is not already defined.
302 :
\b:=
\b= Assign with expansion, i.e. expand the value before assigning it
303 to the variable. Normally, expansion is not done until the vari-
304 able is referenced. _
\bN_
\bO_
\bT_
\bE: References to undefined variables are
305 _
\bn_
\bo_
\bt expanded. This can cause problems when variable modifiers
308 !
\b!=
\b= Expand the value and pass it to the shell for execution and
309 assign the result to the variable. Any newlines in the result
310 are replaced with spaces.
312 Any white-space before the assigned _
\bv_
\ba_
\bl_
\bu_
\be is removed; if the value is
313 being appended, a single space is inserted between the previous contents
314 of the variable and the appended value.
316 Variables are expanded by surrounding the variable name with either curly
317 braces (`{}') or parentheses (`()') and preceding it with a dollar sign
318 (`$'). If the variable name contains only a single letter, the surround-
319 ing braces or parentheses are not required. This shorter form is not
322 If the variable name contains a dollar, then the name itself is expanded
323 first. This allows almost arbitrary variable names, however names con-
324 taining dollar, braces, parenthesis, or whitespace are really best
327 If the result of expanding a variable contains a dollar sign (`$') the
328 string is expanded again.
330 Variable substitution occurs at three distinct times, depending on where
331 the variable is being used.
333 1. Variables in dependency lines are expanded as the line is read.
335 2. Variables in shell commands are expanded when the shell command is
338 3. ``.for'' loop index variables are expanded on each loop iteration.
339 Note that other variables are not expanded inside loops so the fol-
358 Because while ${a} contains ``1 2 3'' after the loop is executed,
359 ${b} contains ``${j} ${j} ${j}'' which expands to ``3 3 3'' since
360 after the loop completes ${j} contains ``3''.
362 V
\bVa
\bar
\bri
\bia
\bab
\bbl
\ble
\be c
\bcl
\bla
\bas
\bss
\bse
\bes
\bs
363 The four different classes of variables (in order of increasing prece-
366 Environment variables
367 Variables defined as part of b
\bbm
\bma
\bak
\bke
\be's environment.
370 Variables defined in the makefile or in included makefiles.
372 Command line variables
373 Variables defined as part of the command line.
376 Variables that are defined specific to a certain target. The
377 seven local variables are as follows:
379 _
\b._
\bA_
\bL_
\bL_
\bS_
\bR_
\bC The list of all sources for this target; also known as
382 _
\b._
\bA_
\bR_
\bC_
\bH_
\bI_
\bV_
\bE The name of the archive file.
384 _
\b._
\bI_
\bM_
\bP_
\bS_
\bR_
\bC In suffix-transformation rules, the name/path of the
385 source from which the target is to be transformed (the
386 ``implied'' source); also known as `_
\b<'. It is not
387 defined in explicit rules.
389 _
\b._
\bM_
\bE_
\bM_
\bB_
\bE_
\bR The name of the archive member.
391 _
\b._
\bO_
\bO_
\bD_
\bA_
\bT_
\bE The list of sources for this target that were deemed
392 out-of-date; also known as `_
\b?'.
394 _
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX The file prefix of the target, containing only the file
395 portion, no suffix or preceding directory components;
396 also known as `_
\b*'.
398 _
\b._
\bT_
\bA_
\bR_
\bG_
\bE_
\bT The name of the target; also known as `_
\b@'.
400 The shorter forms `_
\b@', `_
\b?', `_
\b<', `_
\b>', and `_
\b*' are permitted for
401 backward compatibility with historical makefiles and are not rec-
402 ommended. The six variables `_
\b@_
\bF', `_
\b@_
\bD', `_
\b<_
\bF', `_
\b<_
\bD', `_
\b*_
\bF', and
403 `_
\b*_
\bD' are permitted for compatibility with AT&T System V UNIX
404 makefiles and are not recommended.
406 Four of the local variables may be used in sources on dependency
407 lines because they expand to the proper value for each target on
408 the line. These variables are `_
\b._
\bT_
\bA_
\bR_
\bG_
\bE_
\bT', `_
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX', `_
\b._
\bA_
\bR_
\bC_
\bH_
\bI_
\bV_
\bE',
409 and `_
\b._
\bM_
\bE_
\bM_
\bB_
\bE_
\bR'.
411 A
\bAd
\bdd
\bdi
\bit
\bti
\bio
\bon
\bna
\bal
\bl b
\bbu
\bui
\bil
\blt
\bt-
\b-i
\bin
\bn v
\bva
\bar
\bri
\bia
\bab
\bbl
\ble
\bes
\bs
412 In addition, b
\bbm
\bma
\bak
\bke
\be sets or knows about the following variables:
414 _
\b$ A single dollar sign `$', i.e. `$$' expands to a single
417 _
\b._
\bA_
\bL_
\bL_
\bT_
\bA_
\bR_
\bG_
\bE_
\bT_
\bS The list of all targets encountered in the Makefile. If
418 evaluated during Makefile parsing, lists only those tar-
419 gets encountered thus far.
421 _
\b._
\bC_
\bU_
\bR_
\bD_
\bI_
\bR A path to the directory where b
\bbm
\bma
\bak
\bke
\be was executed. Refer
422 to the description of `PWD' for more details.
424 MAKE The name that b
\bbm
\bma
\bak
\bke
\be was executed with (_
\ba_
\br_
\bg_
\bv_
\b[_
\b0_
\b]). For
425 compatibility b
\bbm
\bma
\bak
\bke
\be also sets _
\b._
\bM_
\bA_
\bK_
\bE with the same value.
426 The preferred variable to use is the environment variable
427 MAKE because it is more compatible with other versions of
428 b
\bbm
\bma
\bak
\bke
\be and cannot be confused with the special target with
431 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bD_
\bE_
\bP_
\bE_
\bN_
\bD_
\bF_
\bI_
\bL_
\bE
432 Names the makefile (default `_
\b._
\bd_
\be_
\bp_
\be_
\bn_
\bd') from which gener-
433 ated dependencies are read.
435 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bA_
\bN_
\bD_
\b__
\bV_
\bA_
\bR_
\bI_
\bA_
\bB_
\bL_
\bE_
\bS
436 A boolean that controls the default behavior of the -
\b-V
\bV
439 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bO_
\bR_
\bT_
\bE_
\bD The list of variables exported by b
\bbm
\bma
\bak
\bke
\be.
441 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bJ_
\bO_
\bB_
\bS The argument to the -
\b-j
\bj option.
443 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bJ_
\bO_
\bB_
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX
444 If b
\bbm
\bma
\bak
\bke
\be is run with _
\bj then output for each target is
445 prefixed with a token `--- target ---' the first part of
446 which can be controlled via _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bJ_
\bO_
\bB_
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX.
448 .MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}]
449 would produce tokens like `---make[1234] target ---' mak-
450 ing it easier to track the degree of parallelism being
453 MAKEFLAGS The environment variable `MAKEFLAGS' may contain anything
454 that may be specified on b
\bbm
\bma
\bak
\bke
\be's command line. Anything
455 specified on b
\bbm
\bma
\bak
\bke
\be's command line is appended to the
456 `MAKEFLAGS' variable which is then entered into the envi-
457 ronment for all programs which b
\bbm
\bma
\bak
\bke
\be executes.
459 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bL_
\bE_
\bV_
\bE_
\bL The recursion depth of b
\bbm
\bma
\bak
\bke
\be. The initial instance of
460 b
\bbm
\bma
\bak
\bke
\be will be 0, and an incremented value is put into the
461 environment to be seen by the next generation. This
462 allows tests like: .if ${.MAKE.LEVEL} == 0 to protect
463 things which should only be evaluated in the initial
464 instance of b
\bbm
\bma
\bak
\bke
\be.
466 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bA_
\bK_
\bE_
\bF_
\bI_
\bL_
\bE_
\b__
\bP_
\bR_
\bE_
\bF_
\bE_
\bR_
\bE_
\bN_
\bC_
\bE
467 The ordered list of makefile names (default `_
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be',
468 `_
\bM_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be') that b
\bbm
\bma
\bak
\bke
\be will look for.
470 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bA_
\bK_
\bE_
\bF_
\bI_
\bL_
\bE_
\bS
471 The list of makefiles read by b
\bbm
\bma
\bak
\bke
\be, which is useful for
472 tracking dependencies. Each makefile is recorded only
473 once, regardless of the number of times read.
475 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bO_
\bD_
\bE Processed after reading all makefiles. Can affect the
476 mode that b
\bbm
\bma
\bak
\bke
\be runs in. It can contain a number of key-
479 _
\bc_
\bo_
\bm_
\bp_
\ba_
\bt Like -
\b-B
\bB, puts b
\bbm
\bma
\bak
\bke
\be into "compat" mode.
481 _
\bm_
\be_
\bt_
\ba Puts b
\bbm
\bma
\bak
\bke
\be into "meta" mode, where meta files
482 are created for each target to capture the
483 command run, the output generated and if
484 filemon(4) is available, the system calls
485 which are of interest to b
\bbm
\bma
\bak
\bke
\be. The captured
486 output can be very useful when diagnosing
489 _
\bc_
\bu_
\br_
\bd_
\bi_
\br_
\bO_
\bk_
\b= _
\bb_
\bf Normally b
\bbm
\bma
\bak
\bke
\be will not create .meta files
490 in `_
\b._
\bC_
\bU_
\bR_
\bD_
\bI_
\bR'. This can be overridden by set-
491 ting _
\bb_
\bf to a value which represents True.
493 _
\be_
\bn_
\bv For debugging, it can be useful to inlcude
494 the environment in the .meta file.
496 _
\bv_
\be_
\br_
\bb_
\bo_
\bs_
\be If in "meta" mode, print a clue about the
497 target being built. This is useful if the
498 build is otherwise running silently. The
499 message printed the value of:
500 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX.
502 _
\bi_
\bg_
\bn_
\bo_
\br_
\be_
\b-_
\bc_
\bm_
\bd Some makefiles have commands which are simply
503 not stable. This keyword causes them to be
504 ignored for determining whether a target is
505 out of date in "meta" mode. See also
506 .
\b.N
\bNO
\bOM
\bME
\bET
\bTA
\bA_
\b_C
\bCM
\bMP
\bP.
508 _
\bs_
\bi_
\bl_
\be_
\bn_
\bt_
\b= _
\bb_
\bf If _
\bb_
\bf is True, when a .meta file is created,
509 mark the target .
\b.S
\bSI
\bIL
\bLE
\bEN
\bNT
\bT.
511 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bB_
\bA_
\bI_
\bL_
\bI_
\bW_
\bI_
\bC_
\bK
512 In "meta" mode, provides a list of prefixes which match
513 the directories controlled by b
\bbm
\bma
\bak
\bke
\be. If a file that was
514 generated outside of _
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR but within said bailiwick is
515 missing, the current target is considered out-of-date.
517 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bC_
\bR_
\bE_
\bA_
\bT_
\bE_
\bD
518 In "meta" mode, this variable contains a list of all the
519 meta files updated. If not empty, it can be used to
520 trigger processing of _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bF_
\bI_
\bL_
\bE_
\bS.
522 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bF_
\bI_
\bL_
\bE_
\bS
523 In "meta" mode, this variable contains a list of all the
524 meta files used (updated or not). This list can be used
525 to process the meta files to extract dependency informa-
528 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX
529 Defines the message printed for each meta file updated in
530 "meta verbose" mode. The default value is:
531 Building ${.TARGET:H:tA}/${.TARGET:T}
533 _
\b._
\bM_
\bA_
\bK_
\bE_
\bO_
\bV_
\bE_
\bR_
\bR_
\bI_
\bD_
\bE_
\bS This variable is used to record the names of variables
534 assigned to on the command line, so that they may be
535 exported as part of `MAKEFLAGS'. This behaviour can be
536 disabled by assigning an empty value to `_
\b._
\bM_
\bA_
\bK_
\bE_
\bO_
\bV_
\bE_
\bR_
\bR_
\bI_
\bD_
\bE_
\bS'
537 within a makefile. Extra variables can be exported from
538 a makefile by appending their names to `_
\b._
\bM_
\bA_
\bK_
\bE_
\bO_
\bV_
\bE_
\bR_
\bR_
\bI_
\bD_
\bE_
\bS'.
539 `MAKEFLAGS' is re-exported whenever `_
\b._
\bM_
\bA_
\bK_
\bE_
\bO_
\bV_
\bE_
\bR_
\bR_
\bI_
\bD_
\bE_
\bS' is
542 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bP_
\bI_
\bD The process-id of b
\bbm
\bma
\bak
\bke
\be.
544 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bP_
\bP_
\bI_
\bD The parent process-id of b
\bbm
\bma
\bak
\bke
\be.
546 _
\bM_
\bA_
\bK_
\bE_
\b__
\bP_
\bR_
\bI_
\bN_
\bT_
\b__
\bV_
\bA_
\bR_
\b__
\bO_
\bN_
\b__
\bE_
\bR_
\bR_
\bO_
\bR
547 When b
\bbm
\bma
\bak
\bke
\be stops due to an error, it prints its name and
548 the value of `_
\b._
\bC_
\bU_
\bR_
\bD_
\bI_
\bR' as well as the value of any vari-
549 ables named in `_
\bM_
\bA_
\bK_
\bE_
\b__
\bP_
\bR_
\bI_
\bN_
\bT_
\b__
\bV_
\bA_
\bR_
\b__
\bO_
\bN_
\b__
\bE_
\bR_
\bR_
\bO_
\bR'.
551 _
\b._
\bn_
\be_
\bw_
\bl_
\bi_
\bn_
\be This variable is simply assigned a newline character as
552 its value. This allows expansions using the :
\b:@
\b@ modifier
553 to put a newline between iterations of the loop rather
554 than a space. For example, the printing of
555 `_
\bM_
\bA_
\bK_
\bE_
\b__
\bP_
\bR_
\bI_
\bN_
\bT_
\b__
\bV_
\bA_
\bR_
\b__
\bO_
\bN_
\b__
\bE_
\bR_
\bR_
\bO_
\bR' could be done as
556 ${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}.
558 _
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR A path to the directory where the targets are built. Its
559 value is determined by trying to chdir(2) to the follow-
560 ing directories in order and using the first match:
562 1. ${MAKEOBJDIRPREFIX}${.CURDIR}
564 (Only if `MAKEOBJDIRPREFIX' is set in the environ-
565 ment or on the command line.)
569 (Only if `MAKEOBJDIR' is set in the environment or
570 on the command line.)
572 3. ${.CURDIR}_
\b/_
\bo_
\bb_
\bj_
\b.${MACHINE}
574 4. ${.CURDIR}_
\b/_
\bo_
\bb_
\bj
576 5. _
\b/_
\bu_
\bs_
\br_
\b/_
\bo_
\bb_
\bj_
\b/${.CURDIR}
580 Variable expansion is performed on the value before it's
581 used, so expressions such as
582 ${.CURDIR:S,^/usr/src,/var/obj,}
583 may be used. This is especially useful with
586 `_
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR' may be modified in the makefile as a global
587 variable. In all cases, b
\bbm
\bma
\bak
\bke
\be will chdir(2) to `_
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR'
588 and set `PWD' to that directory before executing any tar-
591 _
\b._
\bP_
\bA_
\bR_
\bS_
\bE_
\bD_
\bI_
\bR A path to the directory of the current `_
\bM_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be' being
594 _
\b._
\bP_
\bA_
\bR_
\bS_
\bE_
\bF_
\bI_
\bL_
\bE The basename of the current `_
\bM_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be' being parsed.
595 This variable and `_
\b._
\bP_
\bA_
\bR_
\bS_
\bE_
\bD_
\bI_
\bR' are both set only while the
596 `_
\bM_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be_
\bs' are being parsed. If you want to retain
597 their current values, assign them to a variable using
598 assignment with expansion: (`:
\b:=
\b=').
600 _
\b._
\bP_
\bA_
\bT_
\bH A variable that represents the list of directories that
601 b
\bbm
\bma
\bak
\bke
\be will search for files. The search list should be
602 updated using the target `_
\b._
\bP_
\bA_
\bT_
\bH' rather than the vari-
605 PWD Alternate path to the current directory. b
\bbm
\bma
\bak
\bke
\be normally
606 sets `_
\b._
\bC_
\bU_
\bR_
\bD_
\bI_
\bR' to the canonical path given by getcwd(3).
607 However, if the environment variable `PWD' is set and
608 gives a path to the current directory, then b
\bbm
\bma
\bak
\bke
\be sets
609 `_
\b._
\bC_
\bU_
\bR_
\bD_
\bI_
\bR' to the value of `PWD' instead. This behaviour
610 is disabled if `MAKEOBJDIRPREFIX' is set or `MAKEOBJDIR'
611 contains a variable transform. `PWD' is set to the value
612 of `_
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR' for all programs which b
\bbm
\bma
\bak
\bke
\be executes.
614 .TARGETS The list of targets explicitly specified on the command
617 VPATH Colon-separated (``:'') lists of directories that b
\bbm
\bma
\bak
\bke
\be
618 will search for files. The variable is supported for
619 compatibility with old make programs only, use `_
\b._
\bP_
\bA_
\bT_
\bH'
622 V
\bVa
\bar
\bri
\bia
\bab
\bbl
\ble
\be m
\bmo
\bod
\bdi
\bif
\bfi
\bie
\ber
\brs
\bs
623 Variable expansion may be modified to select or modify each word of the
624 variable (where a ``word'' is white-space delimited sequence of charac-
625 ters). The general format of a variable expansion is as follows:
627 ${variable[:modifier[:...]]}
629 Each modifier begins with a colon, which may be escaped with a backslash
632 A set of modifiers can be specified via a variable, as follows:
634 modifier_variable=modifier[:...]
635 ${variable:${modifier_variable}[:...]}
637 In this case the first modifier in the modifier_variable does not start
638 with a colon, since that must appear in the referencing variable. If any
639 of the modifiers in the modifier_variable contain a dollar sign (`$'),
640 these must be doubled to avoid early expansion.
642 The supported modifiers are:
644 :
\b:E
\bE Replaces each word in the variable with its suffix.
646 :
\b:H
\bH Replaces each word in the variable with everything but the last com-
649 :
\b:M
\bM_
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn
650 Select only those words that match _
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn. The standard shell
651 wildcard characters (`*', `?', and `[]') may be used. The wildcard
652 characters may be escaped with a backslash (`\').
654 :
\b:N
\bN_
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn
655 This is identical to `:
\b:M
\bM', but selects all words which do not match
656 _
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn.
658 :
\b:O
\bO Order every word in variable alphabetically. To sort words in
659 reverse order use the `:
\b:O
\bO:
\b:[
\b[-
\b-1
\b1.
\b..
\b.1
\b1]
\b]' combination of modifiers.
661 :
\b:O
\bOx
\bx Randomize words in variable. The results will be different each
662 time you are referring to the modified variable; use the assignment
663 with expansion (`:
\b:=
\b=') to prevent such behaviour. For example,
665 LIST= uno due tre quattro
666 RANDOM_LIST= ${LIST:Ox}
667 STATIC_RANDOM_LIST:= ${LIST:Ox}
670 @echo "${RANDOM_LIST}"
671 @echo "${RANDOM_LIST}"
672 @echo "${STATIC_RANDOM_LIST}"
673 @echo "${STATIC_RANDOM_LIST}"
674 may produce output similar to:
681 :
\b:Q
\bQ Quotes every shell meta-character in the variable, so that it can be
682 passed safely through recursive invocations of b
\bbm
\bma
\bak
\bke
\be.
684 :
\b:R
\bR Replaces each word in the variable with everything but its suffix.
686 :
\b:g
\bgm
\bmt
\bti
\bim
\bme
\be
687 The value is a format string for strftime(3), using the current
691 Compute a 32bit hash of the value and encode it as hex digits.
693 :
\b:l
\blo
\boc
\bca
\bal
\blt
\bti
\bim
\bme
\be
694 The value is a format string for strftime(3), using the current
697 :
\b:t
\btA
\bA Attempt to convert variable to an absolute path using realpath(3),
698 if that fails, the value is unchanged.
700 :
\b:t
\btl
\bl Converts variable to lower-case letters.
703 Words in the variable are normally separated by a space on expan-
704 sion. This modifier sets the separator to the character _
\bc. If _
\bc is
705 omitted, then no separator is used. The common escapes (including
706 octal numeric codes), work as expected.
708 :
\b:t
\btu
\bu Converts variable to upper-case letters.
710 :
\b:t
\btW
\bW Causes the value to be treated as a single word (possibly containing
711 embedded white space). See also `:
\b:[
\b[*
\b*]
\b]'.
713 :
\b:t
\btw
\bw Causes the value to be treated as a sequence of words delimited by
714 white space. See also `:
\b:[
\b[@
\b@]
\b]'.
716 :
\b:S
\bS/_
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg/_
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg/[1
\b1g
\bgW
\bW]
717 Modify the first occurrence of _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg in the variable's value,
718 replacing it with _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg. If a `g' is appended to the last
719 slash of the pattern, all occurrences in each word are replaced. If
720 a `1' is appended to the last slash of the pattern, only the first
721 word is affected. If a `W' is appended to the last slash of the
722 pattern, then the value is treated as a single word (possibly con-
723 taining embedded white space). If _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg begins with a caret
724 (`^'), _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg is anchored at the beginning of each word. If
725 _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg ends with a dollar sign (`$'), it is anchored at the end
726 of each word. Inside _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg, an ampersand (`&') is replaced by
727 _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg (without any `^' or `$'). Any character may be used as a
728 delimiter for the parts of the modifier string. The anchoring,
729 ampersand and delimiter characters may be escaped with a backslash
732 Variable expansion occurs in the normal fashion inside both
733 _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg and _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg with the single exception that a backslash
734 is used to prevent the expansion of a dollar sign (`$'), not a pre-
735 ceding dollar sign as is usual.
737 :
\b:C
\bC/_
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn/_
\br_
\be_
\bp_
\bl_
\ba_
\bc_
\be_
\bm_
\be_
\bn_
\bt/[1
\b1g
\bgW
\bW]
738 The :
\b:C
\bC modifier is just like the :
\b:S
\bS modifier except that the old and
739 new strings, instead of being simple strings, are a regular expres-
740 sion (see regex(3)) string _
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn and an ed(1)-style string
741 _
\br_
\be_
\bp_
\bl_
\ba_
\bc_
\be_
\bm_
\be_
\bn_
\bt. Normally, the first occurrence of the pattern _
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn
742 in each word of the value is substituted with _
\br_
\be_
\bp_
\bl_
\ba_
\bc_
\be_
\bm_
\be_
\bn_
\bt. The `1'
743 modifier causes the substitution to apply to at most one word; the
744 `g' modifier causes the substitution to apply to as many instances
745 of the search pattern _
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn as occur in the word or words it is
746 found in; the `W' modifier causes the value to be treated as a sin-
747 gle word (possibly containing embedded white space). Note that `1'
748 and `g' are orthogonal; the former specifies whether multiple words
749 are potentially affected, the latter whether multiple substitutions
750 can potentially occur within each affected word.
752 :
\b:T
\bT Replaces each word in the variable with its last component.
754 :
\b:u
\bu Remove adjacent duplicate words (like uniq(1)).
756 :
\b:?
\b?_
\bt_
\br_
\bu_
\be_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg:
\b:_
\bf_
\ba_
\bl_
\bs_
\be_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg
757 If the variable name (not its value), when parsed as a .if condi-
758 tional expression, evaluates to true, return as its value the
759 _
\bt_
\br_
\bu_
\be_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg, otherwise return the _
\bf_
\ba_
\bl_
\bs_
\be_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg. Since the variable
760 name is used as the expression, :? must be the first modifier after
761 the variable name itself - which will, of course, usually contain
762 variable expansions. A common error is trying to use expressions
764 ${NUMBERS:M42:?match:no}
765 which actually tests defined(NUMBERS), to determine is any words
766 match "42" you need to use something like:
767 ${"${NUMBERS:M42}" != "":?match:no}.
769 _
\b:_
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg_
\b=_
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg
770 This is the AT&T System V UNIX style variable substitution. It must
771 be the last modifier specified. If _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg or _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg do not
772 contain the pattern matching character _
\b% then it is assumed that
773 they are anchored at the end of each word, so only suffixes or
774 entire words may be replaced. Otherwise _
\b% is the substring of
775 _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg to be replaced in _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg.
777 Variable expansion occurs in the normal fashion inside both
778 _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg and _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg with the single exception that a backslash
779 is used to prevent the expansion of a dollar sign (`$'), not a pre-
780 ceding dollar sign as is usual.
782 :
\b:@
\b@_
\bt_
\be_
\bm_
\bp@
\b@_
\bs_
\bt_
\br_
\bi_
\bn_
\bg@
\b@
783 This is the loop expansion mechanism from the OSF Development Envi-
784 ronment (ODE) make. Unlike .
\b.f
\bfo
\bor
\br loops expansion occurs at the time
785 of reference. Assign _
\bt_
\be_
\bm_
\bp to each word in the variable and evaluate
786 _
\bs_
\bt_
\br_
\bi_
\bn_
\bg. The ODE convention is that _
\bt_
\be_
\bm_
\bp should start and end with a
788 ${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@}
790 However a single character varaiable is often more readable:
791 ${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}
793 :
\b:U
\bU_
\bn_
\be_
\bw_
\bv_
\ba_
\bl
794 If the variable is undefined _
\bn_
\be_
\bw_
\bv_
\ba_
\bl is the value. If the variable
795 is defined, the existing value is returned. This is another ODE
796 make feature. It is handy for setting per-target CFLAGS for
798 ${_${.TARGET:T}_CFLAGS:U${DEF_CFLAGS}}
799 If a value is only required if the variable is undefined, use:
802 :
\b:D
\bD_
\bn_
\be_
\bw_
\bv_
\ba_
\bl
803 If the variable is defined _
\bn_
\be_
\bw_
\bv_
\ba_
\bl is the value.
805 :
\b:L
\bL The name of the variable is the value.
807 :
\b:P
\bP The path of the node which has the same name as the variable is the
808 value. If no such node exists or its path is null, then the name of
809 the variable is used. In order for this modifier to work, the name
810 (node) must at least have appeared on the rhs of a dependency.
812 :
\b:!
\b!_
\bc_
\bm_
\bd!
\b!
813 The output of running _
\bc_
\bm_
\bd is the value.
815 :
\b:s
\bsh
\bh If the variable is non-empty it is run as a command and the output
816 becomes the new value.
818 :
\b::
\b:=
\b=_
\bs_
\bt_
\br
819 The variable is assigned the value _
\bs_
\bt_
\br after substitution. This
820 modifier and its variations are useful in obscure situations such as
821 wanting to set a variable when shell commands are being parsed.
822 These assignment modifiers always expand to nothing, so if appearing
823 in a rule line by themselves should be preceded with something to
824 keep b
\bbm
\bma
\bak
\bke
\be happy.
826 The `:
\b::
\b:' helps avoid false matches with the AT&T System V UNIX style
827 :
\b:=
\b= modifier and since substitution always occurs the :
\b::
\b:=
\b= form is
830 :
\b::
\b:?
\b?=
\b=_
\bs_
\bt_
\br
831 As for :
\b::
\b:=
\b= but only if the variable does not already have a value.
833 :
\b::
\b:+
\b+=
\b=_
\bs_
\bt_
\br
834 Append _
\bs_
\bt_
\br to the variable.
836 :
\b::
\b:!
\b!=
\b=_
\bc_
\bm_
\bd
837 Assign the output of _
\bc_
\bm_
\bd to the variable.
839 :
\b:[
\b[_
\br_
\ba_
\bn_
\bg_
\be]
\b]
840 Selects one or more words from the value, or performs other opera-
841 tions related to the way in which the value is divided into words.
843 Ordinarily, a value is treated as a sequence of words delimited by
844 white space. Some modifiers suppress this behaviour, causing a
845 value to be treated as a single word (possibly containing embedded
846 white space). An empty value, or a value that consists entirely of
847 white-space, is treated as a single word. For the purposes of the
848 `:
\b:[
\b[]
\b]' modifier, the words are indexed both forwards using positive
849 integers (where index 1 represents the first word), and backwards
850 using negative integers (where index -1 represents the last word).
852 The _
\br_
\ba_
\bn_
\bg_
\be is subjected to variable expansion, and the expanded
853 result is then interpreted as follows:
855 _
\bi_
\bn_
\bd_
\be_
\bx Selects a single word from the value.
857 _
\bs_
\bt_
\ba_
\br_
\bt.
\b..
\b._
\be_
\bn_
\bd
858 Selects all words from _
\bs_
\bt_
\ba_
\br_
\bt to _
\be_
\bn_
\bd, inclusive. For example,
859 `:
\b:[
\b[2
\b2.
\b..
\b.-
\b-1
\b1]
\b]' selects all words from the second word to the last
860 word. If _
\bs_
\bt_
\ba_
\br_
\bt is greater than _
\be_
\bn_
\bd, then the words are out-
861 put in reverse order. For example, `:
\b:[
\b[-
\b-1
\b1.
\b..
\b.1
\b1]
\b]' selects all
862 the words from last to first.
864 *
\b* Causes subsequent modifiers to treat the value as a single
865 word (possibly containing embedded white space). Analogous
866 to the effect of "$*" in Bourne shell.
868 0 Means the same as `:
\b:[
\b[*
\b*]
\b]'.
870 @
\b@ Causes subsequent modifiers to treat the value as a sequence
871 of words delimited by white space. Analogous to the effect
872 of "$@" in Bourne shell.
874 #
\b# Returns the number of words in the value.
876 I
\bIN
\bNC
\bCL
\bLU
\bUD
\bDE
\bE S
\bST
\bTA
\bAT
\bTE
\bEM
\bME
\bEN
\bNT
\bTS
\bS,
\b, C
\bCO
\bON
\bND
\bDI
\bIT
\bTI
\bIO
\bON
\bNA
\bAL
\bLS
\bS A
\bAN
\bND
\bD F
\bFO
\bOR
\bR L
\bLO
\bOO
\bOP
\bPS
\bS
877 Makefile inclusion, conditional structures and for loops reminiscent of
878 the C programming language are provided in b
\bbm
\bma
\bak
\bke
\be. All such structures
879 are identified by a line beginning with a single dot (`.') character.
880 Files are included with either .
\b.i
\bin
\bnc
\bcl
\blu
\bud
\bde
\be <_
\bf_
\bi_
\bl_
\be> or .
\b.i
\bin
\bnc
\bcl
\blu
\bud
\bde
\be "_
\bf_
\bi_
\bl_
\be". Vari-
881 ables between the angle brackets or double quotes are expanded to form
882 the file name. If angle brackets are used, the included makefile is
883 expected to be in the system makefile directory. If double quotes are
884 used, the including makefile's directory and any directories specified
885 using the -
\b-I
\bI option are searched before the system makefile directory.
886 For compatibility with other versions of b
\bbm
\bma
\bak
\bke
\be `include file ...' is also
887 accepted. If the include statement is written as .
\b.-
\b-i
\bin
\bnc
\bcl
\blu
\bud
\bde
\be or as
888 .
\b.s
\bsi
\bin
\bnc
\bcl
\blu
\bud
\bde
\be then errors locating and/or opening include files are ignored.
890 Conditional expressions are also preceded by a single dot as the first
891 character of a line. The possible conditionals are as follows:
893 .
\b.e
\ber
\brr
\bro
\bor
\br _
\bm_
\be_
\bs_
\bs_
\ba_
\bg_
\be
894 The message is printed along with the name of the makefile and
895 line number, then b
\bbm
\bma
\bak
\bke
\be will exit.
897 .
\b.e
\bex
\bxp
\bpo
\bor
\brt
\bt _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.
898 Export the specified global variable. If no variable list is
899 provided, all globals are exported except for internal variables
900 (those that start with `.'). This is not affected by the -
\b-X
\bX
901 flag, so should be used with caution. For compatibility with
902 other b
\bbm
\bma
\bak
\bke
\be programs `export variable=value' is also accepted.
904 Appending a variable name to _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bO_
\bR_
\bT_
\bE_
\bD is equivalent to
905 exporting a variable.
907 .
\b.e
\bex
\bxp
\bpo
\bor
\brt
\bt-
\b-e
\ben
\bnv
\bv _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.
908 The same as `.export', except that the variable is not appended
909 to _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bO_
\bR_
\bT_
\bE_
\bD. This allows exporting a value to the environ-
910 ment which is different from that used by b
\bbm
\bma
\bak
\bke
\be internally.
912 .
\b.i
\bin
\bnf
\bfo
\bo _
\bm_
\be_
\bs_
\bs_
\ba_
\bg_
\be
913 The message is printed along with the name of the makefile and
916 .
\b.u
\bun
\bnd
\bde
\bef
\bf _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be
917 Un-define the specified global variable. Only global variables
920 .
\b.u
\bun
\bne
\bex
\bxp
\bpo
\bor
\brt
\bt _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.
921 The opposite of `.export'. The specified global _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be will be
922 removed from _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bO_
\bR_
\bT_
\bE_
\bD. If no variable list is provided,
923 all globals are unexported, and _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bO_
\bR_
\bT_
\bE_
\bD deleted.
925 .
\b.u
\bun
\bne
\bex
\bxp
\bpo
\bor
\brt
\bt-
\b-e
\ben
\bnv
\bv
926 Unexport all globals previously exported and clear the environ-
927 ment inherited from the parent. This operation will cause a mem-
928 ory leak of the original environment, so should be used spar-
929 ingly. Testing for _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bL_
\bE_
\bV_
\bE_
\bL being 0, would make sense. Also
930 note that any variables which originated in the parent environ-
931 ment should be explicitly preserved if desired. For example:
933 .if ${.MAKE.LEVEL} == 0
939 Would result in an environment containing only `PATH', which is
940 the minimal useful environment. Actually `.MAKE.LEVEL' will also
941 be pushed into the new environment.
943 .
\b.w
\bwa
\bar
\brn
\bni
\bin
\bng
\bg _
\bm_
\be_
\bs_
\bs_
\ba_
\bg_
\be
944 The message prefixed by `_
\bw_
\ba_
\br_
\bn_
\bi_
\bn_
\bg_
\b:' is printed along with the name
945 of the makefile and line number.
947 .
\b.i
\bif
\bf [!]_
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn _
\b._
\b._
\b.]
948 Test the value of an expression.
950 .
\b.i
\bif
\bfd
\bde
\bef
\bf [!]_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.]
951 Test the value of a variable.
953 .
\b.i
\bif
\bfn
\bnd
\bde
\bef
\bf [!]_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.]
954 Test the value of a variable.
956 .
\b.i
\bif
\bfm
\bma
\bak
\bke
\be [!]_
\bt_
\ba_
\br_
\bg_
\be_
\bt [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bt_
\ba_
\br_
\bg_
\be_
\bt _
\b._
\b._
\b.]
957 Test the target being built.
959 .
\b.i
\bif
\bfn
\bnm
\bma
\bak
\bke
\be [!] _
\bt_
\ba_
\br_
\bg_
\be_
\bt [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bt_
\ba_
\br_
\bg_
\be_
\bt _
\b._
\b._
\b.]
960 Test the target being built.
962 .
\b.e
\bel
\bls
\bse
\be Reverse the sense of the last conditional.
964 .
\b.e
\bel
\bli
\bif
\bf [!] _
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn _
\b._
\b._
\b.]
965 A combination of `.
\b.e
\bel
\bls
\bse
\be' followed by `.
\b.i
\bif
\bf'.
967 .
\b.e
\bel
\bli
\bif
\bfd
\bde
\bef
\bf [!]_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.]
968 A combination of `.
\b.e
\bel
\bls
\bse
\be' followed by `.
\b.i
\bif
\bfd
\bde
\bef
\bf'.
970 .
\b.e
\bel
\bli
\bif
\bfn
\bnd
\bde
\bef
\bf [!]_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.]
971 A combination of `.
\b.e
\bel
\bls
\bse
\be' followed by `.
\b.i
\bif
\bfn
\bnd
\bde
\bef
\bf'.
973 .
\b.e
\bel
\bli
\bif
\bfm
\bma
\bak
\bke
\be [!]_
\bt_
\ba_
\br_
\bg_
\be_
\bt [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bt_
\ba_
\br_
\bg_
\be_
\bt _
\b._
\b._
\b.]
974 A combination of `.
\b.e
\bel
\bls
\bse
\be' followed by `.
\b.i
\bif
\bfm
\bma
\bak
\bke
\be'.
976 .
\b.e
\bel
\bli
\bif
\bfn
\bnm
\bma
\bak
\bke
\be [!]_
\bt_
\ba_
\br_
\bg_
\be_
\bt [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bt_
\ba_
\br_
\bg_
\be_
\bt _
\b._
\b._
\b.]
977 A combination of `.
\b.e
\bel
\bls
\bse
\be' followed by `.
\b.i
\bif
\bfn
\bnm
\bma
\bak
\bke
\be'.
979 .
\b.e
\ben
\bnd
\bdi
\bif
\bf End the body of the conditional.
981 The _
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br may be any one of the following:
985 &
\b&&
\b& Logical AND; of higher precedence than ``||''.
987 As in C, b
\bbm
\bma
\bak
\bke
\be will only evaluate a conditional as far as is necessary to
988 determine its value. Parentheses may be used to change the order of
989 evaluation. The boolean operator `!
\b!' may be used to logically negate an
990 entire conditional. It is of higher precedence than `&
\b&&
\b&'.
992 The value of _
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn may be any of the following:
994 d
\bde
\bef
\bfi
\bin
\bne
\bed
\bd Takes a variable name as an argument and evaluates to true if
995 the variable has been defined.
997 m
\bma
\bak
\bke
\be Takes a target name as an argument and evaluates to true if the
998 target was specified as part of b
\bbm
\bma
\bak
\bke
\be's command line or was
999 declared the default target (either implicitly or explicitly,
1000 see _
\b._
\bM_
\bA_
\bI_
\bN) before the line containing the conditional.
1002 e
\bem
\bmp
\bpt
\bty
\by Takes a variable, with possible modifiers, and evaluates to true
1003 if the expansion of the variable would result in an empty
1006 e
\bex
\bxi
\bis
\bst
\bts
\bs Takes a file name as an argument and evaluates to true if the
1007 file exists. The file is searched for on the system search path
1008 (see _
\b._
\bP_
\bA_
\bT_
\bH).
1010 t
\bta
\bar
\brg
\bge
\bet
\bt Takes a target name as an argument and evaluates to true if the
1011 target has been defined.
1013 c
\bco
\bom
\bmm
\bma
\ban
\bnd
\bds
\bs
1014 Takes a target name as an argument and evaluates to true if the
1015 target has been defined and has commands associated with it.
1017 _
\bE_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn may also be an arithmetic or string comparison. Variable
1018 expansion is performed on both sides of the comparison, after which the
1019 integral values are compared. A value is interpreted as hexadecimal if
1020 it is preceded by 0x, otherwise it is decimal; octal numbers are not sup-
1021 ported. The standard C relational operators are all supported. If after
1022 variable expansion, either the left or right hand side of a `=
\b==
\b=' or `!
\b!=
\b='
1023 operator is not an integral value, then string comparison is performed
1024 between the expanded variables. If no relational operator is given, it
1025 is assumed that the expanded variable is being compared against 0 or an
1026 empty string in the case of a string comparison.
1028 When b
\bbm
\bma
\bak
\bke
\be is evaluating one of these conditional expressions, and it
1029 encounters a (white-space separated) word it doesn't recognize, either
1030 the ``make'' or ``defined'' expression is applied to it, depending on the
1031 form of the conditional. If the form is `.
\b.i
\bif
\bfd
\bde
\bef
\bf', `.
\b.i
\bif
\bfn
\bnd
\bde
\bef
\bf', or `.
\b.i
\bif
\bf'
1032 the ``defined'' expression is applied. Similarly, if the form is
1033 `.
\b.i
\bif
\bfm
\bma
\bak
\bke
\be' or `.
\b.i
\bif
\bfn
\bnm
\bma
\bak
\bke
\be, t
\bth
\bhe
\be' ``make'' expression is applied.
1035 If the conditional evaluates to true the parsing of the makefile contin-
1036 ues as before. If it evaluates to false, the following lines are
1037 skipped. In both cases this continues until a `.
\b.e
\bel
\bls
\bse
\be' or `.
\b.e
\ben
\bnd
\bdi
\bif
\bf' is
1040 For loops are typically used to apply a set of rules to a list of files.
1041 The syntax of a for loop is:
1043 .
\b.f
\bfo
\bor
\br _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be [_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.] i
\bin
\bn _
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn
1045 .
\b.e
\ben
\bnd
\bdf
\bfo
\bor
\br
1047 After the for e
\bex
\bxp
\bpr
\bre
\bes
\bss
\bsi
\bio
\bon
\bn is evaluated, it is split into words. On each
1048 iteration of the loop, one word is taken and assigned to each v
\bva
\bar
\bri
\bia
\bab
\bbl
\ble
\be,
1049 in order, and these v
\bva
\bar
\bri
\bia
\bab
\bbl
\ble
\bes
\bs are substituted into the m
\bma
\bak
\bke
\be-
\b-r
\bru
\bul
\ble
\bes
\bs inside
1050 the body of the for loop. The number of words must come out even; that
1051 is, if there are three iteration variables, the number of words provided
1052 must be a multiple of three.
1054 C
\bCO
\bOM
\bMM
\bME
\bEN
\bNT
\bTS
\bS
1055 Comments begin with a hash (`#') character, anywhere but in a shell com-
1056 mand line, and continue to the end of an unescaped new line.
1058 S
\bSP
\bPE
\bEC
\bCI
\bIA
\bAL
\bL S
\bSO
\bOU
\bUR
\bRC
\bCE
\bES
\bS (
\b(A
\bAT
\bTT
\bTR
\bRI
\bIB
\bBU
\bUT
\bTE
\bES
\bS)
\b)
1059 .
\b.E
\bEX
\bXE
\bEC
\bC Target is never out of date, but always execute commands any-
1062 .
\b.I
\bIG
\bGN
\bNO
\bOR
\bRE
\bE Ignore any errors from the commands associated with this tar-
1063 get, exactly as if they all were preceded by a dash (`-').
1065 .
\b.M
\bMA
\bAD
\bDE
\bE Mark all sources of this target as being up-to-date.
1067 .
\b.M
\bMA
\bAK
\bKE
\bE Execute the commands associated with this target even if the -
\b-n
\bn
1068 or -
\b-t
\bt options were specified. Normally used to mark recursive
1069 b
\bbm
\bma
\bak
\bke
\be's.
1071 .
\b.M
\bME
\bET
\bTA
\bA Create a meta file for the target, even if it is flagged as
1072 .
\b.P
\bPH
\bHO
\bON
\bNY
\bY, .
\b.M
\bMA
\bAK
\bKE
\bE, or .
\b.S
\bSP
\bPE
\bEC
\bCI
\bIA
\bAL
\bL. Usage in conjunction with .
\b.M
\bMA
\bAK
\bKE
\bE is
1073 the most likely case. In "meta" mode, the target is out-of-
1074 date if the meta file is missing.
1076 .
\b.N
\bNO
\bOM
\bME
\bET
\bTA
\bA Do not create a meta file for the target. Meta files are also
1077 not created for .
\b.P
\bPH
\bHO
\bON
\bNY
\bY, .
\b.M
\bMA
\bAK
\bKE
\bE, or .
\b.S
\bSP
\bPE
\bEC
\bCI
\bIA
\bAL
\bL targets.
1079 .
\b.N
\bNO
\bOM
\bME
\bET
\bTA
\bA_
\b_C
\bCM
\bMP
\bP
1080 Ignore differences in commands when deciding if target is out
1081 of date. This is useful if the command contains a value which
1082 always changes. If the number of commands change, though, the
1083 target will still be out of date.
1085 .
\b.N
\bNO
\bOP
\bPA
\bAT
\bTH
\bH Do not search for the target in the directories specified by
1086 .
\b.P
\bPA
\bAT
\bTH
\bH.
1088 .
\b.N
\bNO
\bOT
\bTM
\bMA
\bAI
\bIN
\bN Normally b
\bbm
\bma
\bak
\bke
\be selects the first target it encounters as the
1089 default target to be built if no target was specified. This
1090 source prevents this target from being selected.
1092 .
\b.O
\bOP
\bPT
\bTI
\bIO
\bON
\bNA
\bAL
\bL
1093 If a target is marked with this attribute and b
\bbm
\bma
\bak
\bke
\be can't fig-
1094 ure out how to create it, it will ignore this fact and assume
1095 the file isn't needed or already exists.
1097 .
\b.P
\bPH
\bHO
\bON
\bNY
\bY The target does not correspond to an actual file; it is always
1098 considered to be out of date, and will not be created with the
1099 -
\b-t
\bt option. Suffix-transformation rules are not applied to
1100 .
\b.P
\bPH
\bHO
\bON
\bNY
\bY targets.
1102 .
\b.P
\bPR
\bRE
\bEC
\bCI
\bIO
\bOU
\bUS
\bS
1103 When b
\bbm
\bma
\bak
\bke
\be is interrupted, it normally removes any partially
1104 made targets. This source prevents the target from being
1107 .
\b.R
\bRE
\bEC
\bCU
\bUR
\bRS
\bSI
\bIV
\bVE
\bE
1108 Synonym for .
\b.M
\bMA
\bAK
\bKE
\bE.
1110 .
\b.S
\bSI
\bIL
\bLE
\bEN
\bNT
\bT Do not echo any of the commands associated with this target,
1111 exactly as if they all were preceded by an at sign (`@').
1113 .
\b.U
\bUS
\bSE
\bE Turn the target into b
\bbm
\bma
\bak
\bke
\be's version of a macro. When the tar-
1114 get is used as a source for another target, the other target
1115 acquires the commands, sources, and attributes (except for
1116 .
\b.U
\bUS
\bSE
\bE) of the source. If the target already has commands, the
1117 .
\b.U
\bUS
\bSE
\bE target's commands are appended to them.
1119 .
\b.U
\bUS
\bSE
\bEB
\bBE
\bEF
\bFO
\bOR
\bRE
\bE
1120 Exactly like .
\b.U
\bUS
\bSE
\bE, but prepend the .
\b.U
\bUS
\bSE
\bEB
\bBE
\bEF
\bFO
\bOR
\bRE
\bE target commands
1123 .
\b.W
\bWA
\bAI
\bIT
\bT If .
\b.W
\bWA
\bAI
\bIT
\bT appears in a dependency line, the sources that precede
1124 it are made before the sources that succeed it in the line.
1125 Since the dependents of files are not made until the file
1126 itself could be made, this also stops the dependents being
1127 built unless they are needed for another branch of the depen-
1128 dency tree. So given:
1139 the output is always `a', `b1', `b', `x'.
1140 The ordering imposed by .
\b.W
\bWA
\bAI
\bIT
\bT is only relevant for parallel
1143 S
\bSP
\bPE
\bEC
\bCI
\bIA
\bAL
\bL T
\bTA
\bAR
\bRG
\bGE
\bET
\bTS
\bS
1144 Special targets may not be included with other targets, i.e. they must be
1145 the only target specified.
1147 .
\b.B
\bBE
\bEG
\bGI
\bIN
\bN Any command lines attached to this target are executed before
1148 anything else is done.
1150 .
\b.D
\bDE
\bEF
\bFA
\bAU
\bUL
\bLT
\bT
1151 This is sort of a .
\b.U
\bUS
\bSE
\bE rule for any target (that was used only
1152 as a source) that b
\bbm
\bma
\bak
\bke
\be can't figure out any other way to cre-
1153 ate. Only the shell script is used. The .
\b.I
\bIM
\bMP
\bPS
\bSR
\bRC
\bC variable of a
1154 target that inherits .
\b.D
\bDE
\bEF
\bFA
\bAU
\bUL
\bLT
\bT's commands is set to the target's
1157 .
\b.E
\bEN
\bND
\bD Any command lines attached to this target are executed after
1158 everything else is done.
1160 .
\b.E
\bER
\bRR
\bRO
\bOR
\bR Any command lines attached to this target are executed when
1161 another target fails. The .
\b.E
\bER
\bRR
\bRO
\bOR
\bR_
\b_T
\bTA
\bAR
\bRG
\bGE
\bET
\bT variable is set to the
1162 target that failed. See also M
\bMA
\bAK
\bKE
\bE_
\b_P
\bPR
\bRI
\bIN
\bNT
\bT_
\b_V
\bVA
\bAR
\bR_
\b_O
\bON
\bN_
\b_E
\bER
\bRR
\bRO
\bOR
\bR.
1164 .
\b.I
\bIG
\bGN
\bNO
\bOR
\bRE
\bE Mark each of the sources with the .
\b.I
\bIG
\bGN
\bNO
\bOR
\bRE
\bE attribute. If no
1165 sources are specified, this is the equivalent of specifying the
1168 .
\b.I
\bIN
\bNT
\bTE
\bER
\bRR
\bRU
\bUP
\bPT
\bT
1169 If b
\bbm
\bma
\bak
\bke
\be is interrupted, the commands for this target will be
1172 .
\b.M
\bMA
\bAI
\bIN
\bN If no target is specified when b
\bbm
\bma
\bak
\bke
\be is invoked, this target
1175 .
\b.M
\bMA
\bAK
\bKE
\bEF
\bFL
\bLA
\bAG
\bGS
\bS
1176 This target provides a way to specify flags for b
\bbm
\bma
\bak
\bke
\be when the
1177 makefile is used. The flags are as if typed to the shell,
1178 though the -
\b-f
\bf option will have no effect.
1180 .
\b.N
\bNO
\bOP
\bPA
\bAT
\bTH
\bH Apply the .
\b.N
\bNO
\bOP
\bPA
\bAT
\bTH
\bH attribute to any specified sources.
1182 .
\b.N
\bNO
\bOT
\bTP
\bPA
\bAR
\bRA
\bAL
\bLL
\bLE
\bEL
\bL
1183 Disable parallel mode.
1185 .
\b.N
\bNO
\bO_
\b_P
\bPA
\bAR
\bRA
\bAL
\bLL
\bLE
\bEL
\bL
1186 Synonym for .
\b.N
\bNO
\bOT
\bTP
\bPA
\bAR
\bRA
\bAL
\bLL
\bLE
\bEL
\bL, for compatibility with other pmake
1189 .
\b.O
\bOR
\bRD
\bDE
\bER
\bR The named targets are made in sequence. This ordering does not
1190 add targets to the list of targets to be made. Since the depen-
1191 dents of a target do not get built until the target itself could
1192 be built, unless `a' is built by another part of the dependency
1193 graph, the following is a dependency loop:
1198 The ordering imposed by .
\b.O
\bOR
\bRD
\bDE
\bER
\bR is only relevant for parallel
1201 .
\b.P
\bPA
\bAT
\bTH
\bH The sources are directories which are to be searched for files
1202 not found in the current directory. If no sources are speci-
1203 fied, any previously specified directories are deleted. If the
1204 source is the special .
\b.D
\bDO
\bOT
\bTL
\bLA
\bAS
\bST
\bT target, then the current working
1205 directory is searched last.
1207 .
\b.P
\bPH
\bHO
\bON
\bNY
\bY Apply the .
\b.P
\bPH
\bHO
\bON
\bNY
\bY attribute to any specified sources.
1209 .
\b.P
\bPR
\bRE
\bEC
\bCI
\bIO
\bOU
\bUS
\bS
1210 Apply the .
\b.P
\bPR
\bRE
\bEC
\bCI
\bIO
\bOU
\bUS
\bS attribute to any specified sources. If no
1211 sources are specified, the .
\b.P
\bPR
\bRE
\bEC
\bCI
\bIO
\bOU
\bUS
\bS attribute is applied to
1212 every target in the file.
1214 .
\b.S
\bSH
\bHE
\bEL
\bLL
\bL Sets the shell that b
\bbm
\bma
\bak
\bke
\be will use to execute commands. The
1215 sources are a set of _
\bf_
\bi_
\be_
\bl_
\bd_
\b=_
\bv_
\ba_
\bl_
\bu_
\be pairs.
1217 _
\bn_
\ba_
\bm_
\be This is the minimal specification, used to select
1218 one of the builtin shell specs; _
\bs_
\bh, _
\bk_
\bs_
\bh, and _
\bc_
\bs_
\bh.
1220 _
\bp_
\ba_
\bt_
\bh Specifies the path to the shell.
1222 _
\bh_
\ba_
\bs_
\bE_
\br_
\br_
\bC_
\bt_
\bl Indicates whether the shell supports exit on error.
1224 _
\bc_
\bh_
\be_
\bc_
\bk The command to turn on error checking.
1226 _
\bi_
\bg_
\bn_
\bo_
\br_
\be The command to disable error checking.
1228 _
\be_
\bc_
\bh_
\bo The command to turn on echoing of commands executed.
1230 _
\bq_
\bu_
\bi_
\be_
\bt The command to turn off echoing of commands exe-
1233 _
\bf_
\bi_
\bl_
\bt_
\be_
\br The output to filter after issuing the _
\bq_
\bu_
\bi_
\be_
\bt com-
1234 mand. It is typically identical to _
\bq_
\bu_
\bi_
\be_
\bt.
1236 _
\be_
\br_
\br_
\bF_
\bl_
\ba_
\bg The flag to pass the shell to enable error checking.
1238 _
\be_
\bc_
\bh_
\bo_
\bF_
\bl_
\ba_
\bg The flag to pass the shell to enable command echo-
1241 _
\bn_
\be_
\bw_
\bl_
\bi_
\bn_
\be The string literal to pass the shell that results in
1242 a single newline character when used outside of any
1246 .SHELL: name=ksh path=/bin/ksh hasErrCtl=true \
1247 check="set -e" ignore="set +e" \
1248 echo="set -v" quiet="set +v" filter="set +v" \
1249 echoFlag=v errFlag=e newline="'\n'"
1251 .
\b.S
\bSI
\bIL
\bLE
\bEN
\bNT
\bT Apply the .
\b.S
\bSI
\bIL
\bLE
\bEN
\bNT
\bT attribute to any specified sources. If no
1252 sources are specified, the .
\b.S
\bSI
\bIL
\bLE
\bEN
\bNT
\bT attribute is applied to every
1253 command in the file.
1255 .
\b.S
\bSU
\bUF
\bFF
\bFI
\bIX
\bXE
\bES
\bS
1256 Each source specifies a suffix to b
\bbm
\bma
\bak
\bke
\be. If no sources are
1257 specified, any previously specified suffixes are deleted. It
1258 allows the creation of suffix-transformation rules.
1264 cc -o ${.TARGET} -c ${.IMPSRC}
1266 E
\bEN
\bNV
\bVI
\bIR
\bRO
\bON
\bNM
\bME
\bEN
\bNT
\bT
1267 b
\bbm
\bma
\bak
\bke
\be uses the following environment variables, if they exist: MACHINE,
1268 MACHINE_ARCH, MAKE, MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX, MAKESYSPATH,
1271 MAKEOBJDIRPREFIX and MAKEOBJDIR may only be set in the environment or on
1272 the command line to b
\bbm
\bma
\bak
\bke
\be and not as makefile variables; see the descrip-
1273 tion of `_
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR' for more details.
1275 F
\bFI
\bIL
\bLE
\bES
\bS
1276 .depend list of dependencies
1277 Makefile list of dependencies
1278 makefile list of dependencies
1279 sys.mk system makefile
1280 /usr/share/mk system makefile directory
1282 C
\bCO
\bOM
\bMP
\bPA
\bAT
\bTI
\bIB
\bBI
\bIL
\bLI
\bIT
\bTY
\bY
1283 The basic make syntax is compatible between different versions of make,
1284 however the special variables, variable modifiers and conditionals are
1287 The way that parallel makes are scheduled changed in NetBSD 4.0 so that
1288 .ORDER and .WAIT apply recursively to the dependent nodes. The algo-
1289 rithms used may change again in the future.
1291 The way that .for loop variables are substituted changed after NetBSD 5.0
1292 so that they still appear to be variable expansions. In particular this
1293 stops them being treated as syntax, and removes some obscure problems
1294 using them in .if statements.
1296 Unlike other b
\bbm
\bma
\bak
\bke
\be programs, this implementation by default executes all
1297 commands for a given target using a single shell invocation. This is
1298 done for both efficiency and to simplify error handling in remote command
1299 invocations. Typically this is transparent to the user, unless the tar-
1300 get commands change the current working directory using ``cd'' or
1301 ``chdir''. To be compatible with Makefiles that do this, one can use -
\b-B
\bB
1302 to disable this behavior.
1304 In compatibility mode, each command is run in a separate process. If the
1305 command contains any shell meta characters (`#=|^(){};&<>*?[]:$`\\n') it
1306 will be passed to the shell, otherwise b
\bbm
\bma
\bak
\bke
\be will attempt direct execu-
1309 S
\bSE
\bEE
\bE A
\bAL
\bLS
\bSO
\bO
1312 H
\bHI
\bIS
\bST
\bTO
\bOR
\bRY
\bY
1313 b
\bbm
\bma
\bak
\bke
\be is derived from NetBSD make(1). It uses autoconf to facilitate
1314 portability to other platforms.
1316 A make command appeared in Version 7 AT&T UNIX. This make implementation
1317 is based on Adam De Boor's pmake program which was written for Sprite at
1318 Berkeley. It was designed to be a parallel distributed make running jobs
1319 on different machines using a daemon called ``customs''.
1322 The make syntax is difficult to parse without actually acting of the
1323 data. For instance finding the end of a variable use should involve
1324 scanning each the modifiers using the correct terminator for each field.
1325 In many places make just counts {} and () in order to find the end of a
1328 MAKE(1) NetBSD General Commands Manual MAKE(1)
1330 There is no way of escaping a space character in a filename.
1333 b
\bbm
\bma
\bak
\bke
\be -- maintain program dependencies
1335 S
\bSY
\bYN
\bNO
\bOP
\bPS
\bSI
\bIS
\bS
1336 b
\bbm
\bma
\bak
\bke
\be [-
\b-B
\bBe
\bei
\bik
\bkN
\bNn
\bnq
\bqr
\brs
\bst
\btW
\bWX
\bX] [-
\b-C
\bC _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by] [-
\b-D
\bD _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be] [-
\b-d
\bd _
\bf_
\bl_
\ba_
\bg_
\bs]
1337 [-
\b-f
\bf _
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be] [-
\b-I
\bI _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by] [-
\b-J
\bJ _
\bp_
\br_
\bi_
\bv_
\ba_
\bt_
\be] [-
\b-j
\bj _
\bm_
\ba_
\bx_
\b__
\bj_
\bo_
\bb_
\bs]
1338 [-
\b-m
\bm _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by] [-
\b-T
\bT _
\bf_
\bi_
\bl_
\be] [-
\b-V
\bV _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be] [_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be_
\b=_
\bv_
\ba_
\bl_
\bu_
\be]
1339 [_
\bt_
\ba_
\br_
\bg_
\be_
\bt _
\b._
\b._
\b.]
1341 D
\bDE
\bES
\bSC
\bCR
\bRI
\bIP
\bPT
\bTI
\bIO
\bON
\bN
1342 b
\bbm
\bma
\bak
\bke
\be is a program designed to simplify the maintenance of other pro-
1343 grams. Its input is a list of specifications as to the files upon which
1344 programs and other files depend. If no -
\b-f
\bf _
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be makefile option is
1345 given, b
\bbm
\bma
\bak
\bke
\be will try to open `_
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be' then `_
\bM_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be' in order to find
1346 the specifications. If the file `_
\b._
\bd_
\be_
\bp_
\be_
\bn_
\bd' exists, it is read (see
1349 This manual page is intended as a reference document only. For a more
1350 thorough description of b
\bbm
\bma
\bak
\bke
\be and makefiles, please refer to _
\bP_
\bM_
\ba_
\bk_
\be _
\b- _
\bA
1351 _
\bT_
\bu_
\bt_
\bo_
\br_
\bi_
\ba_
\bl.
1353 b
\bbm
\bma
\bak
\bke
\be will prepend the contents of the _
\bM_
\bA_
\bK_
\bE_
\bF_
\bL_
\bA_
\bG_
\bS environment variable to
1354 the command line arguments before parsing them.
1356 The options are as follows:
1358 -
\b-B
\bB Try to be backwards compatible by executing a single shell per
1359 command and by executing the commands to make the sources of a
1360 dependency line in sequence.
1362 -
\b-C
\bC _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by
1363 Change to _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by before reading the makefiles or doing any-
1364 thing else. If multiple -
\b-C
\bC options are specified, each is inter-
1365 preted relative to the previous one: -
\b-C
\bC _
\b/ -
\b-C
\bC _
\be_
\bt_
\bc is equivalent to
1366 -
\b-C
\bC _
\b/_
\be_
\bt_
\bc.
1368 -
\b-D
\bD _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be
1369 Define _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be to be 1, in the global context.
1371 -
\b-d
\bd _
\b[_
\b-_
\b]_
\bf_
\bl_
\ba_
\bg_
\bs
1372 Turn on debugging, and specify which portions of b
\bbm
\bma
\bak
\bke
\be are to
1373 print debugging information. Unless the flags are preceded by
1374 `-' they are added to the _
\bM_
\bA_
\bK_
\bE_
\bF_
\bL_
\bA_
\bG_
\bS environment variable and will
1375 be processed by any child make processes. By default, debugging
1376 information is printed to standard error, but this can be changed
1377 using the _
\bF debugging flag. The debugging output is always
1378 unbuffered; in addition, if debugging is enabled but debugging
1379 output is not directed to standard output, then the standard out-
1380 put is line buffered. _
\bF_
\bl_
\ba_
\bg_
\bs is one or more of the following:
1382 _
\bA Print all possible debugging information; equivalent to
1383 specifying all of the debugging flags.
1385 _
\ba Print debugging information about archive searching and
1388 _
\bC Print debugging information about current working direc-
1391 _
\bc Print debugging information about conditional evaluation.
1393 _
\bd Print debugging information about directory searching and
1396 _
\be Print debugging information about failed commands and
1399 _
\bF[+
\b+]_
\bf_
\bi_
\bl_
\be_
\bn_
\ba_
\bm_
\be
1400 Specify where debugging output is written. This must be
1401 the last flag, because it consumes the remainder of the
1402 argument. If the character immediately after the `F'
1403 flag is `+', then the file will be opened in append mode;
1404 otherwise the file will be overwritten. If the file name
1405 is `stdout' or `stderr' then debugging output will be
1406 written to the standard output or standard error output
1407 file descriptors respectively (and the `+' option has no
1408 effect). Otherwise, the output will be written to the
1409 named file. If the file name ends `.%d' then the `%d' is
1410 replaced by the pid.
1412 _
\bf Print debugging information about loop evaluation.
1414 _
\bg_
\b1 Print the input graph before making anything.
1416 _
\bg_
\b2 Print the input graph after making everything, or before
1419 _
\bg_
\b3 Print the input graph before exiting on error.
1421 _
\bj Print debugging information about running multiple
1424 _
\bl Print commands in Makefiles regardless of whether or not
1425 they are prefixed by `@' or other "quiet" flags. Also
1426 known as "loud" behavior.
1428 _
\bM Print debugging information about "meta" mode decisions
1431 _
\bm Print debugging information about making targets, includ-
1432 ing modification dates.
1434 _
\bn Don't delete the temporary command scripts created when
1435 running commands. These temporary scripts are created in
1436 the directory referred to by the TMPDIR environment vari-
1437 able, or in _
\b/_
\bt_
\bm_
\bp if TMPDIR is unset or set to the empty
1438 string. The temporary scripts are created by mkstemp(3),
1439 and have names of the form _
\bm_
\ba_
\bk_
\be_
\bX_
\bX_
\bX_
\bX_
\bX_
\bX. _
\bN_
\bO_
\bT_
\bE: This can
1440 create many files in TMPDIR or _
\b/_
\bt_
\bm_
\bp, so use with care.
1442 _
\bp Print debugging information about makefile parsing.
1444 _
\bs Print debugging information about suffix-transformation
1447 _
\bt Print debugging information about target list mainte-
1450 _
\bV Force the -
\b-V
\bV option to print raw values of variables.
1452 _
\bv Print debugging information about variable assignment.
1454 _
\bx Run shell commands with -
\b-x
\bx so the actual commands are
1455 printed as they are executed.
1457 -
\b-e
\be Specify that environment variables override macro assignments
1460 -
\b-f
\bf _
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be
1461 Specify a makefile to read instead of the default `_
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be'. If
1462 _
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be is `-
\b-', standard input is read. Multiple makefiles may
1463 be specified, and are read in the order specified.
1465 -
\b-I
\bI _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by
1466 Specify a directory in which to search for makefiles and included
1467 makefiles. The system makefile directory (or directories, see
1468 the -
\b-m
\bm option) is automatically included as part of this list.
1470 -
\b-i
\bi Ignore non-zero exit of shell commands in the makefile. Equiva-
1471 lent to specifying `-
\b-' before each command line in the makefile.
1473 -
\b-J
\bJ _
\bp_
\br_
\bi_
\bv_
\ba_
\bt_
\be
1474 This option should _
\bn_
\bo_
\bt be specified by the user.
1476 When the _
\bj option is in use in a recursive build, this option is
1477 passed by a make to child makes to allow all the make processes
1478 in the build to cooperate to avoid overloading the system.
1480 -
\b-j
\bj _
\bm_
\ba_
\bx_
\b__
\bj_
\bo_
\bb_
\bs
1481 Specify the maximum number of jobs that b
\bbm
\bma
\bak
\bke
\be may have running at
1482 any one time. The value is saved in _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bJ_
\bO_
\bB_
\bS. Turns compati-
1483 bility mode off, unless the _
\bB flag is also specified. When com-
1484 patibility mode is off, all commands associated with a target are
1485 executed in a single shell invocation as opposed to the tradi-
1486 tional one shell invocation per line. This can break traditional
1487 scripts which change directories on each command invocation and
1488 then expect to start with a fresh environment on the next line.
1489 It is more efficient to correct the scripts rather than turn
1490 backwards compatibility on.
1492 -
\b-k
\bk Continue processing after errors are encountered, but only on
1493 those targets that do not depend on the target whose creation
1496 -
\b-m
\bm _
\bd_
\bi_
\br_
\be_
\bc_
\bt_
\bo_
\br_
\by
1497 Specify a directory in which to search for sys.mk and makefiles
1498 included via the <_
\bf_
\bi_
\bl_
\be>-style include statement. The -
\b-m
\bm option
1499 can be used multiple times to form a search path. This path will
1500 override the default system include path: /usr/share/mk. Fur-
1501 thermore the system include path will be appended to the search
1502 path used for "_
\bf_
\bi_
\bl_
\be"-style include statements (see the -
\b-I
\bI
1505 If a file or directory name in the -
\b-m
\bm argument (or the
1506 MAKESYSPATH environment variable) starts with the string ".../"
1507 then b
\bbm
\bma
\bak
\bke
\be will search for the specified file or directory named
1508 in the remaining part of the argument string. The search starts
1509 with the current directory of the Makefile and then works upward
1510 towards the root of the filesystem. If the search is successful,
1511 then the resulting directory replaces the ".../" specification in
1512 the -
\b-m
\bm argument. If used, this feature allows b
\bbm
\bma
\bak
\bke
\be to easily
1513 search in the current source tree for customized sys.mk files
1514 (e.g., by using ".../mk/sys.mk" as an argument).
1516 -
\b-n
\bn Display the commands that would have been executed, but do not
1517 actually execute them unless the target depends on the .MAKE spe-
1518 cial source (see below).
1520 -
\b-N
\bN Display the commands which would have been executed, but do not
1521 actually execute any of them; useful for debugging top-level
1522 makefiles without descending into subdirectories.
1524 -
\b-q
\bq Do not execute any commands, but exit 0 if the specified targets
1525 are up-to-date and 1, otherwise.
1527 -
\b-r
\br Do not use the built-in rules specified in the system makefile.
1529 -
\b-s
\bs Do not echo any commands as they are executed. Equivalent to
1530 specifying `@
\b@' before each command line in the makefile.
1532 -
\b-T
\bT _
\bt_
\br_
\ba_
\bc_
\be_
\bf_
\bi_
\bl_
\be
1533 When used with the -
\b-j
\bj flag, append a trace record to _
\bt_
\br_
\ba_
\bc_
\be_
\bf_
\bi_
\bl_
\be
1534 for each job started and completed.
1536 -
\b-t
\bt Rather than re-building a target as specified in the makefile,
1537 create it or update its modification time to make it appear up-
1540 -
\b-V
\bV _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be
1541 Print b
\bbm
\bma
\bak
\bke
\be's idea of the value of _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be, in the global con-
1542 text. Do not build any targets. Multiple instances of this
1543 option may be specified; the variables will be printed one per
1544 line, with a blank line for each null or undefined variable. If
1545 _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be contains a `$' then the value will be expanded before
1548 -
\b-W
\bW Treat any warnings during makefile parsing as errors.
1550 -
\b-X
\bX Don't export variables passed on the command line to the environ-
1551 ment individually. Variables passed on the command line are
1552 still exported via the _
\bM_
\bA_
\bK_
\bE_
\bF_
\bL_
\bA_
\bG_
\bS environment variable. This
1553 option may be useful on systems which have a small limit on the
1554 size of command arguments.
1556 _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be_
\b=_
\bv_
\ba_
\bl_
\bu_
\be
1557 Set the value of the variable _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be to _
\bv_
\ba_
\bl_
\bu_
\be. Normally, all
1558 values passed on the command line are also exported to sub-makes
1559 in the environment. The -
\b-X
\bX flag disables this behavior. Vari-
1560 able assignments should follow options for POSIX compatibility
1561 but no ordering is enforced.
1563 There are seven different types of lines in a makefile: file dependency
1564 specifications, shell commands, variable assignments, include statements,
1565 conditional directives, for loops, and comments.
1567 In general, lines may be continued from one line to the next by ending
1568 them with a backslash (`\'). The trailing newline character and initial
1569 whitespace on the following line are compressed into a single space.
1571 F
\bFI
\bIL
\bLE
\bE D
\bDE
\bEP
\bPE
\bEN
\bND
\bDE
\bEN
\bNC
\bCY
\bY S
\bSP
\bPE
\bEC
\bCI
\bIF
\bFI
\bIC
\bCA
\bAT
\bTI
\bIO
\bON
\bNS
\bS
1572 Dependency lines consist of one or more targets, an operator, and zero or
1573 more sources. This creates a relationship where the targets ``depend''
1574 on the sources and are usually created from them. The exact relationship
1575 between the target and the source is determined by the operator that sep-
1576 arates them. The three operators are as follows:
1578 :
\b: A target is considered out-of-date if its modification time is less
1579 than those of any of its sources. Sources for a target accumulate
1580 over dependency lines when this operator is used. The target is
1581 removed if b
\bbm
\bma
\bak
\bke
\be is interrupted.
1583 !
\b! Targets are always re-created, but not until all sources have been
1584 examined and re-created as necessary. Sources for a target accumu-
1585 late over dependency lines when this operator is used. The target
1586 is removed if b
\bbm
\bma
\bak
\bke
\be is interrupted.
1588 :
\b::
\b: If no sources are specified, the target is always re-created. Oth-
1589 erwise, a target is considered out-of-date if any of its sources
1590 has been modified more recently than the target. Sources for a
1591 target do not accumulate over dependency lines when this operator
1592 is used. The target will not be removed if b
\bbm
\bma
\bak
\bke
\be is interrupted.
1594 Targets and sources may contain the shell wildcard values `?', `*', `[]',
1595 and `{}'. The values `?', `*', and `[]' may only be used as part of the
1596 final component of the target or source, and must be used to describe
1597 existing files. The value `{}' need not necessarily be used to describe
1598 existing files. Expansion is in directory order, not alphabetically as
1601 S
\bSH
\bHE
\bEL
\bLL
\bL C
\bCO
\bOM
\bMM
\bMA
\bAN
\bND
\bDS
\bS
1602 Each target may have associated with it a series of shell commands, nor-
1603 mally used to create the target. Each of the commands in this script
1604 _
\bm_
\bu_
\bs_
\bt be preceded by a tab. While any target may appear on a dependency
1605 line, only one of these dependencies may be followed by a creation
1606 script, unless the `:
\b::
\b:' operator is used.
1608 If the first characters of the command line are any combination of `@
\b@',
1609 `+
\b+', or `-
\b-', the command is treated specially. A `@
\b@' causes the command
1610 not to be echoed before it is executed. A `+
\b+' causes the command to be
1611 executed even when -
\b-n
\bn is given. This is similar to the effect of the
1612 .MAKE special source, except that the effect can be limited to a single
1613 line of a script. A `-
\b-' causes any non-zero exit status of the command
1616 V
\bVA
\bAR
\bRI
\bIA
\bAB
\bBL
\bLE
\bE A
\bAS
\bSS
\bSI
\bIG
\bGN
\bNM
\bME
\bEN
\bNT
\bTS
\bS
1617 Variables in make are much like variables in the shell, and, by tradi-
1618 tion, consist of all upper-case letters.
1620 V
\bVa
\bar
\bri
\bia
\bab
\bbl
\ble
\be a
\bas
\bss
\bsi
\big
\bgn
\bnm
\bme
\ben
\bnt
\bt m
\bmo
\bod
\bdi
\bif
\bfi
\bie
\ber
\brs
\bs
1621 The five operators that can be used to assign values to variables are as
1624 =
\b= Assign the value to the variable. Any previous value is overrid-
1627 +
\b+=
\b= Append the value to the current value of the variable.
1629 ?
\b?=
\b= Assign the value to the variable if it is not already defined.
1631 :
\b:=
\b= Assign with expansion, i.e. expand the value before assigning it
1632 to the variable. Normally, expansion is not done until the vari-
1633 able is referenced. _
\bN_
\bO_
\bT_
\bE: References to undefined variables are
1634 _
\bn_
\bo_
\bt expanded. This can cause problems when variable modifiers
1637 !
\b!=
\b= Expand the value and pass it to the shell for execution and
1638 assign the result to the variable. Any newlines in the result
1639 are replaced with spaces.
1641 Any white-space before the assigned _
\bv_
\ba_
\bl_
\bu_
\be is removed; if the value is
1642 being appended, a single space is inserted between the previous contents
1643 of the variable and the appended value.
1645 Variables are expanded by surrounding the variable name with either curly
1646 braces (`{}') or parentheses (`()') and preceding it with a dollar sign
1647 (`$'). If the variable name contains only a single letter, the surround-
1648 ing braces or parentheses are not required. This shorter form is not
1651 If the variable name contains a dollar, then the name itself is expanded
1652 first. This allows almost arbitrary variable names, however names con-
1653 taining dollar, braces, parenthesis, or whitespace are really best
1656 If the result of expanding a variable contains a dollar sign (`$') the
1657 string is expanded again.
1659 Variable substitution occurs at three distinct times, depending on where
1660 the variable is being used.
1662 1. Variables in dependency lines are expanded as the line is read.
1664 2. Variables in shell commands are expanded when the shell command is
1667 3. ``.for'' loop index variables are expanded on each loop iteration.
1668 Note that other variables are not expanded inside loops so the fol-
1669 lowing example code:
1687 Because while ${a} contains ``1 2 3'' after the loop is executed,
1688 ${b} contains ``${j} ${j} ${j}'' which expands to ``3 3 3'' since
1689 after the loop completes ${j} contains ``3''.
1691 V
\bVa
\bar
\bri
\bia
\bab
\bbl
\ble
\be c
\bcl
\bla
\bas
\bss
\bse
\bes
\bs
1692 The four different classes of variables (in order of increasing prece-
1695 Environment variables
1696 Variables defined as part of b
\bbm
\bma
\bak
\bke
\be's environment.
1699 Variables defined in the makefile or in included makefiles.
1701 Command line variables
1702 Variables defined as part of the command line.
1705 Variables that are defined specific to a certain target. The
1706 seven local variables are as follows:
1708 _
\b._
\bA_
\bL_
\bL_
\bS_
\bR_
\bC The list of all sources for this target; also known as
1711 _
\b._
\bA_
\bR_
\bC_
\bH_
\bI_
\bV_
\bE The name of the archive file.
1713 _
\b._
\bI_
\bM_
\bP_
\bS_
\bR_
\bC In suffix-transformation rules, the name/path of the
1714 source from which the target is to be transformed (the
1715 ``implied'' source); also known as `_
\b<'. It is not
1716 defined in explicit rules.
1718 _
\b._
\bM_
\bE_
\bM_
\bB_
\bE_
\bR The name of the archive member.
1720 _
\b._
\bO_
\bO_
\bD_
\bA_
\bT_
\bE The list of sources for this target that were deemed
1721 out-of-date; also known as `_
\b?'.
1723 _
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX The file prefix of the target, containing only the file
1724 portion, no suffix or preceding directory components;
1725 also known as `_
\b*'.
1727 _
\b._
\bT_
\bA_
\bR_
\bG_
\bE_
\bT The name of the target; also known as `_
\b@'.
1729 The shorter forms `_
\b@', `_
\b?', `_
\b<', `_
\b>', and `_
\b*' are permitted for
1730 backward compatibility with historical makefiles and are not rec-
1731 ommended. The six variables `_
\b@_
\bF', `_
\b@_
\bD', `_
\b<_
\bF', `_
\b<_
\bD', `_
\b*_
\bF', and
1732 `_
\b*_
\bD' are permitted for compatibility with AT&T System V UNIX
1733 makefiles and are not recommended.
1735 Four of the local variables may be used in sources on dependency
1736 lines because they expand to the proper value for each target on
1737 the line. These variables are `_
\b._
\bT_
\bA_
\bR_
\bG_
\bE_
\bT', `_
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX', `_
\b._
\bA_
\bR_
\bC_
\bH_
\bI_
\bV_
\bE',
1738 and `_
\b._
\bM_
\bE_
\bM_
\bB_
\bE_
\bR'.
1740 A
\bAd
\bdd
\bdi
\bit
\bti
\bio
\bon
\bna
\bal
\bl b
\bbu
\bui
\bil
\blt
\bt-
\b-i
\bin
\bn v
\bva
\bar
\bri
\bia
\bab
\bbl
\ble
\bes
\bs
1741 In addition, b
\bbm
\bma
\bak
\bke
\be sets or knows about the following variables:
1743 _
\b$ A single dollar sign `$', i.e. `$$' expands to a single
1746 _
\b._
\bA_
\bL_
\bL_
\bT_
\bA_
\bR_
\bG_
\bE_
\bT_
\bS The list of all targets encountered in the Makefile. If
1747 evaluated during Makefile parsing, lists only those tar-
1748 gets encountered thus far.
1750 _
\b._
\bC_
\bU_
\bR_
\bD_
\bI_
\bR A path to the directory where b
\bbm
\bma
\bak
\bke
\be was executed. Refer
1751 to the description of `PWD' for more details.
1753 MAKE The name that b
\bbm
\bma
\bak
\bke
\be was executed with (_
\ba_
\br_
\bg_
\bv_
\b[_
\b0_
\b]). For
1754 compatibility b
\bbm
\bma
\bak
\bke
\be also sets _
\b._
\bM_
\bA_
\bK_
\bE with the same value.
1755 The preferred variable to use is the environment variable
1756 MAKE because it is more compatible with other versions of
1757 b
\bbm
\bma
\bak
\bke
\be and cannot be confused with the special target with
1760 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bD_
\bE_
\bP_
\bE_
\bN_
\bD_
\bF_
\bI_
\bL_
\bE
1761 Names the makefile (default `_
\b._
\bd_
\be_
\bp_
\be_
\bn_
\bd') from which gener-
1762 ated dependencies are read.
1764 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bA_
\bN_
\bD_
\b__
\bV_
\bA_
\bR_
\bI_
\bA_
\bB_
\bL_
\bE_
\bS
1765 A boolean that controls the default behavior of the -
\b-V
\bV
1768 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bO_
\bR_
\bT_
\bE_
\bD The list of variables exported by b
\bbm
\bma
\bak
\bke
\be.
1770 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bJ_
\bO_
\bB_
\bS The argument to the -
\b-j
\bj option.
1772 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bJ_
\bO_
\bB_
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX
1773 If b
\bbm
\bma
\bak
\bke
\be is run with _
\bj then output for each target is
1774 prefixed with a token `--- target ---' the first part of
1775 which can be controlled via _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bJ_
\bO_
\bB_
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX.
1777 .MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}]
1778 would produce tokens like `---make[1234] target ---' mak-
1779 ing it easier to track the degree of parallelism being
1782 MAKEFLAGS The environment variable `MAKEFLAGS' may contain anything
1783 that may be specified on b
\bbm
\bma
\bak
\bke
\be's command line. Anything
1784 specified on b
\bbm
\bma
\bak
\bke
\be's command line is appended to the
1785 `MAKEFLAGS' variable which is then entered into the envi-
1786 ronment for all programs which b
\bbm
\bma
\bak
\bke
\be executes.
1788 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bL_
\bE_
\bV_
\bE_
\bL The recursion depth of b
\bbm
\bma
\bak
\bke
\be. The initial instance of
1789 b
\bbm
\bma
\bak
\bke
\be will be 0, and an incremented value is put into the
1790 environment to be seen by the next generation. This
1791 allows tests like: .if ${.MAKE.LEVEL} == 0 to protect
1792 things which should only be evaluated in the initial
1793 instance of b
\bbm
\bma
\bak
\bke
\be.
1795 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bA_
\bK_
\bE_
\bF_
\bI_
\bL_
\bE_
\b__
\bP_
\bR_
\bE_
\bF_
\bE_
\bR_
\bE_
\bN_
\bC_
\bE
1796 The ordered list of makefile names (default `_
\bm_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be',
1797 `_
\bM_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be') that b
\bbm
\bma
\bak
\bke
\be will look for.
1799 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bA_
\bK_
\bE_
\bF_
\bI_
\bL_
\bE_
\bS
1800 The list of makefiles read by b
\bbm
\bma
\bak
\bke
\be, which is useful for
1801 tracking dependencies. Each makefile is recorded only
1802 once, regardless of the number of times read.
1804 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bO_
\bD_
\bE Processed after reading all makefiles. Can affect the
1805 mode that b
\bbm
\bma
\bak
\bke
\be runs in. It can contain a number of key-
1808 _
\bc_
\bo_
\bm_
\bp_
\ba_
\bt Like -
\b-B
\bB, puts b
\bbm
\bma
\bak
\bke
\be into "compat" mode.
1810 _
\bm_
\be_
\bt_
\ba Puts b
\bbm
\bma
\bak
\bke
\be into "meta" mode, where meta files
1811 are created for each target to capture the
1812 command run, the output generated and if
1813 filemon(4) is available, the system calls
1814 which are of interest to b
\bbm
\bma
\bak
\bke
\be. The captured
1815 output can be very useful when diagnosing
1818 _
\bc_
\bu_
\br_
\bd_
\bi_
\br_
\bO_
\bk_
\b= _
\bb_
\bf Normally b
\bbm
\bma
\bak
\bke
\be will not create .meta files
1819 in `_
\b._
\bC_
\bU_
\bR_
\bD_
\bI_
\bR'. This can be overridden by set-
1820 ting _
\bb_
\bf to a value which represents True.
1822 _
\be_
\bn_
\bv For debugging, it can be useful to inlcude
1823 the environment in the .meta file.
1825 _
\bv_
\be_
\br_
\bb_
\bo_
\bs_
\be If in "meta" mode, print a clue about the
1826 target being built. This is useful if the
1827 build is otherwise running silently. The
1828 message printed the value of:
1829 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX.
1831 _
\bi_
\bg_
\bn_
\bo_
\br_
\be_
\b-_
\bc_
\bm_
\bd Some makefiles have commands which are simply
1832 not stable. This keyword causes them to be
1833 ignored for determining whether a target is
1834 out of date in "meta" mode. See also
1835 .
\b.N
\bNO
\bOM
\bME
\bET
\bTA
\bA_
\b_C
\bCM
\bMP
\bP.
1837 _
\bs_
\bi_
\bl_
\be_
\bn_
\bt_
\b= _
\bb_
\bf If _
\bb_
\bf is True, when a .meta file is created,
1838 mark the target .
\b.S
\bSI
\bIL
\bLE
\bEN
\bNT
\bT.
1840 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bB_
\bA_
\bI_
\bL_
\bI_
\bW_
\bI_
\bC_
\bK
1841 In "meta" mode, provides a list of prefixes which match
1842 the directories controlled by b
\bbm
\bma
\bak
\bke
\be. If a file that was
1843 generated outside of _
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR but within said bailiwick is
1844 missing, the current target is considered out-of-date.
1846 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bC_
\bR_
\bE_
\bA_
\bT_
\bE_
\bD
1847 In "meta" mode, this variable contains a list of all the
1848 meta files updated. If not empty, it can be used to
1849 trigger processing of _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bF_
\bI_
\bL_
\bE_
\bS.
1851 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bF_
\bI_
\bL_
\bE_
\bS
1852 In "meta" mode, this variable contains a list of all the
1853 meta files used (updated or not). This list can be used
1854 to process the meta files to extract dependency informa-
1857 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bM_
\bE_
\bT_
\bA_
\b._
\bP_
\bR_
\bE_
\bF_
\bI_
\bX
1858 Defines the message printed for each meta file updated in
1859 "meta verbose" mode. The default value is:
1860 Building ${.TARGET:H:tA}/${.TARGET:T}
1862 _
\b._
\bM_
\bA_
\bK_
\bE_
\bO_
\bV_
\bE_
\bR_
\bR_
\bI_
\bD_
\bE_
\bS This variable is used to record the names of variables
1863 assigned to on the command line, so that they may be
1864 exported as part of `MAKEFLAGS'. This behaviour can be
1865 disabled by assigning an empty value to `_
\b._
\bM_
\bA_
\bK_
\bE_
\bO_
\bV_
\bE_
\bR_
\bR_
\bI_
\bD_
\bE_
\bS'
1866 within a makefile. Extra variables can be exported from
1867 a makefile by appending their names to `_
\b._
\bM_
\bA_
\bK_
\bE_
\bO_
\bV_
\bE_
\bR_
\bR_
\bI_
\bD_
\bE_
\bS'.
1868 `MAKEFLAGS' is re-exported whenever `_
\b._
\bM_
\bA_
\bK_
\bE_
\bO_
\bV_
\bE_
\bR_
\bR_
\bI_
\bD_
\bE_
\bS' is
1871 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bP_
\bI_
\bD The process-id of b
\bbm
\bma
\bak
\bke
\be.
1873 _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bP_
\bP_
\bI_
\bD The parent process-id of b
\bbm
\bma
\bak
\bke
\be.
1875 _
\bM_
\bA_
\bK_
\bE_
\b__
\bP_
\bR_
\bI_
\bN_
\bT_
\b__
\bV_
\bA_
\bR_
\b__
\bO_
\bN_
\b__
\bE_
\bR_
\bR_
\bO_
\bR
1876 When b
\bbm
\bma
\bak
\bke
\be stops due to an error, it prints its name and
1877 the value of `_
\b._
\bC_
\bU_
\bR_
\bD_
\bI_
\bR' as well as the value of any vari-
1878 ables named in `_
\bM_
\bA_
\bK_
\bE_
\b__
\bP_
\bR_
\bI_
\bN_
\bT_
\b__
\bV_
\bA_
\bR_
\b__
\bO_
\bN_
\b__
\bE_
\bR_
\bR_
\bO_
\bR'.
1880 _
\b._
\bn_
\be_
\bw_
\bl_
\bi_
\bn_
\be This variable is simply assigned a newline character as
1881 its value. This allows expansions using the :
\b:@
\b@ modifier
1882 to put a newline between iterations of the loop rather
1883 than a space. For example, the printing of
1884 `_
\bM_
\bA_
\bK_
\bE_
\b__
\bP_
\bR_
\bI_
\bN_
\bT_
\b__
\bV_
\bA_
\bR_
\b__
\bO_
\bN_
\b__
\bE_
\bR_
\bR_
\bO_
\bR' could be done as
1885 ${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}.
1887 _
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR A path to the directory where the targets are built. Its
1888 value is determined by trying to chdir(2) to the follow-
1889 ing directories in order and using the first match:
1891 1. ${MAKEOBJDIRPREFIX}${.CURDIR}
1893 (Only if `MAKEOBJDIRPREFIX' is set in the environ-
1894 ment or on the command line.)
1898 (Only if `MAKEOBJDIR' is set in the environment or
1899 on the command line.)
1901 3. ${.CURDIR}_
\b/_
\bo_
\bb_
\bj_
\b.${MACHINE}
1903 4. ${.CURDIR}_
\b/_
\bo_
\bb_
\bj
1905 5. _
\b/_
\bu_
\bs_
\br_
\b/_
\bo_
\bb_
\bj_
\b/${.CURDIR}
1909 Variable expansion is performed on the value before it's
1910 used, so expressions such as
1911 ${.CURDIR:S,^/usr/src,/var/obj,}
1912 may be used. This is especially useful with
1915 `_
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR' may be modified in the makefile as a global
1916 variable. In all cases, b
\bbm
\bma
\bak
\bke
\be will chdir(2) to `_
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR'
1917 and set `PWD' to that directory before executing any tar-
1920 _
\b._
\bP_
\bA_
\bR_
\bS_
\bE_
\bD_
\bI_
\bR A path to the directory of the current `_
\bM_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be' being
1923 _
\b._
\bP_
\bA_
\bR_
\bS_
\bE_
\bF_
\bI_
\bL_
\bE The basename of the current `_
\bM_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be' being parsed.
1924 This variable and `_
\b._
\bP_
\bA_
\bR_
\bS_
\bE_
\bD_
\bI_
\bR' are both set only while the
1925 `_
\bM_
\ba_
\bk_
\be_
\bf_
\bi_
\bl_
\be_
\bs' are being parsed. If you want to retain
1926 their current values, assign them to a variable using
1927 assignment with expansion: (`:
\b:=
\b=').
1929 _
\b._
\bP_
\bA_
\bT_
\bH A variable that represents the list of directories that
1930 b
\bbm
\bma
\bak
\bke
\be will search for files. The search list should be
1931 updated using the target `_
\b._
\bP_
\bA_
\bT_
\bH' rather than the vari-
1934 PWD Alternate path to the current directory. b
\bbm
\bma
\bak
\bke
\be normally
1935 sets `_
\b._
\bC_
\bU_
\bR_
\bD_
\bI_
\bR' to the canonical path given by getcwd(3).
1936 However, if the environment variable `PWD' is set and
1937 gives a path to the current directory, then b
\bbm
\bma
\bak
\bke
\be sets
1938 `_
\b._
\bC_
\bU_
\bR_
\bD_
\bI_
\bR' to the value of `PWD' instead. This behaviour
1939 is disabled if `MAKEOBJDIRPREFIX' is set or `MAKEOBJDIR'
1940 contains a variable transform. `PWD' is set to the value
1941 of `_
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR' for all programs which b
\bbm
\bma
\bak
\bke
\be executes.
1943 .TARGETS The list of targets explicitly specified on the command
1946 VPATH Colon-separated (``:'') lists of directories that b
\bbm
\bma
\bak
\bke
\be
1947 will search for files. The variable is supported for
1948 compatibility with old make programs only, use `_
\b._
\bP_
\bA_
\bT_
\bH'
1951 V
\bVa
\bar
\bri
\bia
\bab
\bbl
\ble
\be m
\bmo
\bod
\bdi
\bif
\bfi
\bie
\ber
\brs
\bs
1952 Variable expansion may be modified to select or modify each word of the
1953 variable (where a ``word'' is white-space delimited sequence of charac-
1954 ters). The general format of a variable expansion is as follows:
1956 ${variable[:modifier[:...]]}
1958 Each modifier begins with a colon, which may be escaped with a backslash
1961 A set of modifiers can be specified via a variable, as follows:
1963 modifier_variable=modifier[:...]
1964 ${variable:${modifier_variable}[:...]}
1966 In this case the first modifier in the modifier_variable does not start
1967 with a colon, since that must appear in the referencing variable. If any
1968 of the modifiers in the modifier_variable contain a dollar sign (`$'),
1969 these must be doubled to avoid early expansion.
1971 The supported modifiers are:
1973 :
\b:E
\bE Replaces each word in the variable with its suffix.
1975 :
\b:H
\bH Replaces each word in the variable with everything but the last com-
1978 :
\b:M
\bM_
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn
1979 Select only those words that match _
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn. The standard shell
1980 wildcard characters (`*', `?', and `[]') may be used. The wildcard
1981 characters may be escaped with a backslash (`\').
1983 :
\b:N
\bN_
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn
1984 This is identical to `:
\b:M
\bM', but selects all words which do not match
1985 _
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn.
1987 :
\b:O
\bO Order every word in variable alphabetically. To sort words in
1988 reverse order use the `:
\b:O
\bO:
\b:[
\b[-
\b-1
\b1.
\b..
\b.1
\b1]
\b]' combination of modifiers.
1990 :
\b:O
\bOx
\bx Randomize words in variable. The results will be different each
1991 time you are referring to the modified variable; use the assignment
1992 with expansion (`:
\b:=
\b=') to prevent such behaviour. For example,
1994 LIST= uno due tre quattro
1995 RANDOM_LIST= ${LIST:Ox}
1996 STATIC_RANDOM_LIST:= ${LIST:Ox}
1999 @echo "${RANDOM_LIST}"
2000 @echo "${RANDOM_LIST}"
2001 @echo "${STATIC_RANDOM_LIST}"
2002 @echo "${STATIC_RANDOM_LIST}"
2003 may produce output similar to:
2010 :
\b:Q
\bQ Quotes every shell meta-character in the variable, so that it can be
2011 passed safely through recursive invocations of b
\bbm
\bma
\bak
\bke
\be.
2013 :
\b:R
\bR Replaces each word in the variable with everything but its suffix.
2015 :
\b:g
\bgm
\bmt
\bti
\bim
\bme
\be
2016 The value is a format string for strftime(3), using the current
2019 :
\b:h
\bha
\bas
\bsh
\bh
2020 Compute a 32bit hash of the value and encode it as hex digits.
2022 :
\b:l
\blo
\boc
\bca
\bal
\blt
\bti
\bim
\bme
\be
2023 The value is a format string for strftime(3), using the current
2026 :
\b:t
\btA
\bA Attempt to convert variable to an absolute path using realpath(3),
2027 if that fails, the value is unchanged.
2029 :
\b:t
\btl
\bl Converts variable to lower-case letters.
2032 Words in the variable are normally separated by a space on expan-
2033 sion. This modifier sets the separator to the character _
\bc. If _
\bc is
2034 omitted, then no separator is used. The common escapes (including
2035 octal numeric codes), work as expected.
2037 :
\b:t
\btu
\bu Converts variable to upper-case letters.
2039 :
\b:t
\btW
\bW Causes the value to be treated as a single word (possibly containing
2040 embedded white space). See also `:
\b:[
\b[*
\b*]
\b]'.
2042 :
\b:t
\btw
\bw Causes the value to be treated as a sequence of words delimited by
2043 white space. See also `:
\b:[
\b[@
\b@]
\b]'.
2045 :
\b:S
\bS/_
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg/_
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg/[1
\b1g
\bgW
\bW]
2046 Modify the first occurrence of _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg in the variable's value,
2047 replacing it with _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg. If a `g' is appended to the last
2048 slash of the pattern, all occurrences in each word are replaced. If
2049 a `1' is appended to the last slash of the pattern, only the first
2050 word is affected. If a `W' is appended to the last slash of the
2051 pattern, then the value is treated as a single word (possibly con-
2052 taining embedded white space). If _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg begins with a caret
2053 (`^'), _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg is anchored at the beginning of each word. If
2054 _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg ends with a dollar sign (`$'), it is anchored at the end
2055 of each word. Inside _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg, an ampersand (`&') is replaced by
2056 _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg (without any `^' or `$'). Any character may be used as a
2057 delimiter for the parts of the modifier string. The anchoring,
2058 ampersand and delimiter characters may be escaped with a backslash
2061 Variable expansion occurs in the normal fashion inside both
2062 _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg and _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg with the single exception that a backslash
2063 is used to prevent the expansion of a dollar sign (`$'), not a pre-
2064 ceding dollar sign as is usual.
2066 :
\b:C
\bC/_
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn/_
\br_
\be_
\bp_
\bl_
\ba_
\bc_
\be_
\bm_
\be_
\bn_
\bt/[1
\b1g
\bgW
\bW]
2067 The :
\b:C
\bC modifier is just like the :
\b:S
\bS modifier except that the old and
2068 new strings, instead of being simple strings, are a regular expres-
2069 sion (see regex(3)) string _
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn and an ed(1)-style string
2070 _
\br_
\be_
\bp_
\bl_
\ba_
\bc_
\be_
\bm_
\be_
\bn_
\bt. Normally, the first occurrence of the pattern _
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn
2071 in each word of the value is substituted with _
\br_
\be_
\bp_
\bl_
\ba_
\bc_
\be_
\bm_
\be_
\bn_
\bt. The `1'
2072 modifier causes the substitution to apply to at most one word; the
2073 `g' modifier causes the substitution to apply to as many instances
2074 of the search pattern _
\bp_
\ba_
\bt_
\bt_
\be_
\br_
\bn as occur in the word or words it is
2075 found in; the `W' modifier causes the value to be treated as a sin-
2076 gle word (possibly containing embedded white space). Note that `1'
2077 and `g' are orthogonal; the former specifies whether multiple words
2078 are potentially affected, the latter whether multiple substitutions
2079 can potentially occur within each affected word.
2081 :
\b:T
\bT Replaces each word in the variable with its last component.
2083 :
\b:u
\bu Remove adjacent duplicate words (like uniq(1)).
2085 :
\b:?
\b?_
\bt_
\br_
\bu_
\be_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg:
\b:_
\bf_
\ba_
\bl_
\bs_
\be_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg
2086 If the variable name (not its value), when parsed as a .if condi-
2087 tional expression, evaluates to true, return as its value the
2088 _
\bt_
\br_
\bu_
\be_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg, otherwise return the _
\bf_
\ba_
\bl_
\bs_
\be_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg. Since the variable
2089 name is used as the expression, :? must be the first modifier after
2090 the variable name itself - which will, of course, usually contain
2091 variable expansions. A common error is trying to use expressions
2093 ${NUMBERS:M42:?match:no}
2094 which actually tests defined(NUMBERS), to determine is any words
2095 match "42" you need to use something like:
2096 ${"${NUMBERS:M42}" != "":?match:no}.
2098 _
\b:_
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg_
\b=_
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg
2099 This is the AT&T System V UNIX style variable substitution. It must
2100 be the last modifier specified. If _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg or _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg do not
2101 contain the pattern matching character _
\b% then it is assumed that
2102 they are anchored at the end of each word, so only suffixes or
2103 entire words may be replaced. Otherwise _
\b% is the substring of
2104 _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg to be replaced in _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg.
2106 Variable expansion occurs in the normal fashion inside both
2107 _
\bo_
\bl_
\bd_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg and _
\bn_
\be_
\bw_
\b__
\bs_
\bt_
\br_
\bi_
\bn_
\bg with the single exception that a backslash
2108 is used to prevent the expansion of a dollar sign (`$'), not a pre-
2109 ceding dollar sign as is usual.
2111 :
\b:@
\b@_
\bt_
\be_
\bm_
\bp@
\b@_
\bs_
\bt_
\br_
\bi_
\bn_
\bg@
\b@
2112 This is the loop expansion mechanism from the OSF Development Envi-
2113 ronment (ODE) make. Unlike .
\b.f
\bfo
\bor
\br loops expansion occurs at the time
2114 of reference. Assign _
\bt_
\be_
\bm_
\bp to each word in the variable and evaluate
2115 _
\bs_
\bt_
\br_
\bi_
\bn_
\bg. The ODE convention is that _
\bt_
\be_
\bm_
\bp should start and end with a
2116 period. For example.
2117 ${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@}
2119 However a single character varaiable is often more readable:
2120 ${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}
2122 :
\b:U
\bU_
\bn_
\be_
\bw_
\bv_
\ba_
\bl
2123 If the variable is undefined _
\bn_
\be_
\bw_
\bv_
\ba_
\bl is the value. If the variable
2124 is defined, the existing value is returned. This is another ODE
2125 make feature. It is handy for setting per-target CFLAGS for
2127 ${_${.TARGET:T}_CFLAGS:U${DEF_CFLAGS}}
2128 If a value is only required if the variable is undefined, use:
2131 :
\b:D
\bD_
\bn_
\be_
\bw_
\bv_
\ba_
\bl
2132 If the variable is defined _
\bn_
\be_
\bw_
\bv_
\ba_
\bl is the value.
2134 :
\b:L
\bL The name of the variable is the value.
2136 :
\b:P
\bP The path of the node which has the same name as the variable is the
2137 value. If no such node exists or its path is null, then the name of
2138 the variable is used. In order for this modifier to work, the name
2139 (node) must at least have appeared on the rhs of a dependency.
2141 :
\b:!
\b!_
\bc_
\bm_
\bd!
\b!
2142 The output of running _
\bc_
\bm_
\bd is the value.
2144 :
\b:s
\bsh
\bh If the variable is non-empty it is run as a command and the output
2145 becomes the new value.
2147 :
\b::
\b:=
\b=_
\bs_
\bt_
\br
2148 The variable is assigned the value _
\bs_
\bt_
\br after substitution. This
2149 modifier and its variations are useful in obscure situations such as
2150 wanting to set a variable when shell commands are being parsed.
2151 These assignment modifiers always expand to nothing, so if appearing
2152 in a rule line by themselves should be preceded with something to
2153 keep b
\bbm
\bma
\bak
\bke
\be happy.
2155 The `:
\b::
\b:' helps avoid false matches with the AT&T System V UNIX style
2156 :
\b:=
\b= modifier and since substitution always occurs the :
\b::
\b:=
\b= form is
2157 vaguely appropriate.
2159 :
\b::
\b:?
\b?=
\b=_
\bs_
\bt_
\br
2160 As for :
\b::
\b:=
\b= but only if the variable does not already have a value.
2162 :
\b::
\b:+
\b+=
\b=_
\bs_
\bt_
\br
2163 Append _
\bs_
\bt_
\br to the variable.
2165 :
\b::
\b:!
\b!=
\b=_
\bc_
\bm_
\bd
2166 Assign the output of _
\bc_
\bm_
\bd to the variable.
2168 :
\b:[
\b[_
\br_
\ba_
\bn_
\bg_
\be]
\b]
2169 Selects one or more words from the value, or performs other opera-
2170 tions related to the way in which the value is divided into words.
2172 Ordinarily, a value is treated as a sequence of words delimited by
2173 white space. Some modifiers suppress this behaviour, causing a
2174 value to be treated as a single word (possibly containing embedded
2175 white space). An empty value, or a value that consists entirely of
2176 white-space, is treated as a single word. For the purposes of the
2177 `:
\b:[
\b[]
\b]' modifier, the words are indexed both forwards using positive
2178 integers (where index 1 represents the first word), and backwards
2179 using negative integers (where index -1 represents the last word).
2181 The _
\br_
\ba_
\bn_
\bg_
\be is subjected to variable expansion, and the expanded
2182 result is then interpreted as follows:
2184 _
\bi_
\bn_
\bd_
\be_
\bx Selects a single word from the value.
2186 _
\bs_
\bt_
\ba_
\br_
\bt.
\b..
\b._
\be_
\bn_
\bd
2187 Selects all words from _
\bs_
\bt_
\ba_
\br_
\bt to _
\be_
\bn_
\bd, inclusive. For example,
2188 `:
\b:[
\b[2
\b2.
\b..
\b.-
\b-1
\b1]
\b]' selects all words from the second word to the last
2189 word. If _
\bs_
\bt_
\ba_
\br_
\bt is greater than _
\be_
\bn_
\bd, then the words are out-
2190 put in reverse order. For example, `:
\b:[
\b[-
\b-1
\b1.
\b..
\b.1
\b1]
\b]' selects all
2191 the words from last to first.
2193 *
\b* Causes subsequent modifiers to treat the value as a single
2194 word (possibly containing embedded white space). Analogous
2195 to the effect of "$*" in Bourne shell.
2197 0 Means the same as `:
\b:[
\b[*
\b*]
\b]'.
2199 @
\b@ Causes subsequent modifiers to treat the value as a sequence
2200 of words delimited by white space. Analogous to the effect
2201 of "$@" in Bourne shell.
2203 #
\b# Returns the number of words in the value.
2205 I
\bIN
\bNC
\bCL
\bLU
\bUD
\bDE
\bE S
\bST
\bTA
\bAT
\bTE
\bEM
\bME
\bEN
\bNT
\bTS
\bS,
\b, C
\bCO
\bON
\bND
\bDI
\bIT
\bTI
\bIO
\bON
\bNA
\bAL
\bLS
\bS A
\bAN
\bND
\bD F
\bFO
\bOR
\bR L
\bLO
\bOO
\bOP
\bPS
\bS
2206 Makefile inclusion, conditional structures and for loops reminiscent of
2207 the C programming language are provided in b
\bbm
\bma
\bak
\bke
\be. All such structures
2208 are identified by a line beginning with a single dot (`.') character.
2209 Files are included with either .
\b.i
\bin
\bnc
\bcl
\blu
\bud
\bde
\be <_
\bf_
\bi_
\bl_
\be> or .
\b.i
\bin
\bnc
\bcl
\blu
\bud
\bde
\be "_
\bf_
\bi_
\bl_
\be". Vari-
2210 ables between the angle brackets or double quotes are expanded to form
2211 the file name. If angle brackets are used, the included makefile is
2212 expected to be in the system makefile directory. If double quotes are
2213 used, the including makefile's directory and any directories specified
2214 using the -
\b-I
\bI option are searched before the system makefile directory.
2215 For compatibility with other versions of b
\bbm
\bma
\bak
\bke
\be `include file ...' is also
2216 accepted. If the include statement is written as .
\b.-
\b-i
\bin
\bnc
\bcl
\blu
\bud
\bde
\be or as
2217 .
\b.s
\bsi
\bin
\bnc
\bcl
\blu
\bud
\bde
\be then errors locating and/or opening include files are ignored.
2219 Conditional expressions are also preceded by a single dot as the first
2220 character of a line. The possible conditionals are as follows:
2222 .
\b.e
\ber
\brr
\bro
\bor
\br _
\bm_
\be_
\bs_
\bs_
\ba_
\bg_
\be
2223 The message is printed along with the name of the makefile and
2224 line number, then b
\bbm
\bma
\bak
\bke
\be will exit.
2226 .
\b.e
\bex
\bxp
\bpo
\bor
\brt
\bt _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.
2227 Export the specified global variable. If no variable list is
2228 provided, all globals are exported except for internal variables
2229 (those that start with `.'). This is not affected by the -
\b-X
\bX
2230 flag, so should be used with caution. For compatibility with
2231 other b
\bbm
\bma
\bak
\bke
\be programs `export variable=value' is also accepted.
2233 Appending a variable name to _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bO_
\bR_
\bT_
\bE_
\bD is equivalent to
2234 exporting a variable.
2236 .
\b.e
\bex
\bxp
\bpo
\bor
\brt
\bt-
\b-e
\ben
\bnv
\bv _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.
2237 The same as `.export', except that the variable is not appended
2238 to _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bO_
\bR_
\bT_
\bE_
\bD. This allows exporting a value to the environ-
2239 ment which is different from that used by b
\bbm
\bma
\bak
\bke
\be internally.
2241 .
\b.i
\bin
\bnf
\bfo
\bo _
\bm_
\be_
\bs_
\bs_
\ba_
\bg_
\be
2242 The message is printed along with the name of the makefile and
2245 .
\b.u
\bun
\bnd
\bde
\bef
\bf _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be
2246 Un-define the specified global variable. Only global variables
2249 .
\b.u
\bun
\bne
\bex
\bxp
\bpo
\bor
\brt
\bt _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.
2250 The opposite of `.export'. The specified global _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be will be
2251 removed from _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bO_
\bR_
\bT_
\bE_
\bD. If no variable list is provided,
2252 all globals are unexported, and _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bE_
\bX_
\bP_
\bO_
\bR_
\bT_
\bE_
\bD deleted.
2254 .
\b.u
\bun
\bne
\bex
\bxp
\bpo
\bor
\brt
\bt-
\b-e
\ben
\bnv
\bv
2255 Unexport all globals previously exported and clear the environ-
2256 ment inherited from the parent. This operation will cause a mem-
2257 ory leak of the original environment, so should be used spar-
2258 ingly. Testing for _
\b._
\bM_
\bA_
\bK_
\bE_
\b._
\bL_
\bE_
\bV_
\bE_
\bL being 0, would make sense. Also
2259 note that any variables which originated in the parent environ-
2260 ment should be explicitly preserved if desired. For example:
2262 .if ${.MAKE.LEVEL} == 0
2268 Would result in an environment containing only `PATH', which is
2269 the minimal useful environment. Actually `.MAKE.LEVEL' will also
2270 be pushed into the new environment.
2272 .
\b.w
\bwa
\bar
\brn
\bni
\bin
\bng
\bg _
\bm_
\be_
\bs_
\bs_
\ba_
\bg_
\be
2273 The message prefixed by `_
\bw_
\ba_
\br_
\bn_
\bi_
\bn_
\bg_
\b:' is printed along with the name
2274 of the makefile and line number.
2276 .
\b.i
\bif
\bf [!]_
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn _
\b._
\b._
\b.]
2277 Test the value of an expression.
2279 .
\b.i
\bif
\bfd
\bde
\bef
\bf [!]_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.]
2280 Test the value of a variable.
2282 .
\b.i
\bif
\bfn
\bnd
\bde
\bef
\bf [!]_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.]
2283 Test the value of a variable.
2285 .
\b.i
\bif
\bfm
\bma
\bak
\bke
\be [!]_
\bt_
\ba_
\br_
\bg_
\be_
\bt [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bt_
\ba_
\br_
\bg_
\be_
\bt _
\b._
\b._
\b.]
2286 Test the target being built.
2288 .
\b.i
\bif
\bfn
\bnm
\bma
\bak
\bke
\be [!] _
\bt_
\ba_
\br_
\bg_
\be_
\bt [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bt_
\ba_
\br_
\bg_
\be_
\bt _
\b._
\b._
\b.]
2289 Test the target being built.
2291 .
\b.e
\bel
\bls
\bse
\be Reverse the sense of the last conditional.
2293 .
\b.e
\bel
\bli
\bif
\bf [!] _
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn _
\b._
\b._
\b.]
2294 A combination of `.
\b.e
\bel
\bls
\bse
\be' followed by `.
\b.i
\bif
\bf'.
2296 .
\b.e
\bel
\bli
\bif
\bfd
\bde
\bef
\bf [!]_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.]
2297 A combination of `.
\b.e
\bel
\bls
\bse
\be' followed by `.
\b.i
\bif
\bfd
\bde
\bef
\bf'.
2299 .
\b.e
\bel
\bli
\bif
\bfn
\bnd
\bde
\bef
\bf [!]_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.]
2300 A combination of `.
\b.e
\bel
\bls
\bse
\be' followed by `.
\b.i
\bif
\bfn
\bnd
\bde
\bef
\bf'.
2302 .
\b.e
\bel
\bli
\bif
\bfm
\bma
\bak
\bke
\be [!]_
\bt_
\ba_
\br_
\bg_
\be_
\bt [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bt_
\ba_
\br_
\bg_
\be_
\bt _
\b._
\b._
\b.]
2303 A combination of `.
\b.e
\bel
\bls
\bse
\be' followed by `.
\b.i
\bif
\bfm
\bma
\bak
\bke
\be'.
2305 .
\b.e
\bel
\bli
\bif
\bfn
\bnm
\bma
\bak
\bke
\be [!]_
\bt_
\ba_
\br_
\bg_
\be_
\bt [_
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br _
\bt_
\ba_
\br_
\bg_
\be_
\bt _
\b._
\b._
\b.]
2306 A combination of `.
\b.e
\bel
\bls
\bse
\be' followed by `.
\b.i
\bif
\bfn
\bnm
\bma
\bak
\bke
\be'.
2308 .
\b.e
\ben
\bnd
\bdi
\bif
\bf End the body of the conditional.
2310 The _
\bo_
\bp_
\be_
\br_
\ba_
\bt_
\bo_
\br may be any one of the following:
2312 |
\b||
\b| Logical OR.
2314 &
\b&&
\b& Logical AND; of higher precedence than ``||''.
2316 As in C, b
\bbm
\bma
\bak
\bke
\be will only evaluate a conditional as far as is necessary to
2317 determine its value. Parentheses may be used to change the order of
2318 evaluation. The boolean operator `!
\b!' may be used to logically negate an
2319 entire conditional. It is of higher precedence than `&
\b&&
\b&'.
2321 The value of _
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn may be any of the following:
2323 d
\bde
\bef
\bfi
\bin
\bne
\bed
\bd Takes a variable name as an argument and evaluates to true if
2324 the variable has been defined.
2326 m
\bma
\bak
\bke
\be Takes a target name as an argument and evaluates to true if the
2327 target was specified as part of b
\bbm
\bma
\bak
\bke
\be's command line or was
2328 declared the default target (either implicitly or explicitly,
2329 see _
\b._
\bM_
\bA_
\bI_
\bN) before the line containing the conditional.
2331 e
\bem
\bmp
\bpt
\bty
\by Takes a variable, with possible modifiers, and evaluates to true
2332 if the expansion of the variable would result in an empty
2335 e
\bex
\bxi
\bis
\bst
\bts
\bs Takes a file name as an argument and evaluates to true if the
2336 file exists. The file is searched for on the system search path
2337 (see _
\b._
\bP_
\bA_
\bT_
\bH).
2339 t
\bta
\bar
\brg
\bge
\bet
\bt Takes a target name as an argument and evaluates to true if the
2340 target has been defined.
2342 c
\bco
\bom
\bmm
\bma
\ban
\bnd
\bds
\bs
2343 Takes a target name as an argument and evaluates to true if the
2344 target has been defined and has commands associated with it.
2346 _
\bE_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn may also be an arithmetic or string comparison. Variable
2347 expansion is performed on both sides of the comparison, after which the
2348 integral values are compared. A value is interpreted as hexadecimal if
2349 it is preceded by 0x, otherwise it is decimal; octal numbers are not sup-
2350 ported. The standard C relational operators are all supported. If after
2351 variable expansion, either the left or right hand side of a `=
\b==
\b=' or `!
\b!=
\b='
2352 operator is not an integral value, then string comparison is performed
2353 between the expanded variables. If no relational operator is given, it
2354 is assumed that the expanded variable is being compared against 0 or an
2355 empty string in the case of a string comparison.
2357 When b
\bbm
\bma
\bak
\bke
\be is evaluating one of these conditional expressions, and it
2358 encounters a (white-space separated) word it doesn't recognize, either
2359 the ``make'' or ``defined'' expression is applied to it, depending on the
2360 form of the conditional. If the form is `.
\b.i
\bif
\bfd
\bde
\bef
\bf', `.
\b.i
\bif
\bfn
\bnd
\bde
\bef
\bf', or `.
\b.i
\bif
\bf'
2361 the ``defined'' expression is applied. Similarly, if the form is
2362 `.
\b.i
\bif
\bfm
\bma
\bak
\bke
\be' or `.
\b.i
\bif
\bfn
\bnm
\bma
\bak
\bke
\be, t
\bth
\bhe
\be' ``make'' expression is applied.
2364 If the conditional evaluates to true the parsing of the makefile contin-
2365 ues as before. If it evaluates to false, the following lines are
2366 skipped. In both cases this continues until a `.
\b.e
\bel
\bls
\bse
\be' or `.
\b.e
\ben
\bnd
\bdi
\bif
\bf' is
2369 For loops are typically used to apply a set of rules to a list of files.
2370 The syntax of a for loop is:
2372 .
\b.f
\bfo
\bor
\br _
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be [_
\bv_
\ba_
\br_
\bi_
\ba_
\bb_
\bl_
\be _
\b._
\b._
\b.] i
\bin
\bn _
\be_
\bx_
\bp_
\br_
\be_
\bs_
\bs_
\bi_
\bo_
\bn
2374 .
\b.e
\ben
\bnd
\bdf
\bfo
\bor
\br
2376 After the for e
\bex
\bxp
\bpr
\bre
\bes
\bss
\bsi
\bio
\bon
\bn is evaluated, it is split into words. On each
2377 iteration of the loop, one word is taken and assigned to each v
\bva
\bar
\bri
\bia
\bab
\bbl
\ble
\be,
2378 in order, and these v
\bva
\bar
\bri
\bia
\bab
\bbl
\ble
\bes
\bs are substituted into the m
\bma
\bak
\bke
\be-
\b-r
\bru
\bul
\ble
\bes
\bs inside
2379 the body of the for loop. The number of words must come out even; that
2380 is, if there are three iteration variables, the number of words provided
2381 must be a multiple of three.
2383 C
\bCO
\bOM
\bMM
\bME
\bEN
\bNT
\bTS
\bS
2384 Comments begin with a hash (`#') character, anywhere but in a shell com-
2385 mand line, and continue to the end of an unescaped new line.
2387 S
\bSP
\bPE
\bEC
\bCI
\bIA
\bAL
\bL S
\bSO
\bOU
\bUR
\bRC
\bCE
\bES
\bS (
\b(A
\bAT
\bTT
\bTR
\bRI
\bIB
\bBU
\bUT
\bTE
\bES
\bS)
\b)
2388 .
\b.E
\bEX
\bXE
\bEC
\bC Target is never out of date, but always execute commands any-
2391 .
\b.I
\bIG
\bGN
\bNO
\bOR
\bRE
\bE Ignore any errors from the commands associated with this tar-
2392 get, exactly as if they all were preceded by a dash (`-').
2394 .
\b.M
\bMA
\bAD
\bDE
\bE Mark all sources of this target as being up-to-date.
2396 .
\b.M
\bMA
\bAK
\bKE
\bE Execute the commands associated with this target even if the -
\b-n
\bn
2397 or -
\b-t
\bt options were specified. Normally used to mark recursive
2398 b
\bbm
\bma
\bak
\bke
\be's.
2400 .
\b.M
\bME
\bET
\bTA
\bA Create a meta file for the target, even if it is flagged as
2401 .
\b.P
\bPH
\bHO
\bON
\bNY
\bY, .
\b.M
\bMA
\bAK
\bKE
\bE, or .
\b.S
\bSP
\bPE
\bEC
\bCI
\bIA
\bAL
\bL. Usage in conjunction with .
\b.M
\bMA
\bAK
\bKE
\bE is
2402 the most likely case. In "meta" mode, the target is out-of-
2403 date if the meta file is missing.
2405 .
\b.N
\bNO
\bOM
\bME
\bET
\bTA
\bA Do not create a meta file for the target. Meta files are also
2406 not created for .
\b.P
\bPH
\bHO
\bON
\bNY
\bY, .
\b.M
\bMA
\bAK
\bKE
\bE, or .
\b.S
\bSP
\bPE
\bEC
\bCI
\bIA
\bAL
\bL targets.
2408 .
\b.N
\bNO
\bOM
\bME
\bET
\bTA
\bA_
\b_C
\bCM
\bMP
\bP
2409 Ignore differences in commands when deciding if target is out
2410 of date. This is useful if the command contains a value which
2411 always changes. If the number of commands change, though, the
2412 target will still be out of date.
2414 .
\b.N
\bNO
\bOP
\bPA
\bAT
\bTH
\bH Do not search for the target in the directories specified by
2415 .
\b.P
\bPA
\bAT
\bTH
\bH.
2417 .
\b.N
\bNO
\bOT
\bTM
\bMA
\bAI
\bIN
\bN Normally b
\bbm
\bma
\bak
\bke
\be selects the first target it encounters as the
2418 default target to be built if no target was specified. This
2419 source prevents this target from being selected.
2421 .
\b.O
\bOP
\bPT
\bTI
\bIO
\bON
\bNA
\bAL
\bL
2422 If a target is marked with this attribute and b
\bbm
\bma
\bak
\bke
\be can't fig-
2423 ure out how to create it, it will ignore this fact and assume
2424 the file isn't needed or already exists.
2426 .
\b.P
\bPH
\bHO
\bON
\bNY
\bY The target does not correspond to an actual file; it is always
2427 considered to be out of date, and will not be created with the
2428 -
\b-t
\bt option. Suffix-transformation rules are not applied to
2429 .
\b.P
\bPH
\bHO
\bON
\bNY
\bY targets.
2431 .
\b.P
\bPR
\bRE
\bEC
\bCI
\bIO
\bOU
\bUS
\bS
2432 When b
\bbm
\bma
\bak
\bke
\be is interrupted, it normally removes any partially
2433 made targets. This source prevents the target from being
2436 .
\b.R
\bRE
\bEC
\bCU
\bUR
\bRS
\bSI
\bIV
\bVE
\bE
2437 Synonym for .
\b.M
\bMA
\bAK
\bKE
\bE.
2439 .
\b.S
\bSI
\bIL
\bLE
\bEN
\bNT
\bT Do not echo any of the commands associated with this target,
2440 exactly as if they all were preceded by an at sign (`@').
2442 .
\b.U
\bUS
\bSE
\bE Turn the target into b
\bbm
\bma
\bak
\bke
\be's version of a macro. When the tar-
2443 get is used as a source for another target, the other target
2444 acquires the commands, sources, and attributes (except for
2445 .
\b.U
\bUS
\bSE
\bE) of the source. If the target already has commands, the
2446 .
\b.U
\bUS
\bSE
\bE target's commands are appended to them.
2448 .
\b.U
\bUS
\bSE
\bEB
\bBE
\bEF
\bFO
\bOR
\bRE
\bE
2449 Exactly like .
\b.U
\bUS
\bSE
\bE, but prepend the .
\b.U
\bUS
\bSE
\bEB
\bBE
\bEF
\bFO
\bOR
\bRE
\bE target commands
2452 .
\b.W
\bWA
\bAI
\bIT
\bT If .
\b.W
\bWA
\bAI
\bIT
\bT appears in a dependency line, the sources that precede
2453 it are made before the sources that succeed it in the line.
2454 Since the dependents of files are not made until the file
2455 itself could be made, this also stops the dependents being
2456 built unless they are needed for another branch of the depen-
2457 dency tree. So given:
2468 the output is always `a', `b1', `b', `x'.
2469 The ordering imposed by .
\b.W
\bWA
\bAI
\bIT
\bT is only relevant for parallel
2472 S
\bSP
\bPE
\bEC
\bCI
\bIA
\bAL
\bL T
\bTA
\bAR
\bRG
\bGE
\bET
\bTS
\bS
2473 Special targets may not be included with other targets, i.e. they must be
2474 the only target specified.
2476 .
\b.B
\bBE
\bEG
\bGI
\bIN
\bN Any command lines attached to this target are executed before
2477 anything else is done.
2479 .
\b.D
\bDE
\bEF
\bFA
\bAU
\bUL
\bLT
\bT
2480 This is sort of a .
\b.U
\bUS
\bSE
\bE rule for any target (that was used only
2481 as a source) that b
\bbm
\bma
\bak
\bke
\be can't figure out any other way to cre-
2482 ate. Only the shell script is used. The .
\b.I
\bIM
\bMP
\bPS
\bSR
\bRC
\bC variable of a
2483 target that inherits .
\b.D
\bDE
\bEF
\bFA
\bAU
\bUL
\bLT
\bT's commands is set to the target's
2486 .
\b.E
\bEN
\bND
\bD Any command lines attached to this target are executed after
2487 everything else is done.
2489 .
\b.E
\bER
\bRR
\bRO
\bOR
\bR Any command lines attached to this target are executed when
2490 another target fails. The .
\b.E
\bER
\bRR
\bRO
\bOR
\bR_
\b_T
\bTA
\bAR
\bRG
\bGE
\bET
\bT variable is set to the
2491 target that failed. See also M
\bMA
\bAK
\bKE
\bE_
\b_P
\bPR
\bRI
\bIN
\bNT
\bT_
\b_V
\bVA
\bAR
\bR_
\b_O
\bON
\bN_
\b_E
\bER
\bRR
\bRO
\bOR
\bR.
2493 .
\b.I
\bIG
\bGN
\bNO
\bOR
\bRE
\bE Mark each of the sources with the .
\b.I
\bIG
\bGN
\bNO
\bOR
\bRE
\bE attribute. If no
2494 sources are specified, this is the equivalent of specifying the
2497 .
\b.I
\bIN
\bNT
\bTE
\bER
\bRR
\bRU
\bUP
\bPT
\bT
2498 If b
\bbm
\bma
\bak
\bke
\be is interrupted, the commands for this target will be
2501 .
\b.M
\bMA
\bAI
\bIN
\bN If no target is specified when b
\bbm
\bma
\bak
\bke
\be is invoked, this target
2504 .
\b.M
\bMA
\bAK
\bKE
\bEF
\bFL
\bLA
\bAG
\bGS
\bS
2505 This target provides a way to specify flags for b
\bbm
\bma
\bak
\bke
\be when the
2506 makefile is used. The flags are as if typed to the shell,
2507 though the -
\b-f
\bf option will have no effect.
2509 .
\b.N
\bNO
\bOP
\bPA
\bAT
\bTH
\bH Apply the .
\b.N
\bNO
\bOP
\bPA
\bAT
\bTH
\bH attribute to any specified sources.
2511 .
\b.N
\bNO
\bOT
\bTP
\bPA
\bAR
\bRA
\bAL
\bLL
\bLE
\bEL
\bL
2512 Disable parallel mode.
2514 .
\b.N
\bNO
\bO_
\b_P
\bPA
\bAR
\bRA
\bAL
\bLL
\bLE
\bEL
\bL
2515 Synonym for .
\b.N
\bNO
\bOT
\bTP
\bPA
\bAR
\bRA
\bAL
\bLL
\bLE
\bEL
\bL, for compatibility with other pmake
2518 .
\b.O
\bOR
\bRD
\bDE
\bER
\bR The named targets are made in sequence. This ordering does not
2519 add targets to the list of targets to be made. Since the depen-
2520 dents of a target do not get built until the target itself could
2521 be built, unless `a' is built by another part of the dependency
2522 graph, the following is a dependency loop:
2527 The ordering imposed by .
\b.O
\bOR
\bRD
\bDE
\bER
\bR is only relevant for parallel
2530 .
\b.P
\bPA
\bAT
\bTH
\bH The sources are directories which are to be searched for files
2531 not found in the current directory. If no sources are speci-
2532 fied, any previously specified directories are deleted. If the
2533 source is the special .
\b.D
\bDO
\bOT
\bTL
\bLA
\bAS
\bST
\bT target, then the current working
2534 directory is searched last.
2536 .
\b.P
\bPH
\bHO
\bON
\bNY
\bY Apply the .
\b.P
\bPH
\bHO
\bON
\bNY
\bY attribute to any specified sources.
2538 .
\b.P
\bPR
\bRE
\bEC
\bCI
\bIO
\bOU
\bUS
\bS
2539 Apply the .
\b.P
\bPR
\bRE
\bEC
\bCI
\bIO
\bOU
\bUS
\bS attribute to any specified sources. If no
2540 sources are specified, the .
\b.P
\bPR
\bRE
\bEC
\bCI
\bIO
\bOU
\bUS
\bS attribute is applied to
2541 every target in the file.
2543 .
\b.S
\bSH
\bHE
\bEL
\bLL
\bL Sets the shell that b
\bbm
\bma
\bak
\bke
\be will use to execute commands. The
2544 sources are a set of _
\bf_
\bi_
\be_
\bl_
\bd_
\b=_
\bv_
\ba_
\bl_
\bu_
\be pairs.
2546 _
\bn_
\ba_
\bm_
\be This is the minimal specification, used to select
2547 one of the builtin shell specs; _
\bs_
\bh, _
\bk_
\bs_
\bh, and _
\bc_
\bs_
\bh.
2549 _
\bp_
\ba_
\bt_
\bh Specifies the path to the shell.
2551 _
\bh_
\ba_
\bs_
\bE_
\br_
\br_
\bC_
\bt_
\bl Indicates whether the shell supports exit on error.
2553 _
\bc_
\bh_
\be_
\bc_
\bk The command to turn on error checking.
2555 _
\bi_
\bg_
\bn_
\bo_
\br_
\be The command to disable error checking.
2557 _
\be_
\bc_
\bh_
\bo The command to turn on echoing of commands executed.
2559 _
\bq_
\bu_
\bi_
\be_
\bt The command to turn off echoing of commands exe-
2562 _
\bf_
\bi_
\bl_
\bt_
\be_
\br The output to filter after issuing the _
\bq_
\bu_
\bi_
\be_
\bt com-
2563 mand. It is typically identical to _
\bq_
\bu_
\bi_
\be_
\bt.
2565 _
\be_
\br_
\br_
\bF_
\bl_
\ba_
\bg The flag to pass the shell to enable error checking.
2567 _
\be_
\bc_
\bh_
\bo_
\bF_
\bl_
\ba_
\bg The flag to pass the shell to enable command echo-
2570 _
\bn_
\be_
\bw_
\bl_
\bi_
\bn_
\be The string literal to pass the shell that results in
2571 a single newline character when used outside of any
2575 .SHELL: name=ksh path=/bin/ksh hasErrCtl=true \
2576 check="set -e" ignore="set +e" \
2577 echo="set -v" quiet="set +v" filter="set +v" \
2578 echoFlag=v errFlag=e newline="'\n'"
2580 .
\b.S
\bSI
\bIL
\bLE
\bEN
\bNT
\bT Apply the .
\b.S
\bSI
\bIL
\bLE
\bEN
\bNT
\bT attribute to any specified sources. If no
2581 sources are specified, the .
\b.S
\bSI
\bIL
\bLE
\bEN
\bNT
\bT attribute is applied to every
2582 command in the file.
2584 .
\b.S
\bSU
\bUF
\bFF
\bFI
\bIX
\bXE
\bES
\bS
2585 Each source specifies a suffix to b
\bbm
\bma
\bak
\bke
\be. If no sources are
2586 specified, any previously specified suffixes are deleted. It
2587 allows the creation of suffix-transformation rules.
2593 cc -o ${.TARGET} -c ${.IMPSRC}
2595 E
\bEN
\bNV
\bVI
\bIR
\bRO
\bON
\bNM
\bME
\bEN
\bNT
\bT
2596 b
\bbm
\bma
\bak
\bke
\be uses the following environment variables, if they exist: MACHINE,
2597 MACHINE_ARCH, MAKE, MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX, MAKESYSPATH,
2600 MAKEOBJDIRPREFIX and MAKEOBJDIR may only be set in the environment or on
2601 the command line to b
\bbm
\bma
\bak
\bke
\be and not as makefile variables; see the descrip-
2602 tion of `_
\b._
\bO_
\bB_
\bJ_
\bD_
\bI_
\bR' for more details.
2604 F
\bFI
\bIL
\bLE
\bES
\bS
2605 .depend list of dependencies
2606 Makefile list of dependencies
2607 makefile list of dependencies
2608 sys.mk system makefile
2609 /usr/share/mk system makefile directory
2611 C
\bCO
\bOM
\bMP
\bPA
\bAT
\bTI
\bIB
\bBI
\bIL
\bLI
\bIT
\bTY
\bY
2612 The basic make syntax is compatible between different versions of make,
2613 however the special variables, variable modifiers and conditionals are
2616 The way that parallel makes are scheduled changed in NetBSD 4.0 so that
2617 .ORDER and .WAIT apply recursively to the dependent nodes. The algo-
2618 rithms used may change again in the future.
2620 The way that .for loop variables are substituted changed after NetBSD 5.0
2621 so that they still appear to be variable expansions. In particular this
2622 stops them being treated as syntax, and removes some obscure problems
2623 using them in .if statements.
2625 Unlike other b
\bbm
\bma
\bak
\bke
\be programs, this implementation by default executes all
2626 commands for a given target using a single shell invocation. This is
2627 done for both efficiency and to simplify error handling in remote command
2628 invocations. Typically this is transparent to the user, unless the tar-
2629 get commands change the current working directory using ``cd'' or
2630 ``chdir''. To be compatible with Makefiles that do this, one can use -
\b-B
\bB
2631 to disable this behavior.
2633 In compatibility mode, each command is run in a separate process. If the
2634 command contains any shell meta characters (`#=|^(){};&<>*?[]:$`\\n') it
2635 will be passed to the shell, otherwise b
\bbm
\bma
\bak
\bke
\be will attempt direct execu-
2638 S
\bSE
\bEE
\bE A
\bAL
\bLS
\bSO
\bO
2641 H
\bHI
\bIS
\bST
\bTO
\bOR
\bRY
\bY
2642 b
\bbm
\bma
\bak
\bke
\be is derived from NetBSD make(1). It uses autoconf to facilitate
2643 portability to other platforms.
2645 A make command appeared in Version 7 AT&T UNIX. This make implementation
2646 is based on Adam De Boor's pmake program which was written for Sprite at
2647 Berkeley. It was designed to be a parallel distributed make running jobs
2648 on different machines using a daemon called ``customs''.
2651 The make syntax is difficult to parse without actually acting of the
2652 data. For instance finding the end of a variable use should involve
2653 scanning each the modifiers using the correct terminator for each field.
2654 In many places make just counts {} and () in order to find the end of a
2657 There is no way of escaping a space character in a filename.
2659 NetBSD 5.1 October 8, 2012 NetBSD 5.1