Lines 1-73
Link Here
|
1 |
BMAKE(1) NetBSD General Commands Manual BMAKE(1) |
1 |
BMAKE(1) FreeBSD General Commands Manual BMAKE(1) |
2 |
|
2 |
|
3 |
NNAAMMEE |
3 |
[1mNAME[0m |
4 |
bbmmaakkee -- maintain program dependencies |
4 |
[1mbmake [22m-- maintain program dependencies |
5 |
|
5 |
|
6 |
SSYYNNOOPPSSIISS |
6 |
[1mSYNOPSIS[0m |
7 |
bbmmaakkee [--BBeeiikkNNnnqqrrssttWWwwXX] [--CC _d_i_r_e_c_t_o_r_y] [--DD _v_a_r_i_a_b_l_e] [--dd _f_l_a_g_s] |
7 |
[1mbmake [22m[[1m-BeikNnqrstWwX[22m] [[1m-C [4m[22mdirectory[24m] [[1m-D [4m[22mvariable[24m] [[1m-d [4m[22mflags[24m] |
8 |
[--ff _m_a_k_e_f_i_l_e] [--II _d_i_r_e_c_t_o_r_y] [--JJ _p_r_i_v_a_t_e] [--jj _m_a_x___j_o_b_s] |
8 |
[[1m-f [4m[22mmakefile[24m] [[1m-I [4m[22mdirectory[24m] [[1m-J [4m[22mprivate[24m] [[1m-j [4m[22mmax_jobs[24m] |
9 |
[--mm _d_i_r_e_c_t_o_r_y] [--TT _f_i_l_e] [--VV _v_a_r_i_a_b_l_e] [--vv _v_a_r_i_a_b_l_e] |
9 |
[[1m-m [4m[22mdirectory[24m] [[1m-T [4m[22mfile[24m] [[1m-V [4m[22mvariable[24m] [[1m-v [4m[22mvariable[24m] |
10 |
[_v_a_r_i_a_b_l_e_=_v_a_l_u_e] [_t_a_r_g_e_t _._._.] |
10 |
[[4mvariable=value[24m] [[4mtarget[24m [4m...[24m] |
11 |
|
11 |
|
12 |
DDEESSCCRRIIPPTTIIOONN |
12 |
[1mDESCRIPTION[0m |
13 |
bbmmaakkee is a program designed to simplify the maintenance of other pro- |
13 |
[1mbmake [22mis 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 |
14 |
grams. Its input is a list of specifications as to the files upon which |
15 |
programs and other files depend. If no --ff _m_a_k_e_f_i_l_e makefile option is |
15 |
programs and other files depend. If no [1m-f [4m[22mmakefile[24m makefile option is |
16 |
given, bbmmaakkee will try to open `_m_a_k_e_f_i_l_e' then `_M_a_k_e_f_i_l_e' in order to find |
16 |
given, [1mbmake [22mwill try to open `[4mmakefile[24m' then `[4mMakefile[24m' in order to find |
17 |
the specifications. If the file `_._d_e_p_e_n_d' exists, it is read (see |
17 |
the specifications. If the file `[4m.depend[24m' exists, it is read (see |
18 |
mkdep(1)). |
18 |
mkdep(1)). |
19 |
|
19 |
|
20 |
This manual page is intended as a reference document only. For a more |
20 |
This manual page is intended as a reference document only. For a more |
21 |
thorough description of bbmmaakkee and makefiles, please refer to _P_M_a_k_e _- _A |
21 |
thorough description of [1mbmake [22mand makefiles, please refer to [4mPMake[24m [4m-[24m [4mA[0m |
22 |
_T_u_t_o_r_i_a_l. |
22 |
[4mTutorial[24m. |
23 |
|
23 |
|
24 |
bbmmaakkee will prepend the contents of the _M_A_K_E_F_L_A_G_S environment variable to |
24 |
[1mbmake [22mwill prepend the contents of the [4mMAKEFLAGS[24m environment variable to |
25 |
the command line arguments before parsing them. |
25 |
the command line arguments before parsing them. |
26 |
|
26 |
|
27 |
The options are as follows: |
27 |
The options are as follows: |
28 |
|
28 |
|
29 |
--BB Try to be backwards compatible by executing a single shell per |
29 |
[1m-B [22mTry to be backwards compatible by executing a single shell per |
30 |
command and by executing the commands to make the sources of a |
30 |
command and by executing the commands to make the sources of a |
31 |
dependency line in sequence. |
31 |
dependency line in sequence. |
32 |
|
32 |
|
33 |
--CC _d_i_r_e_c_t_o_r_y |
33 |
[1m-C [4m[22mdirectory[0m |
34 |
Change to _d_i_r_e_c_t_o_r_y before reading the makefiles or doing any- |
34 |
Change to [4mdirectory[24m before reading the makefiles or doing any- |
35 |
thing else. If multiple --CC options are specified, each is inter- |
35 |
thing else. If multiple [1m-C [22moptions are specified, each is inter- |
36 |
preted relative to the previous one: --CC _/ --CC _e_t_c is equivalent to |
36 |
preted relative to the previous one: [1m-C [4m[22m/[24m [1m-C [4m[22metc[24m is equivalent to |
37 |
--CC _/_e_t_c. |
37 |
[1m-C [4m[22m/etc[24m. |
38 |
|
38 |
|
39 |
--DD _v_a_r_i_a_b_l_e |
39 |
[1m-D [4m[22mvariable[0m |
40 |
Define _v_a_r_i_a_b_l_e to be 1, in the global context. |
40 |
Define [4mvariable[24m to be 1, in the global context. |
41 |
|
41 |
|
42 |
--dd _[_-_]_f_l_a_g_s |
42 |
[1m-d [4m[22m[-]flags[0m |
43 |
Turn on debugging, and specify which portions of bbmmaakkee are to |
43 |
Turn on debugging, and specify which portions of [1mbmake [22mare to |
44 |
print debugging information. Unless the flags are preceded by |
44 |
print debugging information. Unless the flags are preceded by |
45 |
`-' they are added to the _M_A_K_E_F_L_A_G_S environment variable and will |
45 |
`-' they are added to the [4mMAKEFLAGS[24m environment variable and will |
46 |
be processed by any child make processes. By default, debugging |
46 |
be processed by any child make processes. By default, debugging |
47 |
information is printed to standard error, but this can be changed |
47 |
information is printed to standard error, but this can be changed |
48 |
using the _F debugging flag. The debugging output is always |
48 |
using the [4mF[24m debugging flag. The debugging output is always |
49 |
unbuffered; in addition, if debugging is enabled but debugging |
49 |
unbuffered; in addition, if debugging is enabled but debugging |
50 |
output is not directed to standard output, then the standard out- |
50 |
output is not directed to standard output, then the standard out- |
51 |
put is line buffered. _F_l_a_g_s is one or more of the following: |
51 |
put is line buffered. [4mFlags[24m is one or more of the following: |
52 |
|
52 |
|
53 |
_A Print all possible debugging information; equivalent to |
53 |
[4mA[24m Print all possible debugging information; equivalent to |
54 |
specifying all of the debugging flags. |
54 |
specifying all of the debugging flags. |
55 |
|
55 |
|
56 |
_a Print debugging information about archive searching and |
56 |
[4ma[24m Print debugging information about archive searching and |
57 |
caching. |
57 |
caching. |
58 |
|
58 |
|
59 |
_C Print debugging information about current working direc- |
59 |
[4mC[24m Print debugging information about current working direc- |
60 |
tory. |
60 |
tory. |
61 |
|
61 |
|
62 |
_c Print debugging information about conditional evaluation. |
62 |
[4mc[24m Print debugging information about conditional evaluation. |
63 |
|
63 |
|
64 |
_d Print debugging information about directory searching and |
64 |
[4md[24m Print debugging information about directory searching and |
65 |
caching. |
65 |
caching. |
66 |
|
66 |
|
67 |
_e Print debugging information about failed commands and |
67 |
[4me[24m Print debugging information about failed commands and |
68 |
targets. |
68 |
targets. |
69 |
|
69 |
|
70 |
_F[++]_f_i_l_e_n_a_m_e |
70 |
[4mF[24m[[1m+[22m][4mfilename[0m |
71 |
Specify where debugging output is written. This must be |
71 |
Specify where debugging output is written. This must be |
72 |
the last flag, because it consumes the remainder of the |
72 |
the last flag, because it consumes the remainder of the |
73 |
argument. If the character immediately after the `F' |
73 |
argument. If the character immediately after the `F' |
Lines 80-159
Link Here
|
80 |
named file. If the file name ends `.%d' then the `%d' is |
80 |
named file. If the file name ends `.%d' then the `%d' is |
81 |
replaced by the pid. |
81 |
replaced by the pid. |
82 |
|
82 |
|
83 |
_f Print debugging information about loop evaluation. |
83 |
[4mf[24m Print debugging information about loop evaluation. |
84 |
|
84 |
|
85 |
_g_1 Print the input graph before making anything. |
85 |
[4mg1[24m Print the input graph before making anything. |
86 |
|
86 |
|
87 |
_g_2 Print the input graph after making everything, or before |
87 |
[4mg2[24m Print the input graph after making everything, or before |
88 |
exiting on error. |
88 |
exiting on error. |
89 |
|
89 |
|
90 |
_g_3 Print the input graph before exiting on error. |
90 |
[4mg3[24m Print the input graph before exiting on error. |
91 |
|
91 |
|
92 |
_j Print debugging information about running multiple |
92 |
[4mj[24m Print debugging information about running multiple |
93 |
shells. |
93 |
shells. |
94 |
|
94 |
|
95 |
_l Print commands in Makefiles regardless of whether or not |
95 |
[4ml[24m Print commands in Makefiles regardless of whether or not |
96 |
they are prefixed by `@' or other "quiet" flags. Also |
96 |
they are prefixed by `@' or other "quiet" flags. Also |
97 |
known as "loud" behavior. |
97 |
known as "loud" behavior. |
98 |
|
98 |
|
99 |
_M Print debugging information about "meta" mode decisions |
99 |
[4mM[24m Print debugging information about "meta" mode decisions |
100 |
about targets. |
100 |
about targets. |
101 |
|
101 |
|
102 |
_m Print debugging information about making targets, includ- |
102 |
[4mm[24m Print debugging information about making targets, includ- |
103 |
ing modification dates. |
103 |
ing modification dates. |
104 |
|
104 |
|
105 |
_n Don't delete the temporary command scripts created when |
105 |
[4mn[24m Don't delete the temporary command scripts created when |
106 |
running commands. These temporary scripts are created in |
106 |
running commands. These temporary scripts are created in |
107 |
the directory referred to by the TMPDIR environment vari- |
107 |
the directory referred to by the TMPDIR environment vari- |
108 |
able, or in _/_t_m_p if TMPDIR is unset or set to the empty |
108 |
able, or in [4m/tmp[24m if TMPDIR is unset or set to the empty |
109 |
string. The temporary scripts are created by mkstemp(3), |
109 |
string. The temporary scripts are created by mkstemp(3), |
110 |
and have names of the form _m_a_k_e_X_X_X_X_X_X. _N_O_T_E: This can |
110 |
and have names of the form [4mmakeXXXXXX[24m. [4mNOTE[24m: This can |
111 |
create many files in TMPDIR or _/_t_m_p, so use with care. |
111 |
create many files in TMPDIR or [4m/tmp[24m, so use with care. |
112 |
|
112 |
|
113 |
_p Print debugging information about makefile parsing. |
113 |
[4mp[24m Print debugging information about makefile parsing. |
114 |
|
114 |
|
115 |
_s Print debugging information about suffix-transformation |
115 |
[4ms[24m Print debugging information about suffix-transformation |
116 |
rules. |
116 |
rules. |
117 |
|
117 |
|
118 |
_t Print debugging information about target list mainte- |
118 |
[4mt[24m Print debugging information about target list mainte- |
119 |
nance. |
119 |
nance. |
120 |
|
120 |
|
121 |
_V Force the --VV option to print raw values of variables, |
121 |
[4mV[24m Force the [1m-V [22moption to print raw values of variables, |
122 |
overriding the default behavior set via |
122 |
overriding the default behavior set via |
123 |
_._M_A_K_E_._E_X_P_A_N_D___V_A_R_I_A_B_L_E_S. |
123 |
[4m.MAKE.EXPAND_VARIABLES[24m. |
124 |
|
124 |
|
125 |
_v Print debugging information about variable assignment. |
125 |
[4mv[24m Print debugging information about variable assignment. |
126 |
|
126 |
|
127 |
_x Run shell commands with --xx so the actual commands are |
127 |
[4mx[24m Run shell commands with [1m-x [22mso the actual commands are |
128 |
printed as they are executed. |
128 |
printed as they are executed. |
129 |
|
129 |
|
130 |
--ee Specify that environment variables override macro assignments |
130 |
[1m-e [22mSpecify that environment variables override macro assignments |
131 |
within makefiles. |
131 |
within makefiles. |
132 |
|
132 |
|
133 |
--ff _m_a_k_e_f_i_l_e |
133 |
[1m-f [4m[22mmakefile[0m |
134 |
Specify a makefile to read instead of the default `_m_a_k_e_f_i_l_e'. If |
134 |
Specify a makefile to read instead of the default `[4mmakefile[24m'. If |
135 |
_m_a_k_e_f_i_l_e is `--', standard input is read. Multiple makefiles may |
135 |
[4mmakefile[24m is `[1m-[22m', standard input is read. Multiple makefiles may |
136 |
be specified, and are read in the order specified. |
136 |
be specified, and are read in the order specified. |
137 |
|
137 |
|
138 |
--II _d_i_r_e_c_t_o_r_y |
138 |
[1m-I [4m[22mdirectory[0m |
139 |
Specify a directory in which to search for makefiles and included |
139 |
Specify a directory in which to search for makefiles and included |
140 |
makefiles. The system makefile directory (or directories, see |
140 |
makefiles. The system makefile directory (or directories, see |
141 |
the --mm option) is automatically included as part of this list. |
141 |
the [1m-m [22moption) is automatically included as part of this list. |
142 |
|
142 |
|
143 |
--ii Ignore non-zero exit of shell commands in the makefile. Equiva- |
143 |
[1m-i [22mIgnore non-zero exit of shell commands in the makefile. Equiva- |
144 |
lent to specifying `--' before each command line in the makefile. |
144 |
lent to specifying `[1m-[22m' before each command line in the makefile. |
145 |
|
145 |
|
146 |
--JJ _p_r_i_v_a_t_e |
146 |
[1m-J [4m[22mprivate[0m |
147 |
This option should _n_o_t be specified by the user. |
147 |
This option should [4mnot[24m be specified by the user. |
148 |
|
148 |
|
149 |
When the _j option is in use in a recursive build, this option is |
149 |
When the [4mj[24m option is in use in a recursive build, this option is |
150 |
passed by a make to child makes to allow all the make processes |
150 |
passed by a make to child makes to allow all the make processes |
151 |
in the build to cooperate to avoid overloading the system. |
151 |
in the build to cooperate to avoid overloading the system. |
152 |
|
152 |
|
153 |
--jj _m_a_x___j_o_b_s |
153 |
[1m-j [4m[22mmax_jobs[0m |
154 |
Specify the maximum number of jobs that bbmmaakkee may have running at |
154 |
Specify the maximum number of jobs that [1mbmake [22mmay have running at |
155 |
any one time. The value is saved in _._M_A_K_E_._J_O_B_S. Turns compati- |
155 |
any one time. The value is saved in [4m.MAKE.JOBS[24m. Turns compati- |
156 |
bility mode off, unless the _B flag is also specified. When com- |
156 |
bility mode off, unless the [4mB[24m flag is also specified. When com- |
157 |
patibility mode is off, all commands associated with a target are |
157 |
patibility mode is off, all commands associated with a target are |
158 |
executed in a single shell invocation as opposed to the tradi- |
158 |
executed in a single shell invocation as opposed to the tradi- |
159 |
tional one shell invocation per line. This can break traditional |
159 |
tional one shell invocation per line. This can break traditional |
Lines 162-251
Link Here
|
162 |
It is more efficient to correct the scripts rather than turn |
162 |
It is more efficient to correct the scripts rather than turn |
163 |
backwards compatibility on. |
163 |
backwards compatibility on. |
164 |
|
164 |
|
165 |
--kk Continue processing after errors are encountered, but only on |
165 |
[1m-k [22mContinue processing after errors are encountered, but only on |
166 |
those targets that do not depend on the target whose creation |
166 |
those targets that do not depend on the target whose creation |
167 |
caused the error. |
167 |
caused the error. |
168 |
|
168 |
|
169 |
--mm _d_i_r_e_c_t_o_r_y |
169 |
[1m-m [4m[22mdirectory[0m |
170 |
Specify a directory in which to search for sys.mk and makefiles |
170 |
Specify a directory in which to search for sys.mk and makefiles |
171 |
included via the <_f_i_l_e>-style include statement. The --mm option |
171 |
included via the <[4mfile[24m>-style include statement. The [1m-m [22moption |
172 |
can be used multiple times to form a search path. This path will |
172 |
can be used multiple times to form a search path. This path will |
173 |
override the default system include path: /usr/share/mk. Fur- |
173 |
override the default system include path: /usr/share/mk. Fur- |
174 |
thermore the system include path will be appended to the search |
174 |
thermore the system include path will be appended to the search |
175 |
path used for "_f_i_l_e"-style include statements (see the --II |
175 |
path used for "[4mfile[24m"-style include statements (see the [1m-I[0m |
176 |
option). |
176 |
option). |
177 |
|
177 |
|
178 |
If a file or directory name in the --mm argument (or the |
178 |
If a file or directory name in the [1m-m [22margument (or the |
179 |
MAKESYSPATH environment variable) starts with the string ".../" |
179 |
MAKESYSPATH environment variable) starts with the string ".../" |
180 |
then bbmmaakkee will search for the specified file or directory named |
180 |
then [1mbmake [22mwill search for the specified file or directory named |
181 |
in the remaining part of the argument string. The search starts |
181 |
in the remaining part of the argument string. The search starts |
182 |
with the current directory of the Makefile and then works upward |
182 |
with the current directory of the Makefile and then works upward |
183 |
towards the root of the file system. If the search is success- |
183 |
towards the root of the file system. If the search is success- |
184 |
ful, then the resulting directory replaces the ".../" specifica- |
184 |
ful, then the resulting directory replaces the ".../" specifica- |
185 |
tion in the --mm argument. If used, this feature allows bbmmaakkee to |
185 |
tion in the [1m-m [22margument. If used, this feature allows [1mbmake [22mto |
186 |
easily search in the current source tree for customized sys.mk |
186 |
easily search in the current source tree for customized sys.mk |
187 |
files (e.g., by using ".../mk/sys.mk" as an argument). |
187 |
files (e.g., by using ".../mk/sys.mk" as an argument). |
188 |
|
188 |
|
189 |
--nn Display the commands that would have been executed, but do not |
189 |
[1m-n [22mDisplay the commands that would have been executed, but do not |
190 |
actually execute them unless the target depends on the .MAKE spe- |
190 |
actually execute them unless the target depends on the .MAKE spe- |
191 |
cial source (see below). |
191 |
cial source (see below). |
192 |
|
192 |
|
193 |
--NN Display the commands which would have been executed, but do not |
193 |
[1m-N [22mDisplay the commands which would have been executed, but do not |
194 |
actually execute any of them; useful for debugging top-level |
194 |
actually execute any of them; useful for debugging top-level |
195 |
makefiles without descending into subdirectories. |
195 |
makefiles without descending into subdirectories. |
196 |
|
196 |
|
197 |
--qq Do not execute any commands, but exit 0 if the specified targets |
197 |
[1m-q [22mDo not execute any commands, but exit 0 if the specified targets |
198 |
are up-to-date and 1, otherwise. |
198 |
are up-to-date and 1, otherwise. |
199 |
|
199 |
|
200 |
--rr Do not use the built-in rules specified in the system makefile. |
200 |
[1m-r [22mDo not use the built-in rules specified in the system makefile. |
201 |
|
201 |
|
202 |
--ss Do not echo any commands as they are executed. Equivalent to |
202 |
[1m-s [22mDo not echo any commands as they are executed. Equivalent to |
203 |
specifying `@@' before each command line in the makefile. |
203 |
specifying `[1m@[22m' before each command line in the makefile. |
204 |
|
204 |
|
205 |
--TT _t_r_a_c_e_f_i_l_e |
205 |
[1m-T [4m[22mtracefile[0m |
206 |
When used with the --jj flag, append a trace record to _t_r_a_c_e_f_i_l_e |
206 |
When used with the [1m-j [22mflag, append a trace record to [4mtracefile[0m |
207 |
for each job started and completed. |
207 |
for each job started and completed. |
208 |
|
208 |
|
209 |
--tt Rather than re-building a target as specified in the makefile, |
209 |
[1m-t [22mRather than re-building a target as specified in the makefile, |
210 |
create it or update its modification time to make it appear up- |
210 |
create it or update its modification time to make it appear up- |
211 |
to-date. |
211 |
to-date. |
212 |
|
212 |
|
213 |
--VV _v_a_r_i_a_b_l_e |
213 |
[1m-V [4m[22mvariable[0m |
214 |
Print the value of _v_a_r_i_a_b_l_e. Do not build any targets. Multiple |
214 |
Print the value of [4mvariable[24m. Do not build any targets. Multiple |
215 |
instances of this option may be specified; the variables will be |
215 |
instances of this option may be specified; the variables will be |
216 |
printed one per line, with a blank line for each null or unde- |
216 |
printed one per line, with a blank line for each null or unde- |
217 |
fined variable. The value printed is extracted from the global |
217 |
fined variable. The value printed is extracted from the global |
218 |
context after all makefiles have been read. By default, the raw |
218 |
context after all makefiles have been read. By default, the raw |
219 |
variable contents (which may include additional unexpanded vari- |
219 |
variable contents (which may include additional unexpanded vari- |
220 |
able references) are shown. If _v_a_r_i_a_b_l_e contains a `$' then the |
220 |
able references) are shown. If [4mvariable[24m contains a `$' then the |
221 |
value will be recursively expanded to its complete resultant text |
221 |
value will be recursively expanded to its complete resultant text |
222 |
before printing. The expanded value will also be printed if |
222 |
before printing. The expanded value will also be printed if |
223 |
_._M_A_K_E_._E_X_P_A_N_D___V_A_R_I_A_B_L_E_S is set to true and the --ddVV option has not |
223 |
[4m.MAKE.EXPAND_VARIABLES[24m is set to true and the [1m-dV [22moption has not |
224 |
been used to override it. Note that loop-local and target-local |
224 |
been used to override it. Note that loop-local and target-local |
225 |
variables, as well as values taken temporarily by global vari- |
225 |
variables, as well as values taken temporarily by global vari- |
226 |
ables during makefile processing, are not accessible via this |
226 |
ables during makefile processing, are not accessible via this |
227 |
option. The --ddvv debug mode can be used to see these at the cost |
227 |
option. The [1m-dv [22mdebug mode can be used to see these at the cost |
228 |
of generating substantial extraneous output. |
228 |
of generating substantial extraneous output. |
229 |
|
229 |
|
230 |
--vv _v_a_r_i_a_b_l_e |
230 |
[1m-v [4m[22mvariable[0m |
231 |
Like --VV but the variable is always expanded to its complete |
231 |
Like [1m-V [22mbut the variable is always expanded to its complete |
232 |
value. |
232 |
value. |
233 |
|
233 |
|
234 |
--WW Treat any warnings during makefile parsing as errors. |
234 |
[1m-W [22mTreat any warnings during makefile parsing as errors. |
235 |
|
235 |
|
236 |
--ww Print entering and leaving directory messages, pre and post pro- |
236 |
[1m-w [22mPrint entering and leaving directory messages, pre and post pro- |
237 |
cessing. |
237 |
cessing. |
238 |
|
238 |
|
239 |
--XX Don't export variables passed on the command line to the environ- |
239 |
[1m-X [22mDon't export variables passed on the command line to the environ- |
240 |
ment individually. Variables passed on the command line are |
240 |
ment individually. Variables passed on the command line are |
241 |
still exported via the _M_A_K_E_F_L_A_G_S environment variable. This |
241 |
still exported via the [4mMAKEFLAGS[24m environment variable. This |
242 |
option may be useful on systems which have a small limit on the |
242 |
option may be useful on systems which have a small limit on the |
243 |
size of command arguments. |
243 |
size of command arguments. |
244 |
|
244 |
|
245 |
_v_a_r_i_a_b_l_e_=_v_a_l_u_e |
245 |
[4mvariable=value[0m |
246 |
Set the value of the variable _v_a_r_i_a_b_l_e to _v_a_l_u_e. Normally, all |
246 |
Set the value of the variable [4mvariable[24m to [4mvalue[24m. Normally, all |
247 |
values passed on the command line are also exported to sub-makes |
247 |
values passed on the command line are also exported to sub-makes |
248 |
in the environment. The --XX flag disables this behavior. Vari- |
248 |
in the environment. The [1m-X [22mflag disables this behavior. Vari- |
249 |
able assignments should follow options for POSIX compatibility |
249 |
able assignments should follow options for POSIX compatibility |
250 |
but no ordering is enforced. |
250 |
but no ordering is enforced. |
251 |
|
251 |
|
Lines 257-263
Link Here
|
257 |
them with a backslash (`\'). The trailing newline character and initial |
257 |
them with a backslash (`\'). The trailing newline character and initial |
258 |
whitespace on the following line are compressed into a single space. |
258 |
whitespace on the following line are compressed into a single space. |
259 |
|
259 |
|
260 |
FFIILLEE DDEEPPEENNDDEENNCCYY SSPPEECCIIFFIICCAATTIIOONNSS |
260 |
[1mFILE DEPENDENCY SPECIFICATIONS[0m |
261 |
Dependency lines consist of one or more targets, an operator, and zero or |
261 |
Dependency lines consist of one or more targets, an operator, and zero or |
262 |
more sources. This creates a relationship where the targets ``depend'' |
262 |
more sources. This creates a relationship where the targets ``depend'' |
263 |
on the sources and are usually created from them. The exact relationship |
263 |
on the sources and are usually created from them. The exact relationship |
Lines 264-284
Link Here
|
264 |
between the target and the source is determined by the operator that sep- |
264 |
between the target and the source is determined by the operator that sep- |
265 |
arates them. The three operators are as follows: |
265 |
arates them. The three operators are as follows: |
266 |
|
266 |
|
267 |
:: A target is considered out-of-date if its modification time is less |
267 |
[1m: [22mA target is considered out-of-date if its modification time is less |
268 |
than those of any of its sources. Sources for a target accumulate |
268 |
than those of any of its sources. Sources for a target accumulate |
269 |
over dependency lines when this operator is used. The target is |
269 |
over dependency lines when this operator is used. The target is |
270 |
removed if bbmmaakkee is interrupted. |
270 |
removed if [1mbmake [22mis interrupted. |
271 |
|
271 |
|
272 |
!! Targets are always re-created, but not until all sources have been |
272 |
[1m! [22mTargets are always re-created, but not until all sources have been |
273 |
examined and re-created as necessary. Sources for a target accumu- |
273 |
examined and re-created as necessary. Sources for a target accumu- |
274 |
late over dependency lines when this operator is used. The target |
274 |
late over dependency lines when this operator is used. The target |
275 |
is removed if bbmmaakkee is interrupted. |
275 |
is removed if [1mbmake [22mis interrupted. |
276 |
|
276 |
|
277 |
:::: If no sources are specified, the target is always re-created. Oth- |
277 |
[1m:: [22mIf no sources are specified, the target is always re-created. Oth- |
278 |
erwise, a target is considered out-of-date if any of its sources |
278 |
erwise, a target is considered out-of-date if any of its sources |
279 |
has been modified more recently than the target. Sources for a |
279 |
has been modified more recently than the target. Sources for a |
280 |
target do not accumulate over dependency lines when this operator |
280 |
target do not accumulate over dependency lines when this operator |
281 |
is used. The target will not be removed if bbmmaakkee is interrupted. |
281 |
is used. The target will not be removed if [1mbmake [22mis interrupted. |
282 |
|
282 |
|
283 |
Targets and sources may contain the shell wildcard values `?', `*', `[]', |
283 |
Targets and sources may contain the shell wildcard values `?', `*', `[]', |
284 |
and `{}'. The values `?', `*', and `[]' may only be used as part of the |
284 |
and `{}'. The values `?', `*', and `[]' may only be used as part of the |
Lines 287-323
Link Here
|
287 |
existing files. Expansion is in directory order, not alphabetically as |
287 |
existing files. Expansion is in directory order, not alphabetically as |
288 |
done in the shell. |
288 |
done in the shell. |
289 |
|
289 |
|
290 |
SSHHEELLLL CCOOMMMMAANNDDSS |
290 |
[1mSHELL COMMANDS[0m |
291 |
Each target may have associated with it one or more lines of shell com- |
291 |
Each target may have associated with it one or more lines of shell com- |
292 |
mands, normally used to create the target. Each of the lines in this |
292 |
mands, normally used to create the target. Each of the lines in this |
293 |
script _m_u_s_t be preceded by a tab. (For historical reasons, spaces are |
293 |
script [4mmust[24m be preceded by a tab. (For historical reasons, spaces are |
294 |
not accepted.) While targets can appear in many dependency lines if |
294 |
not accepted.) While targets can appear in many dependency lines if |
295 |
desired, by default only one of these rules may be followed by a creation |
295 |
desired, by default only one of these rules may be followed by a creation |
296 |
script. If the `::::' operator is used, however, all rules may include |
296 |
script. If the `[1m::[22m' operator is used, however, all rules may include |
297 |
scripts and the scripts are executed in the order found. |
297 |
scripts and the scripts are executed in the order found. |
298 |
|
298 |
|
299 |
Each line is treated as a separate shell command, unless the end of line |
299 |
Each line is treated as a separate shell command, unless the end of line |
300 |
is escaped with a backslash (`\') in which case that line and the next |
300 |
is escaped with a backslash (`\') in which case that line and the next |
301 |
are combined. If the first characters of the command are any combination |
301 |
are combined. If the first characters of the command are any combination |
302 |
of `@@', `++', or `--', the command is treated specially. A `@@' causes the |
302 |
of `[1m@[22m', `[1m+[22m', or `[1m-[22m', the command is treated specially. A `[1m@[22m' causes the |
303 |
command not to be echoed before it is executed. A `++' causes the command |
303 |
command not to be echoed before it is executed. A `[1m+[22m' causes the command |
304 |
to be executed even when --nn is given. This is similar to the effect of |
304 |
to be executed even when [1m-n [22mis given. This is similar to the effect of |
305 |
the .MAKE special source, except that the effect can be limited to a sin- |
305 |
the .MAKE special source, except that the effect can be limited to a sin- |
306 |
gle line of a script. A `--' in compatibility mode causes any non-zero |
306 |
gle line of a script. A `[1m-[22m' in compatibility mode causes any non-zero |
307 |
exit status of the command line to be ignored. |
307 |
exit status of the command line to be ignored. |
308 |
|
308 |
|
309 |
When bbmmaakkee is run in jobs mode with --jj _m_a_x___j_o_b_s, the entire script for |
309 |
When [1mbmake [22mis run in jobs mode with [1m-j [4m[22mmax_jobs[24m, the entire script for |
310 |
the target is fed to a single instance of the shell. In compatibility |
310 |
the target is fed to a single instance of the shell. In compatibility |
311 |
(non-jobs) mode, each command is run in a separate process. If the com- |
311 |
(non-jobs) mode, each command is run in a separate process. If the com- |
312 |
mand contains any shell meta characters (`#=|^(){};&<>*?[]:$`\\n') it |
312 |
mand contains any shell meta characters (`#=|^(){};&<>*?[]:$`\\n') it |
313 |
will be passed to the shell; otherwise bbmmaakkee will attempt direct execu- |
313 |
will be passed to the shell; otherwise [1mbmake [22mwill attempt direct execu- |
314 |
tion. If a line starts with `--' and the shell has ErrCtl enabled then |
314 |
tion. If a line starts with `[1m-[22m' and the shell has ErrCtl enabled then |
315 |
failure of the command line will be ignored as in compatibility mode. |
315 |
failure of the command line will be ignored as in compatibility mode. |
316 |
Otherwise `--' affects the entire job; the script will stop at the first |
316 |
Otherwise `[1m-[22m' affects the entire job; the script will stop at the first |
317 |
command line that fails, but the target will not be deemed to have |
317 |
command line that fails, but the target will not be deemed to have |
318 |
failed. |
318 |
failed. |
319 |
|
319 |
|
320 |
Makefiles should be written so that the mode of bbmmaakkee operation does not |
320 |
Makefiles should be written so that the mode of [1mbmake [22moperation does not |
321 |
change their behavior. For example, any command which needs to use |
321 |
change their behavior. For example, any command which needs to use |
322 |
``cd'' or ``chdir'' without potentially changing the directory for subse- |
322 |
``cd'' or ``chdir'' without potentially changing the directory for subse- |
323 |
quent commands should be put in parentheses so it executes in a subshell. |
323 |
quent commands should be put in parentheses so it executes in a subshell. |
Lines 334-368
Link Here
|
334 |
(cd ${.CURDIR} && ${MAKE} $@); \ |
334 |
(cd ${.CURDIR} && ${MAKE} $@); \ |
335 |
echo Back in `pwd` |
335 |
echo Back in `pwd` |
336 |
|
336 |
|
337 |
Since bbmmaakkee will chdir(2) to `_._O_B_J_D_I_R' before executing any targets, each |
337 |
Since [1mbmake [22mwill chdir(2) to `[4m.OBJDIR[24m' before executing any targets, each |
338 |
child process starts with that as its current working directory. |
338 |
child process starts with that as its current working directory. |
339 |
|
339 |
|
340 |
VVAARRIIAABBLLEE AASSSSIIGGNNMMEENNTTSS |
340 |
[1mVARIABLE ASSIGNMENTS[0m |
341 |
Variables in make are much like variables in the shell, and, by tradi- |
341 |
Variables in make are much like variables in the shell, and, by tradi- |
342 |
tion, consist of all upper-case letters. |
342 |
tion, consist of all upper-case letters. |
343 |
|
343 |
|
344 |
VVaarriiaabbllee aassssiiggnnmmeenntt mmooddiiffiieerrss |
344 |
[1mVariable assignment modifiers[0m |
345 |
The five operators that can be used to assign values to variables are as |
345 |
The five operators that can be used to assign values to variables are as |
346 |
follows: |
346 |
follows: |
347 |
|
347 |
|
348 |
== Assign the value to the variable. Any previous value is overrid- |
348 |
[1m= [22mAssign the value to the variable. Any previous value is overrid- |
349 |
den. |
349 |
den. |
350 |
|
350 |
|
351 |
++== Append the value to the current value of the variable. |
351 |
[1m+= [22mAppend the value to the current value of the variable. |
352 |
|
352 |
|
353 |
??== Assign the value to the variable if it is not already defined. |
353 |
[1m?= [22mAssign the value to the variable if it is not already defined. |
354 |
|
354 |
|
355 |
::== Assign with expansion, i.e. expand the value before assigning it |
355 |
[1m:= [22mAssign with expansion, i.e. expand the value before assigning it |
356 |
to the variable. Normally, expansion is not done until the vari- |
356 |
to the variable. Normally, expansion is not done until the vari- |
357 |
able is referenced. _N_O_T_E: References to undefined variables are |
357 |
able is referenced. [4mNOTE[24m: References to undefined variables are |
358 |
_n_o_t expanded. This can cause problems when variable modifiers |
358 |
[4mnot[24m expanded. This can cause problems when variable modifiers |
359 |
are used. |
359 |
are used. |
360 |
|
360 |
|
361 |
!!== Expand the value and pass it to the shell for execution and |
361 |
[1m!= [22mExpand the value and pass it to the shell for execution and |
362 |
assign the result to the variable. Any newlines in the result |
362 |
assign the result to the variable. Any newlines in the result |
363 |
are replaced with spaces. |
363 |
are replaced with spaces. |
364 |
|
364 |
|
365 |
Any white-space before the assigned _v_a_l_u_e is removed; if the value is |
365 |
Any white-space before the assigned [4mvalue[24m is removed; if the value is |
366 |
being appended, a single space is inserted between the previous contents |
366 |
being appended, a single space is inserted between the previous contents |
367 |
of the variable and the appended value. |
367 |
of the variable and the appended value. |
368 |
|
368 |
|
Lines 412-423
Link Here
|
412 |
${b} contains ``${j} ${j} ${j}'' which expands to ``3 3 3'' since |
412 |
${b} contains ``${j} ${j} ${j}'' which expands to ``3 3 3'' since |
413 |
after the loop completes ${j} contains ``3''. |
413 |
after the loop completes ${j} contains ``3''. |
414 |
|
414 |
|
415 |
VVaarriiaabbllee ccllaasssseess |
415 |
[1mVariable classes[0m |
416 |
The four different classes of variables (in order of increasing prece- |
416 |
The four different classes of variables (in order of increasing prece- |
417 |
dence) are: |
417 |
dence) are: |
418 |
|
418 |
|
419 |
Environment variables |
419 |
Environment variables |
420 |
Variables defined as part of bbmmaakkee's environment. |
420 |
Variables defined as part of [1mbmake[22m's environment. |
421 |
|
421 |
|
422 |
Global variables |
422 |
Global variables |
423 |
Variables defined in the makefile or in included makefiles. |
423 |
Variables defined in the makefile or in included makefiles. |
Lines 432-522
Link Here
|
432 |
target to target. It is not currently possible to define new local vari- |
432 |
target to target. It is not currently possible to define new local vari- |
433 |
ables. The seven local variables are as follows: |
433 |
ables. The seven local variables are as follows: |
434 |
|
434 |
|
435 |
_._A_L_L_S_R_C The list of all sources for this target; also known as |
435 |
[4m.ALLSRC[24m The list of all sources for this target; also known as |
436 |
`_>'. |
436 |
`[4m>[24m'. |
437 |
|
437 |
|
438 |
_._A_R_C_H_I_V_E The name of the archive file; also known as `_!'. |
438 |
[4m.ARCHIVE[24m The name of the archive file; also known as `[4m![24m'. |
439 |
|
439 |
|
440 |
_._I_M_P_S_R_C In suffix-transformation rules, the name/path of the |
440 |
[4m.IMPSRC[24m In suffix-transformation rules, the name/path of the |
441 |
source from which the target is to be transformed (the |
441 |
source from which the target is to be transformed (the |
442 |
``implied'' source); also known as `_<'. It is not |
442 |
``implied'' source); also known as `[4m<[24m'. It is not |
443 |
defined in explicit rules. |
443 |
defined in explicit rules. |
444 |
|
444 |
|
445 |
_._M_E_M_B_E_R The name of the archive member; also known as `_%'. |
445 |
[4m.MEMBER[24m The name of the archive member; also known as `[4m%[24m'. |
446 |
|
446 |
|
447 |
_._O_O_D_A_T_E The list of sources for this target that were deemed out- |
447 |
[4m.OODATE[24m The list of sources for this target that were deemed out- |
448 |
of-date; also known as `_?'. |
448 |
of-date; also known as `[4m?[24m'. |
449 |
|
449 |
|
450 |
_._P_R_E_F_I_X The file prefix of the target, containing only the file |
450 |
[4m.PREFIX[24m The file prefix of the target, containing only the file |
451 |
portion, no suffix or preceding directory components; |
451 |
portion, no suffix or preceding directory components; |
452 |
also known as `_*'. The suffix must be one of the known |
452 |
also known as `[4m*[24m'. The suffix must be one of the known |
453 |
suffixes declared with ..SSUUFFFFIIXXEESS or it will not be recog- |
453 |
suffixes declared with [1m.SUFFIXES [22mor it will not be recog- |
454 |
nized. |
454 |
nized. |
455 |
|
455 |
|
456 |
_._T_A_R_G_E_T The name of the target; also known as `_@'. For compati- |
456 |
[4m.TARGET[24m The name of the target; also known as `[4m@[24m'. For compati- |
457 |
bility with other makes this is an alias for ..AARRCCHHIIVVEE in |
457 |
bility with other makes this is an alias for [1m.ARCHIVE [22min |
458 |
archive member rules. |
458 |
archive member rules. |
459 |
|
459 |
|
460 |
The shorter forms (`_>', `_!', `_<', `_%', `_?', `_*', and `_@') are permitted |
460 |
The shorter forms (`[4m>[24m', `[4m![24m', `[4m<[24m', `[4m%[24m', `[4m?[24m', `[4m*[24m', and `[4m@[24m') are permitted |
461 |
for backward compatibility with historical makefiles and legacy POSIX |
461 |
for backward compatibility with historical makefiles and legacy POSIX |
462 |
make and are not recommended. |
462 |
make and are not recommended. |
463 |
|
463 |
|
464 |
Variants of these variables with the punctuation followed immediately by |
464 |
Variants of these variables with the punctuation followed immediately by |
465 |
`D' or `F', e.g. `_$_(_@_D_)', are legacy forms equivalent to using the `:H' |
465 |
`D' or `F', e.g. `[4m$(@D)[24m', are legacy forms equivalent to using the `:H' |
466 |
and `:T' modifiers. These forms are accepted for compatibility with AT&T |
466 |
and `:T' modifiers. These forms are accepted for compatibility with AT&T |
467 |
System V UNIX makefiles and POSIX but are not recommended. |
467 |
System V UNIX makefiles and POSIX but are not recommended. |
468 |
|
468 |
|
469 |
Four of the local variables may be used in sources on dependency lines |
469 |
Four of the local variables may be used in sources on dependency lines |
470 |
because they expand to the proper value for each target on the line. |
470 |
because they expand to the proper value for each target on the line. |
471 |
These variables are `_._T_A_R_G_E_T', `_._P_R_E_F_I_X', `_._A_R_C_H_I_V_E', and `_._M_E_M_B_E_R'. |
471 |
These variables are `[4m.TARGET[24m', `[4m.PREFIX[24m', `[4m.ARCHIVE[24m', and `[4m.MEMBER[24m'. |
472 |
|
472 |
|
473 |
AAddddiittiioonnaall bbuuiilltt--iinn vvaarriiaabblleess |
473 |
[1mAdditional built-in variables[0m |
474 |
In addition, bbmmaakkee sets or knows about the following variables: |
474 |
In addition, [1mbmake [22msets or knows about the following variables: |
475 |
|
475 |
|
476 |
_$ A single dollar sign `$', i.e. `$$' expands to a single |
476 |
[4m$[24m A single dollar sign `$', i.e. `$$' expands to a single |
477 |
dollar sign. |
477 |
dollar sign. |
478 |
|
478 |
|
479 |
_._A_L_L_T_A_R_G_E_T_S The list of all targets encountered in the Makefile. If |
479 |
[4m.ALLTARGETS[24m The list of all targets encountered in the Makefile. If |
480 |
evaluated during Makefile parsing, lists only those tar- |
480 |
evaluated during Makefile parsing, lists only those tar- |
481 |
gets encountered thus far. |
481 |
gets encountered thus far. |
482 |
|
482 |
|
483 |
_._C_U_R_D_I_R A path to the directory where bbmmaakkee was executed. Refer |
483 |
[4m.CURDIR[24m A path to the directory where [1mbmake [22mwas executed. Refer |
484 |
to the description of `PWD' for more details. |
484 |
to the description of `PWD' for more details. |
485 |
|
485 |
|
486 |
_._I_N_C_L_U_D_E_D_F_R_O_M_D_I_R |
486 |
[4m.INCLUDEDFROMDIR[0m |
487 |
The directory of the file this Makefile was included |
487 |
The directory of the file this Makefile was included |
488 |
from. |
488 |
from. |
489 |
|
489 |
|
490 |
_._I_N_C_L_U_D_E_D_F_R_O_M_F_I_L_E |
490 |
[4m.INCLUDEDFROMFILE[0m |
491 |
The filename of the file this Makefile was included from. |
491 |
The filename of the file this Makefile was included from. |
492 |
|
492 |
|
493 |
MAKE The name that bbmmaakkee was executed with (_a_r_g_v_[_0_]). For |
493 |
MAKE The name that [1mbmake [22mwas executed with ([4margv[0][24m). For |
494 |
compatibility bbmmaakkee also sets _._M_A_K_E with the same value. |
494 |
compatibility [1mbmake [22malso sets [4m.MAKE[24m with the same value. |
495 |
The preferred variable to use is the environment variable |
495 |
The preferred variable to use is the environment variable |
496 |
MAKE because it is more compatible with other versions of |
496 |
MAKE because it is more compatible with other versions of |
497 |
bbmmaakkee and cannot be confused with the special target with |
497 |
[1mbmake [22mand cannot be confused with the special target with |
498 |
the same name. |
498 |
the same name. |
499 |
|
499 |
|
500 |
_._M_A_K_E_._D_E_P_E_N_D_F_I_L_E |
500 |
[4m.MAKE.DEPENDFILE[0m |
501 |
Names the makefile (default `_._d_e_p_e_n_d') from which gener- |
501 |
Names the makefile (default `[4m.depend[24m') from which gener- |
502 |
ated dependencies are read. |
502 |
ated dependencies are read. |
503 |
|
503 |
|
504 |
_._M_A_K_E_._E_X_P_A_N_D___V_A_R_I_A_B_L_E_S |
504 |
[4m.MAKE.EXPAND_VARIABLES[0m |
505 |
A boolean that controls the default behavior of the --VV |
505 |
A boolean that controls the default behavior of the [1m-V[0m |
506 |
option. If true, variable values printed with --VV are |
506 |
option. If true, variable values printed with [1m-V [22mare |
507 |
fully expanded; if false, the raw variable contents |
507 |
fully expanded; if false, the raw variable contents |
508 |
(which may include additional unexpanded variable refer- |
508 |
(which may include additional unexpanded variable refer- |
509 |
ences) are shown. |
509 |
ences) are shown. |
510 |
|
510 |
|
511 |
_._M_A_K_E_._E_X_P_O_R_T_E_D The list of variables exported by bbmmaakkee. |
511 |
[4m.MAKE.EXPORTED[24m The list of variables exported by [1mbmake[22m. |
512 |
|
512 |
|
513 |
_._M_A_K_E_._J_O_B_S The argument to the --jj option. |
513 |
[4m.MAKE.JOBS[24m The argument to the [1m-j [22moption. |
514 |
|
514 |
|
515 |
_._M_A_K_E_._J_O_B_._P_R_E_F_I_X |
515 |
[4m.MAKE.JOB.PREFIX[0m |
516 |
If bbmmaakkee is run with _j then output for each target is |
516 |
If [1mbmake [22mis run with [4mj[24m then output for each target is |
517 |
prefixed with a token `--- target ---' the first part of |
517 |
prefixed with a token `--- target ---' the first part of |
518 |
which can be controlled via _._M_A_K_E_._J_O_B_._P_R_E_F_I_X. If |
518 |
which can be controlled via [4m.MAKE.JOB.PREFIX[24m. If |
519 |
_._M_A_K_E_._J_O_B_._P_R_E_F_I_X is empty, no token is printed. |
519 |
[4m.MAKE.JOB.PREFIX[24m is empty, no token is printed. |
520 |
For example: |
520 |
For example: |
521 |
.MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}] |
521 |
.MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}] |
522 |
would produce tokens like `---make[1234] target ---' mak- |
522 |
would produce tokens like `---make[1234] target ---' mak- |
Lines 524-655
Link Here
|
524 |
achieved. |
524 |
achieved. |
525 |
|
525 |
|
526 |
MAKEFLAGS The environment variable `MAKEFLAGS' may contain anything |
526 |
MAKEFLAGS The environment variable `MAKEFLAGS' may contain anything |
527 |
that may be specified on bbmmaakkee's command line. Anything |
527 |
that may be specified on [1mbmake[22m's command line. Anything |
528 |
specified on bbmmaakkee's command line is appended to the |
528 |
specified on [1mbmake[22m's command line is appended to the |
529 |
`MAKEFLAGS' variable which is then entered into the envi- |
529 |
`MAKEFLAGS' variable which is then entered into the envi- |
530 |
ronment for all programs which bbmmaakkee executes. |
530 |
ronment for all programs which [1mbmake [22mexecutes. |
531 |
|
531 |
|
532 |
_._M_A_K_E_._L_E_V_E_L The recursion depth of bbmmaakkee. The initial instance of |
532 |
[4m.MAKE.LEVEL[24m The recursion depth of [1mbmake[22m. The initial instance of |
533 |
bbmmaakkee will be 0, and an incremented value is put into the |
533 |
[1mbmake [22mwill be 0, and an incremented value is put into the |
534 |
environment to be seen by the next generation. This |
534 |
environment to be seen by the next generation. This |
535 |
allows tests like: .if ${.MAKE.LEVEL} == 0 to protect |
535 |
allows tests like: .if ${.MAKE.LEVEL} == 0 to protect |
536 |
things which should only be evaluated in the initial |
536 |
things which should only be evaluated in the initial |
537 |
instance of bbmmaakkee. |
537 |
instance of [1mbmake[22m. |
538 |
|
538 |
|
539 |
_._M_A_K_E_._M_A_K_E_F_I_L_E___P_R_E_F_E_R_E_N_C_E |
539 |
[4m.MAKE.MAKEFILE_PREFERENCE[0m |
540 |
The ordered list of makefile names (default `_m_a_k_e_f_i_l_e', |
540 |
The ordered list of makefile names (default `[4mmakefile[24m', |
541 |
`_M_a_k_e_f_i_l_e') that bbmmaakkee will look for. |
541 |
`[4mMakefile[24m') that [1mbmake [22mwill look for. |
542 |
|
542 |
|
543 |
_._M_A_K_E_._M_A_K_E_F_I_L_E_S |
543 |
[4m.MAKE.MAKEFILES[0m |
544 |
The list of makefiles read by bbmmaakkee, which is useful for |
544 |
The list of makefiles read by [1mbmake[22m, which is useful for |
545 |
tracking dependencies. Each makefile is recorded only |
545 |
tracking dependencies. Each makefile is recorded only |
546 |
once, regardless of the number of times read. |
546 |
once, regardless of the number of times read. |
547 |
|
547 |
|
548 |
_._M_A_K_E_._M_O_D_E Processed after reading all makefiles. Can affect the |
548 |
[4m.MAKE.MODE[24m Processed after reading all makefiles. Can affect the |
549 |
mode that bbmmaakkee runs in. It can contain a number of key- |
549 |
mode that [1mbmake [22mruns in. It can contain a number of key- |
550 |
words: |
550 |
words: |
551 |
|
551 |
|
552 |
_c_o_m_p_a_t Like --BB, puts bbmmaakkee into "compat" |
552 |
[4mcompat[24m Like [1m-B[22m, puts [1mbmake [22minto "compat" |
553 |
mode. |
553 |
mode. |
554 |
|
554 |
|
555 |
_m_e_t_a Puts bbmmaakkee into "meta" mode, where |
555 |
[4mmeta[24m Puts [1mbmake [22minto "meta" mode, where |
556 |
meta files are created for each tar- |
556 |
meta files are created for each tar- |
557 |
get to capture the command run, the |
557 |
get to capture the command run, the |
558 |
output generated and if filemon(4) |
558 |
output generated and if filemon(4) |
559 |
is available, the system calls which |
559 |
is available, the system calls which |
560 |
are of interest to bbmmaakkee. The cap- |
560 |
are of interest to [1mbmake[22m. The cap- |
561 |
tured output can be very useful when |
561 |
tured output can be very useful when |
562 |
diagnosing errors. |
562 |
diagnosing errors. |
563 |
|
563 |
|
564 |
_c_u_r_d_i_r_O_k_= _b_f Normally bbmmaakkee will not create .meta |
564 |
[4mcurdirOk=[24m [4mbf[24m Normally [1mbmake [22mwill not create .meta |
565 |
files in `_._C_U_R_D_I_R'. This can be |
565 |
files in `[4m.CURDIR[24m'. This can be |
566 |
overridden by setting _b_f to a value |
566 |
overridden by setting [4mbf[24m to a value |
567 |
which represents True. |
567 |
which represents True. |
568 |
|
568 |
|
569 |
_m_i_s_s_i_n_g_-_m_e_t_a_= _b_f If _b_f is True, then a missing .meta |
569 |
[4mmissing-meta=[24m [4mbf[24m If [4mbf[24m is True, then a missing .meta |
570 |
file makes the target out-of-date. |
570 |
file makes the target out-of-date. |
571 |
|
571 |
|
572 |
_m_i_s_s_i_n_g_-_f_i_l_e_m_o_n_= _b_f If _b_f is True, then missing filemon |
572 |
[4mmissing-filemon=[24m [4mbf[24m If [4mbf[24m is True, then missing filemon |
573 |
data makes the target out-of-date. |
573 |
data makes the target out-of-date. |
574 |
|
574 |
|
575 |
_n_o_f_i_l_e_m_o_n Do not use filemon(4). |
575 |
[4mnofilemon[24m Do not use filemon(4). |
576 |
|
576 |
|
577 |
_e_n_v For debugging, it can be useful to |
577 |
[4menv[24m For debugging, it can be useful to |
578 |
include the environment in the .meta |
578 |
include the environment in the .meta |
579 |
file. |
579 |
file. |
580 |
|
580 |
|
581 |
_v_e_r_b_o_s_e If in "meta" mode, print a clue |
581 |
[4mverbose[24m If in "meta" mode, print a clue |
582 |
about the target being built. This |
582 |
about the target being built. This |
583 |
is useful if the build is otherwise |
583 |
is useful if the build is otherwise |
584 |
running silently. The message |
584 |
running silently. The message |
585 |
printed the value of: |
585 |
printed the value of: |
586 |
_._M_A_K_E_._M_E_T_A_._P_R_E_F_I_X. |
586 |
[4m.MAKE.META.PREFIX[24m. |
587 |
|
587 |
|
588 |
_i_g_n_o_r_e_-_c_m_d Some makefiles have commands which |
588 |
[4mignore-cmd[24m Some makefiles have commands which |
589 |
are simply not stable. This keyword |
589 |
are simply not stable. This keyword |
590 |
causes them to be ignored for deter- |
590 |
causes them to be ignored for deter- |
591 |
mining whether a target is out of |
591 |
mining whether a target is out of |
592 |
date in "meta" mode. See also |
592 |
date in "meta" mode. See also |
593 |
..NNOOMMEETTAA__CCMMPP. |
593 |
[1m.NOMETA_CMP[22m. |
594 |
|
594 |
|
595 |
_s_i_l_e_n_t_= _b_f If _b_f is True, when a .meta file is |
595 |
[4msilent=[24m [4mbf[24m If [4mbf[24m is True, when a .meta file is |
596 |
created, mark the target ..SSIILLEENNTT. |
596 |
created, mark the target [1m.SILENT[22m. |
597 |
|
597 |
|
598 |
_._M_A_K_E_._M_E_T_A_._B_A_I_L_I_W_I_C_K |
598 |
[4m.MAKE.META.BAILIWICK[0m |
599 |
In "meta" mode, provides a list of prefixes which match |
599 |
In "meta" mode, provides a list of prefixes which match |
600 |
the directories controlled by bbmmaakkee. If a file that was |
600 |
the directories controlled by [1mbmake[22m. If a file that was |
601 |
generated outside of _._O_B_J_D_I_R but within said bailiwick is |
601 |
generated outside of [4m.OBJDIR[24m but within said bailiwick is |
602 |
missing, the current target is considered out-of-date. |
602 |
missing, the current target is considered out-of-date. |
603 |
|
603 |
|
604 |
_._M_A_K_E_._M_E_T_A_._C_R_E_A_T_E_D |
604 |
[4m.MAKE.META.CREATED[0m |
605 |
In "meta" mode, this variable contains a list of all the |
605 |
In "meta" mode, this variable contains a list of all the |
606 |
meta files updated. If not empty, it can be used to |
606 |
meta files updated. If not empty, it can be used to |
607 |
trigger processing of _._M_A_K_E_._M_E_T_A_._F_I_L_E_S. |
607 |
trigger processing of [4m.MAKE.META.FILES[24m. |
608 |
|
608 |
|
609 |
_._M_A_K_E_._M_E_T_A_._F_I_L_E_S |
609 |
[4m.MAKE.META.FILES[0m |
610 |
In "meta" mode, this variable contains a list of all the |
610 |
In "meta" mode, this variable contains a list of all the |
611 |
meta files used (updated or not). This list can be used |
611 |
meta files used (updated or not). This list can be used |
612 |
to process the meta files to extract dependency informa- |
612 |
to process the meta files to extract dependency informa- |
613 |
tion. |
613 |
tion. |
614 |
|
614 |
|
615 |
_._M_A_K_E_._M_E_T_A_._I_G_N_O_R_E___P_A_T_H_S |
615 |
[4m.MAKE.META.IGNORE_PATHS[0m |
616 |
Provides a list of path prefixes that should be ignored; |
616 |
Provides a list of path prefixes that should be ignored; |
617 |
because the contents are expected to change over time. |
617 |
because the contents are expected to change over time. |
618 |
The default list includes: `_/_d_e_v _/_e_t_c _/_p_r_o_c _/_t_m_p _/_v_a_r_/_r_u_n |
618 |
The default list includes: `[4m/dev[24m [4m/etc[24m [4m/proc[24m [4m/tmp[24m [4m/var/run[0m |
619 |
_/_v_a_r_/_t_m_p' |
619 |
[4m/var/tmp[24m' |
620 |
|
620 |
|
621 |
_._M_A_K_E_._M_E_T_A_._I_G_N_O_R_E___P_A_T_T_E_R_N_S |
621 |
[4m.MAKE.META.IGNORE_PATTERNS[0m |
622 |
Provides a list of patterns to match against pathnames. |
622 |
Provides a list of patterns to match against pathnames. |
623 |
Ignore any that match. |
623 |
Ignore any that match. |
624 |
|
624 |
|
625 |
_._M_A_K_E_._M_E_T_A_._I_G_N_O_R_E___F_I_L_T_E_R |
625 |
[4m.MAKE.META.IGNORE_FILTER[0m |
626 |
Provides a list of variable modifiers to apply to each |
626 |
Provides a list of variable modifiers to apply to each |
627 |
pathname. Ignore if the expansion is an empty string. |
627 |
pathname. Ignore if the expansion is an empty string. |
628 |
|
628 |
|
629 |
_._M_A_K_E_._M_E_T_A_._P_R_E_F_I_X |
629 |
[4m.MAKE.META.PREFIX[0m |
630 |
Defines the message printed for each meta file updated in |
630 |
Defines the message printed for each meta file updated in |
631 |
"meta verbose" mode. The default value is: |
631 |
"meta verbose" mode. The default value is: |
632 |
Building ${.TARGET:H:tA}/${.TARGET:T} |
632 |
Building ${.TARGET:H:tA}/${.TARGET:T} |
633 |
|
633 |
|
634 |
_._M_A_K_E_O_V_E_R_R_I_D_E_S This variable is used to record the names of variables |
634 |
[4m.MAKEOVERRIDES[24m This variable is used to record the names of variables |
635 |
assigned to on the command line, so that they may be |
635 |
assigned to on the command line, so that they may be |
636 |
exported as part of `MAKEFLAGS'. This behavior can be |
636 |
exported as part of `MAKEFLAGS'. This behavior can be |
637 |
disabled by assigning an empty value to `_._M_A_K_E_O_V_E_R_R_I_D_E_S' |
637 |
disabled by assigning an empty value to `[4m.MAKEOVERRIDES[24m' |
638 |
within a makefile. Extra variables can be exported from |
638 |
within a makefile. Extra variables can be exported from |
639 |
a makefile by appending their names to `_._M_A_K_E_O_V_E_R_R_I_D_E_S'. |
639 |
a makefile by appending their names to `[4m.MAKEOVERRIDES[24m'. |
640 |
`MAKEFLAGS' is re-exported whenever `_._M_A_K_E_O_V_E_R_R_I_D_E_S' is |
640 |
`MAKEFLAGS' is re-exported whenever `[4m.MAKEOVERRIDES[24m' is |
641 |
modified. |
641 |
modified. |
642 |
|
642 |
|
643 |
_._M_A_K_E_._P_A_T_H___F_I_L_E_M_O_N |
643 |
[4m.MAKE.PATH_FILEMON[0m |
644 |
If bbmmaakkee was built with filemon(4) support, this is set |
644 |
If [1mbmake [22mwas built with filemon(4) support, this is set |
645 |
to the path of the device node. This allows makefiles to |
645 |
to the path of the device node. This allows makefiles to |
646 |
test for this support. |
646 |
test for this support. |
647 |
|
647 |
|
648 |
_._M_A_K_E_._P_I_D The process-id of bbmmaakkee. |
648 |
[4m.MAKE.PID[24m The process-id of [1mbmake[22m. |
649 |
|
649 |
|
650 |
_._M_A_K_E_._P_P_I_D The parent process-id of bbmmaakkee. |
650 |
[4m.MAKE.PPID[24m The parent process-id of [1mbmake[22m. |
651 |
|
651 |
|
652 |
_._M_A_K_E_._S_A_V_E___D_O_L_L_A_R_S |
652 |
[4m.MAKE.SAVE_DOLLARS[0m |
653 |
value should be a boolean that controls whether `$$' are |
653 |
value should be a boolean that controls whether `$$' are |
654 |
preserved when doing `:=' assignments. The default is |
654 |
preserved when doing `:=' assignments. The default is |
655 |
false, for backwards compatibility. Set to true for com- |
655 |
false, for backwards compatibility. Set to true for com- |
Lines 656-679
Link Here
|
656 |
patability with other makes. If set to false, `$$' |
656 |
patability with other makes. If set to false, `$$' |
657 |
becomes `$' per normal evaluation rules. |
657 |
becomes `$' per normal evaluation rules. |
658 |
|
658 |
|
659 |
_M_A_K_E___P_R_I_N_T___V_A_R___O_N___E_R_R_O_R |
659 |
[4mMAKE_PRINT_VAR_ON_ERROR[0m |
660 |
When bbmmaakkee stops due to an error, it sets `_._E_R_R_O_R___T_A_R_G_E_T' |
660 |
When [1mbmake [22mstops due to an error, it sets `[4m.ERROR_TARGET[24m' |
661 |
to the name of the target that failed, `_._E_R_R_O_R___C_M_D' to |
661 |
to the name of the target that failed, `[4m.ERROR_CMD[24m' to |
662 |
the commands of the failed target, and in "meta" mode, it |
662 |
the commands of the failed target, and in "meta" mode, it |
663 |
also sets `_._E_R_R_O_R___C_W_D' to the getcwd(3), and |
663 |
also sets `[4m.ERROR_CWD[24m' to the getcwd(3), and |
664 |
`_._E_R_R_O_R___M_E_T_A___F_I_L_E' to the path of the meta file (if any) |
664 |
`[4m.ERROR_META_FILE[24m' to the path of the meta file (if any) |
665 |
describing the failed target. It then prints its name |
665 |
describing the failed target. It then prints its name |
666 |
and the value of `_._C_U_R_D_I_R' as well as the value of any |
666 |
and the value of `[4m.CURDIR[24m' as well as the value of any |
667 |
variables named in `_M_A_K_E___P_R_I_N_T___V_A_R___O_N___E_R_R_O_R'. |
667 |
variables named in `[4mMAKE_PRINT_VAR_ON_ERROR[24m'. |
668 |
|
668 |
|
669 |
_._n_e_w_l_i_n_e This variable is simply assigned a newline character as |
669 |
[4m.newline[24m This variable is simply assigned a newline character as |
670 |
its value. This allows expansions using the ::@@ modifier |
670 |
its value. This allows expansions using the [1m:@ [22mmodifier |
671 |
to put a newline between iterations of the loop rather |
671 |
to put a newline between iterations of the loop rather |
672 |
than a space. For example, the printing of |
672 |
than a space. For example, the printing of |
673 |
`_M_A_K_E___P_R_I_N_T___V_A_R___O_N___E_R_R_O_R' could be done as |
673 |
`[4mMAKE_PRINT_VAR_ON_ERROR[24m' could be done as |
674 |
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}. |
674 |
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}. |
675 |
|
675 |
|
676 |
_._O_B_J_D_I_R A path to the directory where the targets are built. Its |
676 |
[4m.OBJDIR[24m A path to the directory where the targets are built. Its |
677 |
value is determined by trying to chdir(2) to the follow- |
677 |
value is determined by trying to chdir(2) to the follow- |
678 |
ing directories in order and using the first match: |
678 |
ing directories in order and using the first match: |
679 |
|
679 |
|
Lines 687-697
Link Here
|
687 |
(Only if `MAKEOBJDIR' is set in the environment or |
687 |
(Only if `MAKEOBJDIR' is set in the environment or |
688 |
on the command line.) |
688 |
on the command line.) |
689 |
|
689 |
|
690 |
3. ${.CURDIR}_/_o_b_j_.${MACHINE} |
690 |
3. ${.CURDIR}[4m/obj.[24m${MACHINE} |
691 |
|
691 |
|
692 |
4. ${.CURDIR}_/_o_b_j |
692 |
4. ${.CURDIR}[4m/obj[0m |
693 |
|
693 |
|
694 |
5. _/_u_s_r_/_o_b_j_/${.CURDIR} |
694 |
5. [4m/usr/obj/[24m${.CURDIR} |
695 |
|
695 |
|
696 |
6. ${.CURDIR} |
696 |
6. ${.CURDIR} |
697 |
|
697 |
|
Lines 701-743
Link Here
|
701 |
may be used. This is especially useful with |
701 |
may be used. This is especially useful with |
702 |
`MAKEOBJDIR'. |
702 |
`MAKEOBJDIR'. |
703 |
|
703 |
|
704 |
`_._O_B_J_D_I_R' may be modified in the makefile via the special |
704 |
`[4m.OBJDIR[24m' may be modified in the makefile via the special |
705 |
target `..OOBBJJDDIIRR'. In all cases, bbmmaakkee will chdir(2) to |
705 |
target `[1m.OBJDIR[22m'. In all cases, [1mbmake [22mwill chdir(2) to |
706 |
the specified directory if it exists, and set `_._O_B_J_D_I_R' |
706 |
the specified directory if it exists, and set `[4m.OBJDIR[24m' |
707 |
and `PWD' to that directory before executing any targets. |
707 |
and `PWD' to that directory before executing any targets. |
708 |
|
708 |
|
709 |
_._P_A_R_S_E_D_I_R A path to the directory of the current `_M_a_k_e_f_i_l_e' being |
709 |
[4m.PARSEDIR[24m A path to the directory of the current `[4mMakefile[24m' being |
710 |
parsed. |
710 |
parsed. |
711 |
|
711 |
|
712 |
_._P_A_R_S_E_F_I_L_E The basename of the current `_M_a_k_e_f_i_l_e' being parsed. |
712 |
[4m.PARSEFILE[24m The basename of the current `[4mMakefile[24m' being parsed. |
713 |
This variable and `_._P_A_R_S_E_D_I_R' are both set only while the |
713 |
This variable and `[4m.PARSEDIR[24m' are both set only while the |
714 |
`_M_a_k_e_f_i_l_e_s' are being parsed. If you want to retain |
714 |
`[4mMakefiles[24m' are being parsed. If you want to retain |
715 |
their current values, assign them to a variable using |
715 |
their current values, assign them to a variable using |
716 |
assignment with expansion: (`::=='). |
716 |
assignment with expansion: (`[1m:=[22m'). |
717 |
|
717 |
|
718 |
_._P_A_T_H A variable that represents the list of directories that |
718 |
[4m.PATH[24m A variable that represents the list of directories that |
719 |
bbmmaakkee will search for files. The search list should be |
719 |
[1mbmake [22mwill search for files. The search list should be |
720 |
updated using the target `_._P_A_T_H' rather than the vari- |
720 |
updated using the target `[4m.PATH[24m' rather than the vari- |
721 |
able. |
721 |
able. |
722 |
|
722 |
|
723 |
PWD Alternate path to the current directory. bbmmaakkee normally |
723 |
PWD Alternate path to the current directory. [1mbmake [22mnormally |
724 |
sets `_._C_U_R_D_I_R' to the canonical path given by getcwd(3). |
724 |
sets `[4m.CURDIR[24m' to the canonical path given by getcwd(3). |
725 |
However, if the environment variable `PWD' is set and |
725 |
However, if the environment variable `PWD' is set and |
726 |
gives a path to the current directory, then bbmmaakkee sets |
726 |
gives a path to the current directory, then [1mbmake [22msets |
727 |
`_._C_U_R_D_I_R' to the value of `PWD' instead. This behavior |
727 |
`[4m.CURDIR[24m' to the value of `PWD' instead. This behavior |
728 |
is disabled if `MAKEOBJDIRPREFIX' is set or `MAKEOBJDIR' |
728 |
is disabled if `MAKEOBJDIRPREFIX' is set or `MAKEOBJDIR' |
729 |
contains a variable transform. `PWD' is set to the value |
729 |
contains a variable transform. `PWD' is set to the value |
730 |
of `_._O_B_J_D_I_R' for all programs which bbmmaakkee executes. |
730 |
of `[4m.OBJDIR[24m' for all programs which [1mbmake [22mexecutes. |
731 |
|
731 |
|
732 |
.TARGETS The list of targets explicitly specified on the command |
732 |
.TARGETS The list of targets explicitly specified on the command |
733 |
line, if any. |
733 |
line, if any. |
734 |
|
734 |
|
735 |
VPATH Colon-separated (``:'') lists of directories that bbmmaakkee |
735 |
VPATH Colon-separated (``:'') lists of directories that [1mbmake[0m |
736 |
will search for files. The variable is supported for |
736 |
will search for files. The variable is supported for |
737 |
compatibility with old make programs only, use `_._P_A_T_H' |
737 |
compatibility with old make programs only, use `[4m.PATH[24m' |
738 |
instead. |
738 |
instead. |
739 |
|
739 |
|
740 |
VVaarriiaabbllee mmooddiiffiieerrss |
740 |
[1mVariable modifiers[0m |
741 |
Variable expansion may be modified to select or modify each word of the |
741 |
Variable expansion may be modified to select or modify each word of the |
742 |
variable (where a ``word'' is white-space delimited sequence of charac- |
742 |
variable (where a ``word'' is white-space delimited sequence of charac- |
743 |
ters). The general format of a variable expansion is as follows: |
743 |
ters). The general format of a variable expansion is as follows: |
Lines 759-771
Link Here
|
759 |
|
759 |
|
760 |
The supported modifiers are: |
760 |
The supported modifiers are: |
761 |
|
761 |
|
762 |
::EE Replaces each word in the variable with its suffix. |
762 |
[1m:E [22mReplaces each word in the variable with its suffix. |
763 |
|
763 |
|
764 |
::HH Replaces each word in the variable with everything but the last com- |
764 |
[1m:H [22mReplaces each word in the variable with everything but the last com- |
765 |
ponent. |
765 |
ponent. |
766 |
|
766 |
|
767 |
::MM_p_a_t_t_e_r_n |
767 |
[1m:M[4m[22mpattern[0m |
768 |
Select only those words that match _p_a_t_t_e_r_n. The standard shell |
768 |
Select only those words that match [4mpattern[24m. The standard shell |
769 |
wildcard characters (`*', `?', and `[]') may be used. The wildcard |
769 |
wildcard characters (`*', `?', and `[]') may be used. The wildcard |
770 |
characters may be escaped with a backslash (`\'). As a consequence |
770 |
characters may be escaped with a backslash (`\'). As a consequence |
771 |
of the way values are split into words, matched, and then joined, a |
771 |
of the way values are split into words, matched, and then joined, a |
Lines 775-790
Link Here
|
775 |
trailing space, and converting multiple consecutive spaces to single |
775 |
trailing space, and converting multiple consecutive spaces to single |
776 |
spaces. |
776 |
spaces. |
777 |
|
777 |
|
778 |
::NN_p_a_t_t_e_r_n |
778 |
[1m:N[4m[22mpattern[0m |
779 |
This is identical to `::MM', but selects all words which do not match |
779 |
This is identical to `[1m:M[22m', but selects all words which do not match |
780 |
_p_a_t_t_e_r_n. |
780 |
[4mpattern[24m. |
781 |
|
781 |
|
782 |
::OO Order every word in variable alphabetically. To sort words in |
782 |
[1m:O [22mOrder every word in variable alphabetically. To sort words in |
783 |
reverse order use the `::OO::[[--11....11]]' combination of modifiers. |
783 |
reverse order use the `[1m:O:[-1..1][22m' combination of modifiers. |
784 |
|
784 |
|
785 |
::OOxx Randomize words in variable. The results will be different each |
785 |
[1m:Ox [22mRandomize words in variable. The results will be different each |
786 |
time you are referring to the modified variable; use the assignment |
786 |
time you are referring to the modified variable; use the assignment |
787 |
with expansion (`::==') to prevent such behavior. For example, |
787 |
with expansion (`[1m:=[22m') to prevent such behavior. For example, |
788 |
|
788 |
|
789 |
LIST= uno due tre quattro |
789 |
LIST= uno due tre quattro |
790 |
RANDOM_LIST= ${LIST:Ox} |
790 |
RANDOM_LIST= ${LIST:Ox} |
Lines 802-876
Link Here
|
802 |
due uno quattro tre |
802 |
due uno quattro tre |
803 |
due uno quattro tre |
803 |
due uno quattro tre |
804 |
|
804 |
|
805 |
::QQ Quotes every shell meta-character in the variable, so that it can be |
805 |
[1m:Q [22mQuotes every shell meta-character in the variable, so that it can be |
806 |
passed safely through recursive invocations of bbmmaakkee. |
806 |
passed safely through recursive invocations of [1mbmake[22m. |
807 |
|
807 |
|
808 |
::RR Replaces each word in the variable with everything but its suffix. |
808 |
[1m:R [22mReplaces each word in the variable with everything but its suffix. |
809 |
|
809 |
|
810 |
::rraannggee[[==ccoouunntt]] |
810 |
[1m:range[=count][0m |
811 |
The value is an integer sequence representing the words of the orig- |
811 |
The value is an integer sequence representing the words of the orig- |
812 |
inal value, or the supplied _c_o_u_n_t. |
812 |
inal value, or the supplied [4mcount[24m. |
813 |
|
813 |
|
814 |
::ggmmttiimmee[[==uuttcc]] |
814 |
[1m:gmtime[=utc][0m |
815 |
The value is a format string for strftime(3), using gmtime(3). If a |
815 |
The value is a format string for strftime(3), using gmtime(3). If a |
816 |
_u_t_c value is not provided or is 0, the current time is used. |
816 |
[4mutc[24m value is not provided or is 0, the current time is used. |
817 |
|
817 |
|
818 |
::hhaasshh |
818 |
[1m:hash[0m |
819 |
Compute a 32-bit hash of the value and encode it as hex digits. |
819 |
Compute a 32-bit hash of the value and encode it as hex digits. |
820 |
|
820 |
|
821 |
::llooccaallttiimmee[[==uuttcc]] |
821 |
[1m:localtime[=utc][0m |
822 |
The value is a format string for strftime(3), using localtime(3). |
822 |
The value is a format string for strftime(3), using localtime(3). |
823 |
If a _u_t_c value is not provided or is 0, the current time is used. |
823 |
If a [4mutc[24m value is not provided or is 0, the current time is used. |
824 |
|
824 |
|
825 |
::ttAA Attempt to convert variable to an absolute path using realpath(3), |
825 |
[1m:tA [22mAttempt to convert variable to an absolute path using realpath(3), |
826 |
if that fails, the value is unchanged. |
826 |
if that fails, the value is unchanged. |
827 |
|
827 |
|
828 |
::ttll Converts variable to lower-case letters. |
828 |
[1m:tl [22mConverts variable to lower-case letters. |
829 |
|
829 |
|
830 |
::ttss_c |
830 |
[1m:ts[4m[22mc[0m |
831 |
Words in the variable are normally separated by a space on expan- |
831 |
Words in the variable are normally separated by a space on expan- |
832 |
sion. This modifier sets the separator to the character _c. If _c is |
832 |
sion. This modifier sets the separator to the character [4mc[24m. If [4mc[24m is |
833 |
omitted, then no separator is used. The common escapes (including |
833 |
omitted, then no separator is used. The common escapes (including |
834 |
octal numeric codes), work as expected. |
834 |
octal numeric codes), work as expected. |
835 |
|
835 |
|
836 |
::ttuu Converts variable to upper-case letters. |
836 |
[1m:tu [22mConverts variable to upper-case letters. |
837 |
|
837 |
|
838 |
::ttWW Causes the value to be treated as a single word (possibly containing |
838 |
[1m:tW [22mCauses the value to be treated as a single word (possibly containing |
839 |
embedded white space). See also `::[[**]]'. |
839 |
embedded white space). See also `[1m:[*][22m'. |
840 |
|
840 |
|
841 |
::ttww Causes the value to be treated as a sequence of words delimited by |
841 |
[1m:tw [22mCauses the value to be treated as a sequence of words delimited by |
842 |
white space. See also `::[[@@]]'. |
842 |
white space. See also `[1m:[@][22m'. |
843 |
|
843 |
|
844 |
::SS/_o_l_d___s_t_r_i_n_g/_n_e_w___s_t_r_i_n_g/[11ggWW] |
844 |
[1m:S[22m/[4mold_string[24m/[4mnew_string[24m/[[1m1gW[22m] |
845 |
Modify the first occurrence of _o_l_d___s_t_r_i_n_g in the variable's value, |
845 |
Modify the first occurrence of [4mold_string[24m in the variable's value, |
846 |
replacing it with _n_e_w___s_t_r_i_n_g. If a `g' is appended to the last |
846 |
replacing it with [4mnew_string[24m. If a `g' is appended to the last |
847 |
slash of the pattern, all occurrences in each word are replaced. If |
847 |
slash of the pattern, all occurrences in each word are replaced. If |
848 |
a `1' is appended to the last slash of the pattern, only the first |
848 |
a `1' is appended to the last slash of the pattern, only the first |
849 |
word is affected. If a `W' is appended to the last slash of the |
849 |
word is affected. If a `W' is appended to the last slash of the |
850 |
pattern, then the value is treated as a single word (possibly con- |
850 |
pattern, then the value is treated as a single word (possibly con- |
851 |
taining embedded white space). If _o_l_d___s_t_r_i_n_g begins with a caret |
851 |
taining embedded white space). If [4mold_string[24m begins with a caret |
852 |
(`^'), _o_l_d___s_t_r_i_n_g is anchored at the beginning of each word. If |
852 |
(`^'), [4mold_string[24m is anchored at the beginning of each word. If |
853 |
_o_l_d___s_t_r_i_n_g ends with a dollar sign (`$'), it is anchored at the end |
853 |
[4mold_string[24m ends with a dollar sign (`$'), it is anchored at the end |
854 |
of each word. Inside _n_e_w___s_t_r_i_n_g, an ampersand (`&') is replaced by |
854 |
of each word. Inside [4mnew_string[24m, an ampersand (`&') is replaced by |
855 |
_o_l_d___s_t_r_i_n_g (without any `^' or `$'). Any character may be used as a |
855 |
[4mold_string[24m (without any `^' or `$'). Any character may be used as a |
856 |
delimiter for the parts of the modifier string. The anchoring, |
856 |
delimiter for the parts of the modifier string. The anchoring, |
857 |
ampersand and delimiter characters may be escaped with a backslash |
857 |
ampersand and delimiter characters may be escaped with a backslash |
858 |
(`\'). |
858 |
(`\'). |
859 |
|
859 |
|
860 |
Variable expansion occurs in the normal fashion inside both |
860 |
Variable expansion occurs in the normal fashion inside both |
861 |
_o_l_d___s_t_r_i_n_g and _n_e_w___s_t_r_i_n_g with the single exception that a backslash |
861 |
[4mold_string[24m and [4mnew_string[24m with the single exception that a backslash |
862 |
is used to prevent the expansion of a dollar sign (`$'), not a pre- |
862 |
is used to prevent the expansion of a dollar sign (`$'), not a pre- |
863 |
ceding dollar sign as is usual. |
863 |
ceding dollar sign as is usual. |
864 |
|
864 |
|
865 |
::CC/_p_a_t_t_e_r_n/_r_e_p_l_a_c_e_m_e_n_t/[11ggWW] |
865 |
[1m:C[22m/[4mpattern[24m/[4mreplacement[24m/[[1m1gW[22m] |
866 |
The ::CC modifier is just like the ::SS modifier except that the old and |
866 |
The [1m:C [22mmodifier is just like the [1m:S [22mmodifier except that the old and |
867 |
new strings, instead of being simple strings, are an extended regu- |
867 |
new strings, instead of being simple strings, are an extended regu- |
868 |
lar expression (see regex(3)) string _p_a_t_t_e_r_n and an ed(1)-style |
868 |
lar expression (see regex(3)) string [4mpattern[24m and an ed(1)-style |
869 |
string _r_e_p_l_a_c_e_m_e_n_t. Normally, the first occurrence of the pattern |
869 |
string [4mreplacement[24m. Normally, the first occurrence of the pattern |
870 |
_p_a_t_t_e_r_n in each word of the value is substituted with _r_e_p_l_a_c_e_m_e_n_t. |
870 |
[4mpattern[24m in each word of the value is substituted with [4mreplacement[24m. |
871 |
The `1' modifier causes the substitution to apply to at most one |
871 |
The `1' modifier causes the substitution to apply to at most one |
872 |
word; the `g' modifier causes the substitution to apply to as many |
872 |
word; the `g' modifier causes the substitution to apply to as many |
873 |
instances of the search pattern _p_a_t_t_e_r_n as occur in the word or |
873 |
instances of the search pattern [4mpattern[24m as occur in the word or |
874 |
words it is found in; the `W' modifier causes the value to be |
874 |
words it is found in; the `W' modifier causes the value to be |
875 |
treated as a single word (possibly containing embedded white space). |
875 |
treated as a single word (possibly containing embedded white space). |
876 |
Note that `1' and `g' are orthogonal; the former specifies whether |
876 |
Note that `1' and `g' are orthogonal; the former specifies whether |
Lines 877-893
Link Here
|
877 |
multiple words are potentially affected, the latter whether multiple |
877 |
multiple words are potentially affected, the latter whether multiple |
878 |
substitutions can potentially occur within each affected word. |
878 |
substitutions can potentially occur within each affected word. |
879 |
|
879 |
|
880 |
As for the ::SS modifier, the _p_a_t_t_e_r_n and _r_e_p_l_a_c_e_m_e_n_t are subjected to |
880 |
As for the [1m:S [22mmodifier, the [4mpattern[24m and [4mreplacement[24m are subjected to |
881 |
variable expansion before being parsed as regular expressions. |
881 |
variable expansion before being parsed as regular expressions. |
882 |
|
882 |
|
883 |
::TT Replaces each word in the variable with its last component. |
883 |
[1m:T [22mReplaces each word in the variable with its last component. |
884 |
|
884 |
|
885 |
::uu Remove adjacent duplicate words (like uniq(1)). |
885 |
[1m:u [22mRemove adjacent duplicate words (like uniq(1)). |
886 |
|
886 |
|
887 |
::??_t_r_u_e___s_t_r_i_n_g::_f_a_l_s_e___s_t_r_i_n_g |
887 |
[1m:?[4m[22mtrue_string[24m[1m:[4m[22mfalse_string[0m |
888 |
If the variable name (not its value), when parsed as a .if condi- |
888 |
If the variable name (not its value), when parsed as a .if condi- |
889 |
tional expression, evaluates to true, return as its value the |
889 |
tional expression, evaluates to true, return as its value the |
890 |
_t_r_u_e___s_t_r_i_n_g, otherwise return the _f_a_l_s_e___s_t_r_i_n_g. Since the variable |
890 |
[4mtrue_string[24m, otherwise return the [4mfalse_string[24m. Since the variable |
891 |
name is used as the expression, :? must be the first modifier after |
891 |
name is used as the expression, :? must be the first modifier after |
892 |
the variable name itself - which will, of course, usually contain |
892 |
the variable name itself - which will, of course, usually contain |
893 |
variable expansions. A common error is trying to use expressions |
893 |
variable expansions. A common error is trying to use expressions |
Lines 897-920
Link Here
|
897 |
match "42" you need to use something like: |
897 |
match "42" you need to use something like: |
898 |
${"${NUMBERS:M42}" != "":?match:no}. |
898 |
${"${NUMBERS:M42}" != "":?match:no}. |
899 |
|
899 |
|
900 |
_:_o_l_d___s_t_r_i_n_g_=_n_e_w___s_t_r_i_n_g |
900 |
[4m:old_string=new_string[0m |
901 |
This is the AT&T System V UNIX style variable substitution. It must |
901 |
This is the AT&T System V UNIX style variable substitution. It must |
902 |
be the last modifier specified. If _o_l_d___s_t_r_i_n_g or _n_e_w___s_t_r_i_n_g do not |
902 |
be the last modifier specified. If [4mold_string[24m or [4mnew_string[24m do not |
903 |
contain the pattern matching character _% then it is assumed that |
903 |
contain the pattern matching character [4m%[24m then it is assumed that |
904 |
they are anchored at the end of each word, so only suffixes or |
904 |
they are anchored at the end of each word, so only suffixes or |
905 |
entire words may be replaced. Otherwise _% is the substring of |
905 |
entire words may be replaced. Otherwise [4m%[24m is the substring of |
906 |
_o_l_d___s_t_r_i_n_g to be replaced in _n_e_w___s_t_r_i_n_g. |
906 |
[4mold_string[24m to be replaced in [4mnew_string[24m. |
907 |
|
907 |
|
908 |
Variable expansion occurs in the normal fashion inside both |
908 |
Variable expansion occurs in the normal fashion inside both |
909 |
_o_l_d___s_t_r_i_n_g and _n_e_w___s_t_r_i_n_g with the single exception that a backslash |
909 |
[4mold_string[24m and [4mnew_string[24m with the single exception that a backslash |
910 |
is used to prevent the expansion of a dollar sign (`$'), not a pre- |
910 |
is used to prevent the expansion of a dollar sign (`$'), not a pre- |
911 |
ceding dollar sign as is usual. |
911 |
ceding dollar sign as is usual. |
912 |
|
912 |
|
913 |
::@@_t_e_m_p@@_s_t_r_i_n_g@@ |
913 |
[1m:@[4m[22mtemp[24m[1m@[4m[22mstring[24m[1m@[0m |
914 |
This is the loop expansion mechanism from the OSF Development Envi- |
914 |
This is the loop expansion mechanism from the OSF Development Envi- |
915 |
ronment (ODE) make. Unlike ..ffoorr loops expansion occurs at the time |
915 |
ronment (ODE) make. Unlike [1m.for [22mloops expansion occurs at the time |
916 |
of reference. Assign _t_e_m_p to each word in the variable and evaluate |
916 |
of reference. Assign [4mtemp[24m to each word in the variable and evaluate |
917 |
_s_t_r_i_n_g. The ODE convention is that _t_e_m_p should start and end with a |
917 |
[4mstring[24m. The ODE convention is that [4mtemp[24m should start and end with a |
918 |
period. For example. |
918 |
period. For example. |
919 |
${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@} |
919 |
${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@} |
920 |
|
920 |
|
Lines 921-928
Link Here
|
921 |
However a single character variable is often more readable: |
921 |
However a single character variable is often more readable: |
922 |
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@} |
922 |
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@} |
923 |
|
923 |
|
924 |
::__[[==vvaarr]] |
924 |
[1m:_[=var][0m |
925 |
Save the current variable value in `$_' or the named _v_a_r for later |
925 |
Save the current variable value in `$_' or the named [4mvar[24m for later |
926 |
reference. Example usage: |
926 |
reference. Example usage: |
927 |
|
927 |
|
928 |
M_cmpv.units = 1 1000 1000000 |
928 |
M_cmpv.units = 1 1000 1000000 |
Lines 934-941
Link Here
|
934 |
Here `$_' is used to save the result of the `:S' modifier which is |
934 |
Here `$_' is used to save the result of the `:S' modifier which is |
935 |
later referenced using the index values from `:range'. |
935 |
later referenced using the index values from `:range'. |
936 |
|
936 |
|
937 |
::UU_n_e_w_v_a_l |
937 |
[1m:U[4m[22mnewval[0m |
938 |
If the variable is undefined _n_e_w_v_a_l is the value. If the variable |
938 |
If the variable is undefined [4mnewval[24m is the value. If the variable |
939 |
is defined, the existing value is returned. This is another ODE |
939 |
is defined, the existing value is returned. This is another ODE |
940 |
make feature. It is handy for setting per-target CFLAGS for |
940 |
make feature. It is handy for setting per-target CFLAGS for |
941 |
instance: |
941 |
instance: |
Lines 943-986
Link Here
|
943 |
If a value is only required if the variable is undefined, use: |
943 |
If a value is only required if the variable is undefined, use: |
944 |
${VAR:D:Unewval} |
944 |
${VAR:D:Unewval} |
945 |
|
945 |
|
946 |
::DD_n_e_w_v_a_l |
946 |
[1m:D[4m[22mnewval[0m |
947 |
If the variable is defined _n_e_w_v_a_l is the value. |
947 |
If the variable is defined [4mnewval[24m is the value. |
948 |
|
948 |
|
949 |
::LL The name of the variable is the value. |
949 |
[1m:L [22mThe name of the variable is the value. |
950 |
|
950 |
|
951 |
::PP The path of the node which has the same name as the variable is the |
951 |
[1m:P [22mThe path of the node which has the same name as the variable is the |
952 |
value. If no such node exists or its path is null, then the name of |
952 |
value. If no such node exists or its path is null, then the name of |
953 |
the variable is used. In order for this modifier to work, the name |
953 |
the variable is used. In order for this modifier to work, the name |
954 |
(node) must at least have appeared on the rhs of a dependency. |
954 |
(node) must at least have appeared on the rhs of a dependency. |
955 |
|
955 |
|
956 |
::!!_c_m_d!! |
956 |
[1m:![4m[22mcmd[24m[1m![0m |
957 |
The output of running _c_m_d is the value. |
957 |
The output of running [4mcmd[24m is the value. |
958 |
|
958 |
|
959 |
::sshh If the variable is non-empty it is run as a command and the output |
959 |
[1m:sh [22mIf the variable is non-empty it is run as a command and the output |
960 |
becomes the new value. |
960 |
becomes the new value. |
961 |
|
961 |
|
962 |
::::==_s_t_r |
962 |
[1m::=[4m[22mstr[0m |
963 |
The variable is assigned the value _s_t_r after substitution. This |
963 |
The variable is assigned the value [4mstr[24m after substitution. This |
964 |
modifier and its variations are useful in obscure situations such as |
964 |
modifier and its variations are useful in obscure situations such as |
965 |
wanting to set a variable when shell commands are being parsed. |
965 |
wanting to set a variable when shell commands are being parsed. |
966 |
These assignment modifiers always expand to nothing, so if appearing |
966 |
These assignment modifiers always expand to nothing, so if appearing |
967 |
in a rule line by themselves should be preceded with something to |
967 |
in a rule line by themselves should be preceded with something to |
968 |
keep bbmmaakkee happy. |
968 |
keep [1mbmake [22mhappy. |
969 |
|
969 |
|
970 |
The `::::' helps avoid false matches with the AT&T System V UNIX style |
970 |
The `[1m::[22m' helps avoid false matches with the AT&T System V UNIX style |
971 |
::== modifier and since substitution always occurs the ::::== form is |
971 |
[1m:= [22mmodifier and since substitution always occurs the [1m::= [22mform is |
972 |
vaguely appropriate. |
972 |
vaguely appropriate. |
973 |
|
973 |
|
974 |
::::??==_s_t_r |
974 |
[1m::?=[4m[22mstr[0m |
975 |
As for ::::== but only if the variable does not already have a value. |
975 |
As for [1m::= [22mbut only if the variable does not already have a value. |
976 |
|
976 |
|
977 |
::::++==_s_t_r |
977 |
[1m::+=[4m[22mstr[0m |
978 |
Append _s_t_r to the variable. |
978 |
Append [4mstr[24m to the variable. |
979 |
|
979 |
|
980 |
::::!!==_c_m_d |
980 |
[1m::!=[4m[22mcmd[0m |
981 |
Assign the output of _c_m_d to the variable. |
981 |
Assign the output of [4mcmd[24m to the variable. |
982 |
|
982 |
|
983 |
::[[_r_a_n_g_e]] |
983 |
[1m:[[4m[22mrange[24m[1m][0m |
984 |
Selects one or more words from the value, or performs other opera- |
984 |
Selects one or more words from the value, or performs other opera- |
985 |
tions related to the way in which the value is divided into words. |
985 |
tions related to the way in which the value is divided into words. |
986 |
|
986 |
|
Lines 988-1086
Link Here
|
988 |
white space. Some modifiers suppress this behavior, causing a value |
988 |
white space. Some modifiers suppress this behavior, causing a value |
989 |
to be treated as a single word (possibly containing embedded white |
989 |
to be treated as a single word (possibly containing embedded white |
990 |
space). An empty value, or a value that consists entirely of white- |
990 |
space). An empty value, or a value that consists entirely of white- |
991 |
space, is treated as a single word. For the purposes of the `::[[]]' |
991 |
space, is treated as a single word. For the purposes of the `[1m:[][22m' |
992 |
modifier, the words are indexed both forwards using positive inte- |
992 |
modifier, the words are indexed both forwards using positive inte- |
993 |
gers (where index 1 represents the first word), and backwards using |
993 |
gers (where index 1 represents the first word), and backwards using |
994 |
negative integers (where index -1 represents the last word). |
994 |
negative integers (where index -1 represents the last word). |
995 |
|
995 |
|
996 |
The _r_a_n_g_e is subjected to variable expansion, and the expanded |
996 |
The [4mrange[24m is subjected to variable expansion, and the expanded |
997 |
result is then interpreted as follows: |
997 |
result is then interpreted as follows: |
998 |
|
998 |
|
999 |
_i_n_d_e_x Selects a single word from the value. |
999 |
[4mindex[24m Selects a single word from the value. |
1000 |
|
1000 |
|
1001 |
_s_t_a_r_t...._e_n_d |
1001 |
[4mstart[24m[1m..[4m[22mend[0m |
1002 |
Selects all words from _s_t_a_r_t to _e_n_d, inclusive. For example, |
1002 |
Selects all words from [4mstart[24m to [4mend[24m, inclusive. For example, |
1003 |
`::[[22....--11]]' selects all words from the second word to the last |
1003 |
`[1m:[2..-1][22m' selects all words from the second word to the last |
1004 |
word. If _s_t_a_r_t is greater than _e_n_d, then the words are out- |
1004 |
word. If [4mstart[24m is greater than [4mend[24m, then the words are out- |
1005 |
put in reverse order. For example, `::[[--11....11]]' selects all |
1005 |
put in reverse order. For example, `[1m:[-1..1][22m' selects all |
1006 |
the words from last to first. |
1006 |
the words from last to first. |
1007 |
|
1007 |
|
1008 |
** Causes subsequent modifiers to treat the value as a single |
1008 |
[1m* [22mCauses subsequent modifiers to treat the value as a single |
1009 |
word (possibly containing embedded white space). Analogous |
1009 |
word (possibly containing embedded white space). Analogous |
1010 |
to the effect of "$*" in Bourne shell. |
1010 |
to the effect of "$*" in Bourne shell. |
1011 |
|
1011 |
|
1012 |
0 Means the same as `::[[**]]'. |
1012 |
0 Means the same as `[1m:[*][22m'. |
1013 |
|
1013 |
|
1014 |
@@ Causes subsequent modifiers to treat the value as a sequence |
1014 |
[1m@ [22mCauses subsequent modifiers to treat the value as a sequence |
1015 |
of words delimited by white space. Analogous to the effect |
1015 |
of words delimited by white space. Analogous to the effect |
1016 |
of "$@" in Bourne shell. |
1016 |
of "$@" in Bourne shell. |
1017 |
|
1017 |
|
1018 |
## Returns the number of words in the value. |
1018 |
[1m# [22mReturns the number of words in the value. |
1019 |
|
1019 |
|
1020 |
IINNCCLLUUDDEE SSTTAATTEEMMEENNTTSS,, CCOONNDDIITTIIOONNAALLSS AANNDD FFOORR LLOOOOPPSS |
1020 |
[1mINCLUDE STATEMENTS, CONDITIONALS AND FOR LOOPS[0m |
1021 |
Makefile inclusion, conditional structures and for loops reminiscent of |
1021 |
Makefile inclusion, conditional structures and for loops reminiscent of |
1022 |
the C programming language are provided in bbmmaakkee. All such structures |
1022 |
the C programming language are provided in [1mbmake[22m. All such structures |
1023 |
are identified by a line beginning with a single dot (`.') character. |
1023 |
are identified by a line beginning with a single dot (`.') character. |
1024 |
Files are included with either ..iinncclluuddee <_f_i_l_e> or ..iinncclluuddee "_f_i_l_e". Vari- |
1024 |
Files are included with either [1m.include [22m<[4mfile[24m> or [1m.include [22m"[4mfile[24m". Vari- |
1025 |
ables between the angle brackets or double quotes are expanded to form |
1025 |
ables between the angle brackets or double quotes are expanded to form |
1026 |
the file name. If angle brackets are used, the included makefile is |
1026 |
the file name. If angle brackets are used, the included makefile is |
1027 |
expected to be in the system makefile directory. If double quotes are |
1027 |
expected to be in the system makefile directory. If double quotes are |
1028 |
used, the including makefile's directory and any directories specified |
1028 |
used, the including makefile's directory and any directories specified |
1029 |
using the --II option are searched before the system makefile directory. |
1029 |
using the [1m-I [22moption are searched before the system makefile directory. |
1030 |
For compatibility with other versions of bbmmaakkee `include file ...' is also |
1030 |
For compatibility with other versions of [1mbmake [22m`include file ...' is also |
1031 |
accepted. |
1031 |
accepted. |
1032 |
|
1032 |
|
1033 |
If the include statement is written as ..--iinncclluuddee or as ..ssiinncclluuddee then |
1033 |
If the include statement is written as [1m.-include [22mor as [1m.sinclude [22mthen |
1034 |
errors locating and/or opening include files are ignored. |
1034 |
errors locating and/or opening include files are ignored. |
1035 |
|
1035 |
|
1036 |
If the include statement is written as ..ddiinncclluuddee not only are errors |
1036 |
If the include statement is written as [1m.dinclude [22mnot only are errors |
1037 |
locating and/or opening include files ignored, but stale dependencies |
1037 |
locating and/or opening include files ignored, but stale dependencies |
1038 |
within the included file will be ignored just like _._M_A_K_E_._D_E_P_E_N_D_F_I_L_E. |
1038 |
within the included file will be ignored just like [4m.MAKE.DEPENDFILE[24m. |
1039 |
|
1039 |
|
1040 |
Conditional expressions are also preceded by a single dot as the first |
1040 |
Conditional expressions are also preceded by a single dot as the first |
1041 |
character of a line. The possible conditionals are as follows: |
1041 |
character of a line. The possible conditionals are as follows: |
1042 |
|
1042 |
|
1043 |
..eerrrroorr _m_e_s_s_a_g_e |
1043 |
[1m.error [4m[22mmessage[0m |
1044 |
The message is printed along with the name of the makefile and |
1044 |
The message is printed along with the name of the makefile and |
1045 |
line number, then bbmmaakkee will exit. |
1045 |
line number, then [1mbmake [22mwill exit. |
1046 |
|
1046 |
|
1047 |
..eexxppoorrtt _v_a_r_i_a_b_l_e _._._. |
1047 |
[1m.export [4m[22mvariable[24m [4m...[0m |
1048 |
Export the specified global variable. If no variable list is |
1048 |
Export the specified global variable. If no variable list is |
1049 |
provided, all globals are exported except for internal variables |
1049 |
provided, all globals are exported except for internal variables |
1050 |
(those that start with `.'). This is not affected by the --XX |
1050 |
(those that start with `.'). This is not affected by the [1m-X[0m |
1051 |
flag, so should be used with caution. For compatibility with |
1051 |
flag, so should be used with caution. For compatibility with |
1052 |
other bbmmaakkee programs `export variable=value' is also accepted. |
1052 |
other [1mbmake [22mprograms `export variable=value' is also accepted. |
1053 |
|
1053 |
|
1054 |
Appending a variable name to _._M_A_K_E_._E_X_P_O_R_T_E_D is equivalent to |
1054 |
Appending a variable name to [4m.MAKE.EXPORTED[24m is equivalent to |
1055 |
exporting a variable. |
1055 |
exporting a variable. |
1056 |
|
1056 |
|
1057 |
..eexxppoorrtt--eennvv _v_a_r_i_a_b_l_e _._._. |
1057 |
[1m.export-env [4m[22mvariable[24m [4m...[0m |
1058 |
The same as `.export', except that the variable is not appended |
1058 |
The same as `.export', except that the variable is not appended |
1059 |
to _._M_A_K_E_._E_X_P_O_R_T_E_D. This allows exporting a value to the environ- |
1059 |
to [4m.MAKE.EXPORTED[24m. This allows exporting a value to the environ- |
1060 |
ment which is different from that used by bbmmaakkee internally. |
1060 |
ment which is different from that used by [1mbmake [22minternally. |
1061 |
|
1061 |
|
1062 |
..eexxppoorrtt--lliitteerraall _v_a_r_i_a_b_l_e _._._. |
1062 |
[1m.export-literal [4m[22mvariable[24m [4m...[0m |
1063 |
The same as `.export-env', except that variables in the value are |
1063 |
The same as `.export-env', except that variables in the value are |
1064 |
not expanded. |
1064 |
not expanded. |
1065 |
|
1065 |
|
1066 |
..iinnffoo _m_e_s_s_a_g_e |
1066 |
[1m.info [4m[22mmessage[0m |
1067 |
The message is printed along with the name of the makefile and |
1067 |
The message is printed along with the name of the makefile and |
1068 |
line number. |
1068 |
line number. |
1069 |
|
1069 |
|
1070 |
..uunnddeeff _v_a_r_i_a_b_l_e |
1070 |
[1m.undef [4m[22mvariable[0m |
1071 |
Un-define the specified global variable. Only global variables |
1071 |
Un-define the specified global variable. Only global variables |
1072 |
may be un-defined. |
1072 |
may be un-defined. |
1073 |
|
1073 |
|
1074 |
..uunneexxppoorrtt _v_a_r_i_a_b_l_e _._._. |
1074 |
[1m.unexport [4m[22mvariable[24m [4m...[0m |
1075 |
The opposite of `.export'. The specified global _v_a_r_i_a_b_l_e will be |
1075 |
The opposite of `.export'. The specified global [4mvariable[24m will be |
1076 |
removed from _._M_A_K_E_._E_X_P_O_R_T_E_D. If no variable list is provided, |
1076 |
removed from [4m.MAKE.EXPORTED[24m. If no variable list is provided, |
1077 |
all globals are unexported, and _._M_A_K_E_._E_X_P_O_R_T_E_D deleted. |
1077 |
all globals are unexported, and [4m.MAKE.EXPORTED[24m deleted. |
1078 |
|
1078 |
|
1079 |
..uunneexxppoorrtt--eennvv |
1079 |
[1m.unexport-env[0m |
1080 |
Unexport all globals previously exported and clear the environ- |
1080 |
Unexport all globals previously exported and clear the environ- |
1081 |
ment inherited from the parent. This operation will cause a mem- |
1081 |
ment inherited from the parent. This operation will cause a mem- |
1082 |
ory leak of the original environment, so should be used spar- |
1082 |
ory leak of the original environment, so should be used spar- |
1083 |
ingly. Testing for _._M_A_K_E_._L_E_V_E_L being 0, would make sense. Also |
1083 |
ingly. Testing for [4m.MAKE.LEVEL[24m being 0, would make sense. Also |
1084 |
note that any variables which originated in the parent environ- |
1084 |
note that any variables which originated in the parent environ- |
1085 |
ment should be explicitly preserved if desired. For example: |
1085 |
ment should be explicitly preserved if desired. For example: |
1086 |
|
1086 |
|
Lines 1094-1241
Link Here
|
1094 |
the minimal useful environment. Actually `.MAKE.LEVEL' will also |
1094 |
the minimal useful environment. Actually `.MAKE.LEVEL' will also |
1095 |
be pushed into the new environment. |
1095 |
be pushed into the new environment. |
1096 |
|
1096 |
|
1097 |
..wwaarrnniinngg _m_e_s_s_a_g_e |
1097 |
[1m.warning [4m[22mmessage[0m |
1098 |
The message prefixed by `_w_a_r_n_i_n_g_:' is printed along with the name |
1098 |
The message prefixed by `[4mwarning:[24m' is printed along with the name |
1099 |
of the makefile and line number. |
1099 |
of the makefile and line number. |
1100 |
|
1100 |
|
1101 |
..iiff [!]_e_x_p_r_e_s_s_i_o_n [_o_p_e_r_a_t_o_r _e_x_p_r_e_s_s_i_o_n _._._.] |
1101 |
[1m.if [22m[!][4mexpression[24m [[4moperator[24m [4mexpression[24m [4m...[24m] |
1102 |
Test the value of an expression. |
1102 |
Test the value of an expression. |
1103 |
|
1103 |
|
1104 |
..iiffddeeff [!]_v_a_r_i_a_b_l_e [_o_p_e_r_a_t_o_r _v_a_r_i_a_b_l_e _._._.] |
1104 |
[1m.ifdef [22m[!][4mvariable[24m [[4moperator[24m [4mvariable[24m [4m...[24m] |
1105 |
Test the value of a variable. |
1105 |
Test the value of a variable. |
1106 |
|
1106 |
|
1107 |
..iiffnnddeeff [!]_v_a_r_i_a_b_l_e [_o_p_e_r_a_t_o_r _v_a_r_i_a_b_l_e _._._.] |
1107 |
[1m.ifndef [22m[!][4mvariable[24m [[4moperator[24m [4mvariable[24m [4m...[24m] |
1108 |
Test the value of a variable. |
1108 |
Test the value of a variable. |
1109 |
|
1109 |
|
1110 |
..iiffmmaakkee [!]_t_a_r_g_e_t [_o_p_e_r_a_t_o_r _t_a_r_g_e_t _._._.] |
1110 |
[1m.ifmake [22m[!][4mtarget[24m [[4moperator[24m [4mtarget[24m [4m...[24m] |
1111 |
Test the target being built. |
1111 |
Test the target being built. |
1112 |
|
1112 |
|
1113 |
..iiffnnmmaakkee [!] _t_a_r_g_e_t [_o_p_e_r_a_t_o_r _t_a_r_g_e_t _._._.] |
1113 |
[1m.ifnmake [22m[!] [4mtarget[24m [[4moperator[24m [4mtarget[24m [4m...[24m] |
1114 |
Test the target being built. |
1114 |
Test the target being built. |
1115 |
|
1115 |
|
1116 |
..eellssee Reverse the sense of the last conditional. |
1116 |
[1m.else [22mReverse the sense of the last conditional. |
1117 |
|
1117 |
|
1118 |
..eelliiff [!] _e_x_p_r_e_s_s_i_o_n [_o_p_e_r_a_t_o_r _e_x_p_r_e_s_s_i_o_n _._._.] |
1118 |
[1m.elif [22m[!] [4mexpression[24m [[4moperator[24m [4mexpression[24m [4m...[24m] |
1119 |
A combination of `..eellssee' followed by `..iiff'. |
1119 |
A combination of `[1m.else[22m' followed by `[1m.if[22m'. |
1120 |
|
1120 |
|
1121 |
..eelliiffddeeff [!]_v_a_r_i_a_b_l_e [_o_p_e_r_a_t_o_r _v_a_r_i_a_b_l_e _._._.] |
1121 |
[1m.elifdef [22m[!][4mvariable[24m [[4moperator[24m [4mvariable[24m [4m...[24m] |
1122 |
A combination of `..eellssee' followed by `..iiffddeeff'. |
1122 |
A combination of `[1m.else[22m' followed by `[1m.ifdef[22m'. |
1123 |
|
1123 |
|
1124 |
..eelliiffnnddeeff [!]_v_a_r_i_a_b_l_e [_o_p_e_r_a_t_o_r _v_a_r_i_a_b_l_e _._._.] |
1124 |
[1m.elifndef [22m[!][4mvariable[24m [[4moperator[24m [4mvariable[24m [4m...[24m] |
1125 |
A combination of `..eellssee' followed by `..iiffnnddeeff'. |
1125 |
A combination of `[1m.else[22m' followed by `[1m.ifndef[22m'. |
1126 |
|
1126 |
|
1127 |
..eelliiffmmaakkee [!]_t_a_r_g_e_t [_o_p_e_r_a_t_o_r _t_a_r_g_e_t _._._.] |
1127 |
[1m.elifmake [22m[!][4mtarget[24m [[4moperator[24m [4mtarget[24m [4m...[24m] |
1128 |
A combination of `..eellssee' followed by `..iiffmmaakkee'. |
1128 |
A combination of `[1m.else[22m' followed by `[1m.ifmake[22m'. |
1129 |
|
1129 |
|
1130 |
..eelliiffnnmmaakkee [!]_t_a_r_g_e_t [_o_p_e_r_a_t_o_r _t_a_r_g_e_t _._._.] |
1130 |
[1m.elifnmake [22m[!][4mtarget[24m [[4moperator[24m [4mtarget[24m [4m...[24m] |
1131 |
A combination of `..eellssee' followed by `..iiffnnmmaakkee'. |
1131 |
A combination of `[1m.else[22m' followed by `[1m.ifnmake[22m'. |
1132 |
|
1132 |
|
1133 |
..eennddiiff End the body of the conditional. |
1133 |
[1m.endif [22mEnd the body of the conditional. |
1134 |
|
1134 |
|
1135 |
The _o_p_e_r_a_t_o_r may be any one of the following: |
1135 |
The [4moperator[24m may be any one of the following: |
1136 |
|
1136 |
|
1137 |
|||| Logical OR. |
1137 |
[1m|| [22mLogical OR. |
1138 |
|
1138 |
|
1139 |
&&&& Logical AND; of higher precedence than ``||''. |
1139 |
[1m&& [22mLogical AND; of higher precedence than ``||''. |
1140 |
|
1140 |
|
1141 |
As in C, bbmmaakkee will only evaluate a conditional as far as is necessary to |
1141 |
As in C, [1mbmake [22mwill only evaluate a conditional as far as is necessary to |
1142 |
determine its value. Parentheses may be used to change the order of |
1142 |
determine its value. Parentheses may be used to change the order of |
1143 |
evaluation. The boolean operator `!!' may be used to logically negate an |
1143 |
evaluation. The boolean operator `[1m![22m' may be used to logically negate an |
1144 |
entire conditional. It is of higher precedence than `&&&&'. |
1144 |
entire conditional. It is of higher precedence than `[1m&&[22m'. |
1145 |
|
1145 |
|
1146 |
The value of _e_x_p_r_e_s_s_i_o_n may be any of the following: |
1146 |
The value of [4mexpression[24m may be any of the following: |
1147 |
|
1147 |
|
1148 |
ddeeffiinneedd Takes a variable name as an argument and evaluates to true if |
1148 |
[1mdefined [22mTakes a variable name as an argument and evaluates to true if |
1149 |
the variable has been defined. |
1149 |
the variable has been defined. |
1150 |
|
1150 |
|
1151 |
mmaakkee Takes a target name as an argument and evaluates to true if the |
1151 |
[1mmake [22mTakes a target name as an argument and evaluates to true if the |
1152 |
target was specified as part of bbmmaakkee's command line or was |
1152 |
target was specified as part of [1mbmake[22m's command line or was |
1153 |
declared the default target (either implicitly or explicitly, |
1153 |
declared the default target (either implicitly or explicitly, |
1154 |
see _._M_A_I_N) before the line containing the conditional. |
1154 |
see [4m.MAIN[24m) before the line containing the conditional. |
1155 |
|
1155 |
|
1156 |
eemmppttyy Takes a variable, with possible modifiers, and evaluates to true |
1156 |
[1mempty [22mTakes a variable, with possible modifiers, and evaluates to true |
1157 |
if the expansion of the variable would result in an empty |
1157 |
if the expansion of the variable would result in an empty |
1158 |
string. |
1158 |
string. |
1159 |
|
1159 |
|
1160 |
eexxiissttss Takes a file name as an argument and evaluates to true if the |
1160 |
[1mexists [22mTakes a file name as an argument and evaluates to true if the |
1161 |
file exists. The file is searched for on the system search path |
1161 |
file exists. The file is searched for on the system search path |
1162 |
(see _._P_A_T_H). |
1162 |
(see [4m.PATH[24m). |
1163 |
|
1163 |
|
1164 |
ttaarrggeett Takes a target name as an argument and evaluates to true if the |
1164 |
[1mtarget [22mTakes a target name as an argument and evaluates to true if the |
1165 |
target has been defined. |
1165 |
target has been defined. |
1166 |
|
1166 |
|
1167 |
ccoommmmaannddss |
1167 |
[1mcommands[0m |
1168 |
Takes a target name as an argument and evaluates to true if the |
1168 |
Takes a target name as an argument and evaluates to true if the |
1169 |
target has been defined and has commands associated with it. |
1169 |
target has been defined and has commands associated with it. |
1170 |
|
1170 |
|
1171 |
_E_x_p_r_e_s_s_i_o_n may also be an arithmetic or string comparison. Variable |
1171 |
[4mExpression[24m may also be an arithmetic or string comparison. Variable |
1172 |
expansion is performed on both sides of the comparison, after which the |
1172 |
expansion is performed on both sides of the comparison, after which the |
1173 |
integral values are compared. A value is interpreted as hexadecimal if |
1173 |
integral values are compared. A value is interpreted as hexadecimal if |
1174 |
it is preceded by 0x, otherwise it is decimal; octal numbers are not sup- |
1174 |
it is preceded by 0x, otherwise it is decimal; octal numbers are not sup- |
1175 |
ported. The standard C relational operators are all supported. If after |
1175 |
ported. The standard C relational operators are all supported. If after |
1176 |
variable expansion, either the left or right hand side of a `====' or `!!==' |
1176 |
variable expansion, either the left or right hand side of a `[1m==[22m' or `[1m!=[22m' |
1177 |
operator is not an integral value, then string comparison is performed |
1177 |
operator is not an integral value, then string comparison is performed |
1178 |
between the expanded variables. If no relational operator is given, it |
1178 |
between the expanded variables. If no relational operator is given, it |
1179 |
is assumed that the expanded variable is being compared against 0 or an |
1179 |
is assumed that the expanded variable is being compared against 0 or an |
1180 |
empty string in the case of a string comparison. |
1180 |
empty string in the case of a string comparison. |
1181 |
|
1181 |
|
1182 |
When bbmmaakkee is evaluating one of these conditional expressions, and it |
1182 |
When [1mbmake [22mis evaluating one of these conditional expressions, and it |
1183 |
encounters a (white-space separated) word it doesn't recognize, either |
1183 |
encounters a (white-space separated) word it doesn't recognize, either |
1184 |
the ``make'' or ``defined'' expression is applied to it, depending on the |
1184 |
the ``make'' or ``defined'' expression is applied to it, depending on the |
1185 |
form of the conditional. If the form is `..iiffddeeff', `..iiffnnddeeff', or `..iiff' |
1185 |
form of the conditional. If the form is `[1m.ifdef[22m', `[1m.ifndef[22m', or `[1m.if[22m' |
1186 |
the ``defined'' expression is applied. Similarly, if the form is |
1186 |
the ``defined'' expression is applied. Similarly, if the form is |
1187 |
`..iiffmmaakkee' or `..iiffnnmmaakkee, tthhee' ``make'' expression is applied. |
1187 |
`[1m.ifmake[22m' or `[1m.ifnmake[22m, [1mthe[22m' ``make'' expression is applied. |
1188 |
|
1188 |
|
1189 |
If the conditional evaluates to true the parsing of the makefile contin- |
1189 |
If the conditional evaluates to true the parsing of the makefile contin- |
1190 |
ues as before. If it evaluates to false, the following lines are |
1190 |
ues as before. If it evaluates to false, the following lines are |
1191 |
skipped. In both cases this continues until a `..eellssee' or `..eennddiiff' is |
1191 |
skipped. In both cases this continues until a `[1m.else[22m' or `[1m.endif[22m' is |
1192 |
found. |
1192 |
found. |
1193 |
|
1193 |
|
1194 |
For loops are typically used to apply a set of rules to a list of files. |
1194 |
For loops are typically used to apply a set of rules to a list of files. |
1195 |
The syntax of a for loop is: |
1195 |
The syntax of a for loop is: |
1196 |
|
1196 |
|
1197 |
..ffoorr _v_a_r_i_a_b_l_e [_v_a_r_i_a_b_l_e _._._.] iinn _e_x_p_r_e_s_s_i_o_n |
1197 |
[1m.for [4m[22mvariable[24m [[4mvariable[24m [4m...[24m] [1min [4m[22mexpression[0m |
1198 |
<make-rules> |
1198 |
<make-rules> |
1199 |
..eennddffoorr |
1199 |
[1m.endfor[0m |
1200 |
|
1200 |
|
1201 |
After the for eexxpprreessssiioonn is evaluated, it is split into words. On each |
1201 |
After the for [1mexpression [22mis evaluated, it is split into words. On each |
1202 |
iteration of the loop, one word is taken and assigned to each vvaarriiaabbllee, |
1202 |
iteration of the loop, one word is taken and assigned to each [1mvariable[22m, |
1203 |
in order, and these vvaarriiaabblleess are substituted into the mmaakkee--rruulleess inside |
1203 |
in order, and these [1mvariables [22mare substituted into the [1mmake-rules [22minside |
1204 |
the body of the for loop. The number of words must come out even; that |
1204 |
the body of the for loop. The number of words must come out even; that |
1205 |
is, if there are three iteration variables, the number of words provided |
1205 |
is, if there are three iteration variables, the number of words provided |
1206 |
must be a multiple of three. |
1206 |
must be a multiple of three. |
1207 |
|
1207 |
|
1208 |
CCOOMMMMEENNTTSS |
1208 |
[1mCOMMENTS[0m |
1209 |
Comments begin with a hash (`#') character, anywhere but in a shell com- |
1209 |
Comments begin with a hash (`#') character, anywhere but in a shell com- |
1210 |
mand line, and continue to the end of an unescaped new line. |
1210 |
mand line, and continue to the end of an unescaped new line. |
1211 |
|
1211 |
|
1212 |
SSPPEECCIIAALL SSOOUURRCCEESS ((AATTTTRRIIBBUUTTEESS)) |
1212 |
[1mSPECIAL SOURCES (ATTRIBUTES)[0m |
1213 |
..EEXXEECC Target is never out of date, but always execute commands any- |
1213 |
[1m.EXEC [22mTarget is never out of date, but always execute commands any- |
1214 |
way. |
1214 |
way. |
1215 |
|
1215 |
|
1216 |
..IIGGNNOORREE Ignore any errors from the commands associated with this tar- |
1216 |
[1m.IGNORE [22mIgnore any errors from the commands associated with this tar- |
1217 |
get, exactly as if they all were preceded by a dash (`-'). |
1217 |
get, exactly as if they all were preceded by a dash (`-'). |
1218 |
|
1218 |
|
1219 |
..MMAADDEE Mark all sources of this target as being up-to-date. |
1219 |
[1m.MADE [22mMark all sources of this target as being up-to-date. |
1220 |
|
1220 |
|
1221 |
..MMAAKKEE Execute the commands associated with this target even if the --nn |
1221 |
[1m.MAKE [22mExecute the commands associated with this target even if the [1m-n[0m |
1222 |
or --tt options were specified. Normally used to mark recursive |
1222 |
or [1m-t [22moptions were specified. Normally used to mark recursive |
1223 |
bbmmaakkees. |
1223 |
[1mbmake[22ms. |
1224 |
|
1224 |
|
1225 |
..MMEETTAA Create a meta file for the target, even if it is flagged as |
1225 |
[1m.META [22mCreate a meta file for the target, even if it is flagged as |
1226 |
..PPHHOONNYY, ..MMAAKKEE, or ..SSPPEECCIIAALL. Usage in conjunction with ..MMAAKKEE is |
1226 |
[1m.PHONY[22m, [1m.MAKE[22m, or [1m.SPECIAL[22m. Usage in conjunction with [1m.MAKE [22mis |
1227 |
the most likely case. In "meta" mode, the target is out-of- |
1227 |
the most likely case. In "meta" mode, the target is out-of- |
1228 |
date if the meta file is missing. |
1228 |
date if the meta file is missing. |
1229 |
|
1229 |
|
1230 |
..NNOOMMEETTAA Do not create a meta file for the target. Meta files are also |
1230 |
[1m.NOMETA [22mDo not create a meta file for the target. Meta files are also |
1231 |
not created for ..PPHHOONNYY, ..MMAAKKEE, or ..SSPPEECCIIAALL targets. |
1231 |
not created for [1m.PHONY[22m, [1m.MAKE[22m, or [1m.SPECIAL [22mtargets. |
1232 |
|
1232 |
|
1233 |
..NNOOMMEETTAA__CCMMPP |
1233 |
[1m.NOMETA_CMP[0m |
1234 |
Ignore differences in commands when deciding if target is out |
1234 |
Ignore differences in commands when deciding if target is out |
1235 |
of date. This is useful if the command contains a value which |
1235 |
of date. This is useful if the command contains a value which |
1236 |
always changes. If the number of commands change, though, the |
1236 |
always changes. If the number of commands change, though, the |
1237 |
target will still be out of date. The same effect applies to |
1237 |
target will still be out of date. The same effect applies to |
1238 |
any command line that uses the variable _._O_O_D_A_T_E, which can be |
1238 |
any command line that uses the variable [4m.OODATE[24m, which can be |
1239 |
used for that purpose even when not otherwise needed or |
1239 |
used for that purpose even when not otherwise needed or |
1240 |
desired: |
1240 |
desired: |
1241 |
|
1241 |
|
Lines 1245-1292
Link Here
|
1245 |
@echo this will not ${.OODATE:M.NOMETA_CMP} |
1245 |
@echo this will not ${.OODATE:M.NOMETA_CMP} |
1246 |
@echo this will also be compared |
1246 |
@echo this will also be compared |
1247 |
|
1247 |
|
1248 |
The ::MM pattern suppresses any expansion of the unwanted vari- |
1248 |
The [1m:M [22mpattern suppresses any expansion of the unwanted vari- |
1249 |
able. |
1249 |
able. |
1250 |
|
1250 |
|
1251 |
..NNOOPPAATTHH Do not search for the target in the directories specified by |
1251 |
[1m.NOPATH [22mDo not search for the target in the directories specified by |
1252 |
..PPAATTHH. |
1252 |
[1m.PATH[22m. |
1253 |
|
1253 |
|
1254 |
..NNOOTTMMAAIINN Normally bbmmaakkee selects the first target it encounters as the |
1254 |
[1m.NOTMAIN [22mNormally [1mbmake [22mselects the first target it encounters as the |
1255 |
default target to be built if no target was specified. This |
1255 |
default target to be built if no target was specified. This |
1256 |
source prevents this target from being selected. |
1256 |
source prevents this target from being selected. |
1257 |
|
1257 |
|
1258 |
..OOPPTTIIOONNAALL |
1258 |
[1m.OPTIONAL[0m |
1259 |
If a target is marked with this attribute and bbmmaakkee can't fig- |
1259 |
If a target is marked with this attribute and [1mbmake [22mcan't fig- |
1260 |
ure out how to create it, it will ignore this fact and assume |
1260 |
ure out how to create it, it will ignore this fact and assume |
1261 |
the file isn't needed or already exists. |
1261 |
the file isn't needed or already exists. |
1262 |
|
1262 |
|
1263 |
..PPHHOONNYY The target does not correspond to an actual file; it is always |
1263 |
[1m.PHONY [22mThe target does not correspond to an actual file; it is always |
1264 |
considered to be out of date, and will not be created with the |
1264 |
considered to be out of date, and will not be created with the |
1265 |
--tt option. Suffix-transformation rules are not applied to |
1265 |
[1m-t [22moption. Suffix-transformation rules are not applied to |
1266 |
..PPHHOONNYY targets. |
1266 |
[1m.PHONY [22mtargets. |
1267 |
|
1267 |
|
1268 |
..PPRREECCIIOOUUSS |
1268 |
[1m.PRECIOUS[0m |
1269 |
When bbmmaakkee is interrupted, it normally removes any partially |
1269 |
When [1mbmake [22mis interrupted, it normally removes any partially |
1270 |
made targets. This source prevents the target from being |
1270 |
made targets. This source prevents the target from being |
1271 |
removed. |
1271 |
removed. |
1272 |
|
1272 |
|
1273 |
..RREECCUURRSSIIVVEE |
1273 |
[1m.RECURSIVE[0m |
1274 |
Synonym for ..MMAAKKEE. |
1274 |
Synonym for [1m.MAKE[22m. |
1275 |
|
1275 |
|
1276 |
..SSIILLEENNTT Do not echo any of the commands associated with this target, |
1276 |
[1m.SILENT [22mDo not echo any of the commands associated with this target, |
1277 |
exactly as if they all were preceded by an at sign (`@'). |
1277 |
exactly as if they all were preceded by an at sign (`@'). |
1278 |
|
1278 |
|
1279 |
..UUSSEE Turn the target into bbmmaakkee's version of a macro. When the tar- |
1279 |
[1m.USE [22mTurn the target into [1mbmake[22m's version of a macro. When the tar- |
1280 |
get is used as a source for another target, the other target |
1280 |
get is used as a source for another target, the other target |
1281 |
acquires the commands, sources, and attributes (except for |
1281 |
acquires the commands, sources, and attributes (except for |
1282 |
..UUSSEE) of the source. If the target already has commands, the |
1282 |
[1m.USE[22m) of the source. If the target already has commands, the |
1283 |
..UUSSEE target's commands are appended to them. |
1283 |
[1m.USE [22mtarget's commands are appended to them. |
1284 |
|
1284 |
|
1285 |
..UUSSEEBBEEFFOORREE |
1285 |
[1m.USEBEFORE[0m |
1286 |
Exactly like ..UUSSEE, but prepend the ..UUSSEEBBEEFFOORREE target commands |
1286 |
Exactly like [1m.USE[22m, but prepend the [1m.USEBEFORE [22mtarget commands |
1287 |
to the target. |
1287 |
to the target. |
1288 |
|
1288 |
|
1289 |
..WWAAIITT If ..WWAAIITT appears in a dependency line, the sources that precede |
1289 |
[1m.WAIT [22mIf [1m.WAIT [22mappears in a dependency line, the sources that precede |
1290 |
it are made before the sources that succeed it in the line. |
1290 |
it are made before the sources that succeed it in the line. |
1291 |
Since the dependents of files are not made until the file |
1291 |
Since the dependents of files are not made until the file |
1292 |
itself could be made, this also stops the dependents being |
1292 |
itself could be made, this also stops the dependents being |
Lines 1303-1326
Link Here
|
1303 |
echo b1 |
1303 |
echo b1 |
1304 |
|
1304 |
|
1305 |
the output is always `a', `b1', `b', `x'. |
1305 |
the output is always `a', `b1', `b', `x'. |
1306 |
The ordering imposed by ..WWAAIITT is only relevant for parallel |
1306 |
The ordering imposed by [1m.WAIT [22mis only relevant for parallel |
1307 |
makes. |
1307 |
makes. |
1308 |
|
1308 |
|
1309 |
SSPPEECCIIAALL TTAARRGGEETTSS |
1309 |
[1mSPECIAL TARGETS[0m |
1310 |
Special targets may not be included with other targets, i.e. they must be |
1310 |
Special targets may not be included with other targets, i.e. they must be |
1311 |
the only target specified. |
1311 |
the only target specified. |
1312 |
|
1312 |
|
1313 |
..BBEEGGIINN Any command lines attached to this target are executed before |
1313 |
[1m.BEGIN [22mAny command lines attached to this target are executed before |
1314 |
anything else is done. |
1314 |
anything else is done. |
1315 |
|
1315 |
|
1316 |
..DDEEFFAAUULLTT |
1316 |
[1m.DEFAULT[0m |
1317 |
This is sort of a ..UUSSEE rule for any target (that was used only |
1317 |
This is sort of a [1m.USE [22mrule for any target (that was used only |
1318 |
as a source) that bbmmaakkee can't figure out any other way to cre- |
1318 |
as a source) that [1mbmake [22mcan't figure out any other way to cre- |
1319 |
ate. Only the shell script is used. The ..IIMMPPSSRRCC variable of a |
1319 |
ate. Only the shell script is used. The [1m.IMPSRC [22mvariable of a |
1320 |
target that inherits ..DDEEFFAAUULLTT's commands is set to the target's |
1320 |
target that inherits [1m.DEFAULT[22m's commands is set to the target's |
1321 |
own name. |
1321 |
own name. |
1322 |
|
1322 |
|
1323 |
..DDEELLEETTEE__OONN__EERRRROORR |
1323 |
[1m.DELETE_ON_ERROR[0m |
1324 |
If this target is present in the makefile, it globally causes |
1324 |
If this target is present in the makefile, it globally causes |
1325 |
make to delete targets whose commands fail. (By default, only |
1325 |
make to delete targets whose commands fail. (By default, only |
1326 |
targets whose commands are interrupted during execution are |
1326 |
targets whose commands are interrupted during execution are |
Lines 1328-1369
Link Here
|
1328 |
used to help prevent half-finished or malformed targets from |
1328 |
used to help prevent half-finished or malformed targets from |
1329 |
being left around and corrupting future rebuilds. |
1329 |
being left around and corrupting future rebuilds. |
1330 |
|
1330 |
|
1331 |
..EENNDD Any command lines attached to this target are executed after |
1331 |
[1m.END [22mAny command lines attached to this target are executed after |
1332 |
everything else is done. |
1332 |
everything else is done. |
1333 |
|
1333 |
|
1334 |
..EERRRROORR Any command lines attached to this target are executed when |
1334 |
[1m.ERROR [22mAny command lines attached to this target are executed when |
1335 |
another target fails. The ..EERRRROORR__TTAARRGGEETT variable is set to the |
1335 |
another target fails. The [1m.ERROR_TARGET [22mvariable is set to the |
1336 |
target that failed. See also MMAAKKEE__PPRRIINNTT__VVAARR__OONN__EERRRROORR. |
1336 |
target that failed. See also [1mMAKE_PRINT_VAR_ON_ERROR[22m. |
1337 |
|
1337 |
|
1338 |
..IIGGNNOORREE Mark each of the sources with the ..IIGGNNOORREE attribute. If no |
1338 |
[1m.IGNORE [22mMark each of the sources with the [1m.IGNORE [22mattribute. If no |
1339 |
sources are specified, this is the equivalent of specifying the |
1339 |
sources are specified, this is the equivalent of specifying the |
1340 |
--ii option. |
1340 |
[1m-i [22moption. |
1341 |
|
1341 |
|
1342 |
..IINNTTEERRRRUUPPTT |
1342 |
[1m.INTERRUPT[0m |
1343 |
If bbmmaakkee is interrupted, the commands for this target will be |
1343 |
If [1mbmake [22mis interrupted, the commands for this target will be |
1344 |
executed. |
1344 |
executed. |
1345 |
|
1345 |
|
1346 |
..MMAAIINN If no target is specified when bbmmaakkee is invoked, this target |
1346 |
[1m.MAIN [22mIf no target is specified when [1mbmake [22mis invoked, this target |
1347 |
will be built. |
1347 |
will be built. |
1348 |
|
1348 |
|
1349 |
..MMAAKKEEFFLLAAGGSS |
1349 |
[1m.MAKEFLAGS[0m |
1350 |
This target provides a way to specify flags for bbmmaakkee when the |
1350 |
This target provides a way to specify flags for [1mbmake [22mwhen the |
1351 |
makefile is used. The flags are as if typed to the shell, |
1351 |
makefile is used. The flags are as if typed to the shell, |
1352 |
though the --ff option will have no effect. |
1352 |
though the [1m-f [22moption will have no effect. |
1353 |
|
1353 |
|
1354 |
..NNOOPPAATTHH Apply the ..NNOOPPAATTHH attribute to any specified sources. |
1354 |
[1m.NOPATH [22mApply the [1m.NOPATH [22mattribute to any specified sources. |
1355 |
|
1355 |
|
1356 |
..NNOOTTPPAARRAALLLLEELL |
1356 |
[1m.NOTPARALLEL[0m |
1357 |
Disable parallel mode. |
1357 |
Disable parallel mode. |
1358 |
|
1358 |
|
1359 |
..NNOO__PPAARRAALLLLEELL |
1359 |
[1m.NO_PARALLEL[0m |
1360 |
Synonym for ..NNOOTTPPAARRAALLLLEELL, for compatibility with other pmake |
1360 |
Synonym for [1m.NOTPARALLEL[22m, for compatibility with other pmake |
1361 |
variants. |
1361 |
variants. |
1362 |
|
1362 |
|
1363 |
..OOBBJJDDIIRR The source is a new value for `_._O_B_J_D_I_R'. If it exists, bbmmaakkee |
1363 |
[1m.OBJDIR [22mThe source is a new value for `[4m.OBJDIR[24m'. If it exists, [1mbmake[0m |
1364 |
will chdir(2) to it and update the value of `_._O_B_J_D_I_R'. |
1364 |
will chdir(2) to it and update the value of `[4m.OBJDIR[24m'. |
1365 |
|
1365 |
|
1366 |
..OORRDDEERR The named targets are made in sequence. This ordering does not |
1366 |
[1m.ORDER [22mThe named targets are made in sequence. This ordering does not |
1367 |
add targets to the list of targets to be made. Since the depen- |
1367 |
add targets to the list of targets to be made. Since the depen- |
1368 |
dents of a target do not get built until the target itself could |
1368 |
dents of a target do not get built until the target itself could |
1369 |
be built, unless `a' is built by another part of the dependency |
1369 |
be built, unless `a' is built by another part of the dependency |
Lines 1372-1425
Link Here
|
1372 |
.ORDER: b a |
1372 |
.ORDER: b a |
1373 |
b: a |
1373 |
b: a |
1374 |
|
1374 |
|
1375 |
The ordering imposed by ..OORRDDEERR is only relevant for parallel |
1375 |
The ordering imposed by [1m.ORDER [22mis only relevant for parallel |
1376 |
makes. |
1376 |
makes. |
1377 |
|
1377 |
|
1378 |
..PPAATTHH The sources are directories which are to be searched for files |
1378 |
[1m.PATH [22mThe sources are directories which are to be searched for files |
1379 |
not found in the current directory. If no sources are speci- |
1379 |
not found in the current directory. If no sources are speci- |
1380 |
fied, any previously specified directories are deleted. If the |
1380 |
fied, any previously specified directories are deleted. If the |
1381 |
source is the special ..DDOOTTLLAASSTT target, then the current working |
1381 |
source is the special [1m.DOTLAST [22mtarget, then the current working |
1382 |
directory is searched last. |
1382 |
directory is searched last. |
1383 |
|
1383 |
|
1384 |
..PPAATTHH.._s_u_f_f_i_x |
1384 |
[1m.PATH.[4m[22msuffix[0m |
1385 |
Like ..PPAATTHH but applies only to files with a particular suffix. |
1385 |
Like [1m.PATH [22mbut applies only to files with a particular suffix. |
1386 |
The suffix must have been previously declared with ..SSUUFFFFIIXXEESS. |
1386 |
The suffix must have been previously declared with [1m.SUFFIXES[22m. |
1387 |
|
1387 |
|
1388 |
..PPHHOONNYY Apply the ..PPHHOONNYY attribute to any specified sources. |
1388 |
[1m.PHONY [22mApply the [1m.PHONY [22mattribute to any specified sources. |
1389 |
|
1389 |
|
1390 |
..PPRREECCIIOOUUSS |
1390 |
[1m.PRECIOUS[0m |
1391 |
Apply the ..PPRREECCIIOOUUSS attribute to any specified sources. If no |
1391 |
Apply the [1m.PRECIOUS [22mattribute to any specified sources. If no |
1392 |
sources are specified, the ..PPRREECCIIOOUUSS attribute is applied to |
1392 |
sources are specified, the [1m.PRECIOUS [22mattribute is applied to |
1393 |
every target in the file. |
1393 |
every target in the file. |
1394 |
|
1394 |
|
1395 |
..SSHHEELLLL Sets the shell that bbmmaakkee will use to execute commands. The |
1395 |
[1m.SHELL [22mSets the shell that [1mbmake [22mwill use to execute commands. The |
1396 |
sources are a set of _f_i_e_l_d_=_v_a_l_u_e pairs. |
1396 |
sources are a set of [4mfield=value[24m pairs. |
1397 |
|
1397 |
|
1398 |
_n_a_m_e This is the minimal specification, used to select |
1398 |
[4mname[24m This is the minimal specification, used to select |
1399 |
one of the built-in shell specs; _s_h, _k_s_h, and _c_s_h. |
1399 |
one of the built-in shell specs; [4msh[24m, [4mksh[24m, and [4mcsh[24m. |
1400 |
|
1400 |
|
1401 |
_p_a_t_h Specifies the path to the shell. |
1401 |
[4mpath[24m Specifies the path to the shell. |
1402 |
|
1402 |
|
1403 |
_h_a_s_E_r_r_C_t_l Indicates whether the shell supports exit on error. |
1403 |
[4mhasErrCtl[24m Indicates whether the shell supports exit on error. |
1404 |
|
1404 |
|
1405 |
_c_h_e_c_k The command to turn on error checking. |
1405 |
[4mcheck[24m The command to turn on error checking. |
1406 |
|
1406 |
|
1407 |
_i_g_n_o_r_e The command to disable error checking. |
1407 |
[4mignore[24m The command to disable error checking. |
1408 |
|
1408 |
|
1409 |
_e_c_h_o The command to turn on echoing of commands executed. |
1409 |
[4mecho[24m The command to turn on echoing of commands executed. |
1410 |
|
1410 |
|
1411 |
_q_u_i_e_t The command to turn off echoing of commands exe- |
1411 |
[4mquiet[24m The command to turn off echoing of commands exe- |
1412 |
cuted. |
1412 |
cuted. |
1413 |
|
1413 |
|
1414 |
_f_i_l_t_e_r The output to filter after issuing the _q_u_i_e_t com- |
1414 |
[4mfilter[24m The output to filter after issuing the [4mquiet[24m com- |
1415 |
mand. It is typically identical to _q_u_i_e_t. |
1415 |
mand. It is typically identical to [4mquiet[24m. |
1416 |
|
1416 |
|
1417 |
_e_r_r_F_l_a_g The flag to pass the shell to enable error checking. |
1417 |
[4merrFlag[24m The flag to pass the shell to enable error checking. |
1418 |
|
1418 |
|
1419 |
_e_c_h_o_F_l_a_g The flag to pass the shell to enable command echo- |
1419 |
[4mechoFlag[24m The flag to pass the shell to enable command echo- |
1420 |
ing. |
1420 |
ing. |
1421 |
|
1421 |
|
1422 |
_n_e_w_l_i_n_e The string literal to pass the shell that results in |
1422 |
[4mnewline[24m The string literal to pass the shell that results in |
1423 |
a single newline character when used outside of any |
1423 |
a single newline character when used outside of any |
1424 |
quoting characters. |
1424 |
quoting characters. |
1425 |
Example: |
1425 |
Example: |
Lines 1429-1443
Link Here
|
1429 |
echo="set -v" quiet="set +v" filter="set +v" \ |
1429 |
echo="set -v" quiet="set +v" filter="set +v" \ |
1430 |
echoFlag=v errFlag=e newline="'\n'" |
1430 |
echoFlag=v errFlag=e newline="'\n'" |
1431 |
|
1431 |
|
1432 |
..SSIILLEENNTT Apply the ..SSIILLEENNTT attribute to any specified sources. If no |
1432 |
[1m.SILENT [22mApply the [1m.SILENT [22mattribute to any specified sources. If no |
1433 |
sources are specified, the ..SSIILLEENNTT attribute is applied to every |
1433 |
sources are specified, the [1m.SILENT [22mattribute is applied to every |
1434 |
command in the file. |
1434 |
command in the file. |
1435 |
|
1435 |
|
1436 |
..SSTTAALLEE This target gets run when a dependency file contains stale |
1436 |
[1m.STALE [22mThis target gets run when a dependency file contains stale |
1437 |
entries, having _._A_L_L_S_R_C set to the name of that dependency file. |
1437 |
entries, having [4m.ALLSRC[24m set to the name of that dependency file. |
1438 |
|
1438 |
|
1439 |
..SSUUFFFFIIXXEESS |
1439 |
[1m.SUFFIXES[0m |
1440 |
Each source specifies a suffix to bbmmaakkee. If no sources are |
1440 |
Each source specifies a suffix to [1mbmake[22m. If no sources are |
1441 |
specified, any previously specified suffixes are deleted. It |
1441 |
specified, any previously specified suffixes are deleted. It |
1442 |
allows the creation of suffix-transformation rules. |
1442 |
allows the creation of suffix-transformation rules. |
1443 |
|
1443 |
|
Lines 1447-1462
Link Here
|
1447 |
.c.o: |
1447 |
.c.o: |
1448 |
cc -o ${.TARGET} -c ${.IMPSRC} |
1448 |
cc -o ${.TARGET} -c ${.IMPSRC} |
1449 |
|
1449 |
|
1450 |
EENNVVIIRROONNMMEENNTT |
1450 |
[1mENVIRONMENT[0m |
1451 |
bbmmaakkee uses the following environment variables, if they exist: MACHINE, |
1451 |
[1mbmake [22muses the following environment variables, if they exist: MACHINE, |
1452 |
MACHINE_ARCH, MAKE, MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX, MAKESYSPATH, |
1452 |
MACHINE_ARCH, MAKE, MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX, MAKESYSPATH, |
1453 |
PWD, and TMPDIR. |
1453 |
PWD, and TMPDIR. |
1454 |
|
1454 |
|
1455 |
MAKEOBJDIRPREFIX and MAKEOBJDIR may only be set in the environment or on |
1455 |
MAKEOBJDIRPREFIX and MAKEOBJDIR may only be set in the environment or on |
1456 |
the command line to bbmmaakkee and not as makefile variables; see the descrip- |
1456 |
the command line to [1mbmake [22mand not as makefile variables; see the descrip- |
1457 |
tion of `_._O_B_J_D_I_R' for more details. |
1457 |
tion of `[4m.OBJDIR[24m' for more details. |
1458 |
|
1458 |
|
1459 |
FFIILLEESS |
1459 |
[1mFILES[0m |
1460 |
.depend list of dependencies |
1460 |
.depend list of dependencies |
1461 |
Makefile list of dependencies |
1461 |
Makefile list of dependencies |
1462 |
makefile list of dependencies |
1462 |
makefile list of dependencies |
Lines 1463-1475
Link Here
|
1463 |
sys.mk system makefile |
1463 |
sys.mk system makefile |
1464 |
/usr/share/mk system makefile directory |
1464 |
/usr/share/mk system makefile directory |
1465 |
|
1465 |
|
1466 |
CCOOMMPPAATTIIBBIILLIITTYY |
1466 |
[1mCOMPATIBILITY[0m |
1467 |
The basic make syntax is compatible between different versions of make; |
1467 |
The basic make syntax is compatible between different versions of make; |
1468 |
however the special variables, variable modifiers and conditionals are |
1468 |
however the special variables, variable modifiers and conditionals are |
1469 |
not. |
1469 |
not. |
1470 |
|
1470 |
|
1471 |
OOllddeerr vveerrssiioonnss |
1471 |
[1mOlder versions[0m |
1472 |
An incomplete list of changes in older versions of bbmmaakkee: |
1472 |
An incomplete list of changes in older versions of [1mbmake[22m: |
1473 |
|
1473 |
|
1474 |
The way that .for loop variables are substituted changed after NetBSD 5.0 |
1474 |
The way that .for loop variables are substituted changed after NetBSD 5.0 |
1475 |
so that they still appear to be variable expansions. In particular this |
1475 |
so that they still appear to be variable expansions. In particular this |
Lines 1480-1526
Link Here
|
1480 |
.ORDER and .WAIT apply recursively to the dependent nodes. The algo- |
1480 |
.ORDER and .WAIT apply recursively to the dependent nodes. The algo- |
1481 |
rithms used may change again in the future. |
1481 |
rithms used may change again in the future. |
1482 |
|
1482 |
|
1483 |
OOtthheerr mmaakkee ddiiaalleeccttss |
1483 |
[1mOther make dialects[0m |
1484 |
Other make dialects (GNU make, SVR4 make, POSIX make, etc.) do not sup- |
1484 |
Other make dialects (GNU make, SVR4 make, POSIX make, etc.) do not sup- |
1485 |
port most of the features of bbmmaakkee as described in this manual. Most |
1485 |
port most of the features of [1mbmake [22mas described in this manual. Most |
1486 |
notably: |
1486 |
notably: |
1487 |
|
1487 |
|
1488 |
++oo The ..WWAAIITT and ..OORRDDEERR declarations and most functionality per- |
1488 |
[1m+o [22mThe [1m.WAIT [22mand [1m.ORDER [22mdeclarations and most functionality per- |
1489 |
taining to parallelization. (GNU make supports parallelization |
1489 |
taining to parallelization. (GNU make supports parallelization |
1490 |
but lacks these features needed to control it effectively.) |
1490 |
but lacks these features needed to control it effectively.) |
1491 |
|
1491 |
|
1492 |
++oo Directives, including for loops and conditionals and most of |
1492 |
[1m+o [22mDirectives, including for loops and conditionals and most of |
1493 |
the forms of include files. (GNU make has its own incompatible |
1493 |
the forms of include files. (GNU make has its own incompatible |
1494 |
and less powerful syntax for conditionals.) |
1494 |
and less powerful syntax for conditionals.) |
1495 |
|
1495 |
|
1496 |
++oo All built-in variables that begin with a dot. |
1496 |
[1m+o [22mAll built-in variables that begin with a dot. |
1497 |
|
1497 |
|
1498 |
++oo Most of the special sources and targets that begin with a dot, |
1498 |
[1m+o [22mMost of the special sources and targets that begin with a dot, |
1499 |
with the notable exception of ..PPHHOONNYY, ..PPRREECCIIOOUUSS, and ..SSUUFFFFIIXXEESS. |
1499 |
with the notable exception of [1m.PHONY[22m, [1m.PRECIOUS[22m, and [1m.SUFFIXES[22m. |
1500 |
|
1500 |
|
1501 |
++oo Variable modifiers, except for the |
1501 |
[1m+o [22mVariable modifiers, except for the |
1502 |
:old=new |
1502 |
:old=new |
1503 |
string substitution, which does not portably support globbing |
1503 |
string substitution, which does not portably support globbing |
1504 |
with `%' and historically only works on declared suffixes. |
1504 |
with `%' and historically only works on declared suffixes. |
1505 |
|
1505 |
|
1506 |
++oo The $$>> variable even in its short form; most makes support this |
1506 |
[1m+o [22mThe [1m$> [22mvariable even in its short form; most makes support this |
1507 |
functionality but its name varies. |
1507 |
functionality but its name varies. |
1508 |
|
1508 |
|
1509 |
Some features are somewhat more portable, such as assignment with ++==, ??==, |
1509 |
Some features are somewhat more portable, such as assignment with [1m+=[22m, [1m?=[22m, |
1510 |
and !!==. The ..PPAATTHH functionality is based on an older feature VVPPAATTHH found |
1510 |
and [1m!=[22m. The [1m.PATH [22mfunctionality is based on an older feature [1mVPATH [22mfound |
1511 |
in GNU make and many versions of SVR4 make; however, historically its |
1511 |
in GNU make and many versions of SVR4 make; however, historically its |
1512 |
behavior is too ill-defined (and too buggy) to rely upon. |
1512 |
behavior is too ill-defined (and too buggy) to rely upon. |
1513 |
|
1513 |
|
1514 |
The $$@@ and $$<< variables are more or less universally portable, as is the |
1514 |
The [1m$@ [22mand [1m$< [22mvariables are more or less universally portable, as is the |
1515 |
$$((MMAAKKEE)) variable. Basic use of suffix rules (for files only in the cur- |
1515 |
[1m$(MAKE) [22mvariable. Basic use of suffix rules (for files only in the cur- |
1516 |
rent directory, not trying to chain transformations together, etc.) is |
1516 |
rent directory, not trying to chain transformations together, etc.) is |
1517 |
also reasonably portable. |
1517 |
also reasonably portable. |
1518 |
|
1518 |
|
1519 |
SSEEEE AALLSSOO |
1519 |
[1mSEE ALSO[0m |
1520 |
mkdep(1) |
1520 |
mkdep(1) |
1521 |
|
1521 |
|
1522 |
HHIISSTTOORRYY |
1522 |
[1mHISTORY[0m |
1523 |
bbmmaakkee is derived from NetBSD make(1). It uses autoconf to facilitate |
1523 |
[1mbmake [22mis derived from NetBSD make(1). It uses autoconf to facilitate |
1524 |
portability to other platforms. |
1524 |
portability to other platforms. |
1525 |
|
1525 |
|
1526 |
A make command appeared in Version 7 AT&T UNIX. This make implementation |
1526 |
A make command appeared in Version 7 AT&T UNIX. This make implementation |
Lines 1532-1538
Link Here
|
1532 |
rebuilding (since the target/dependency does not exist... unless someone |
1532 |
rebuilding (since the target/dependency does not exist... unless someone |
1533 |
creates an ``FRC'' file). |
1533 |
creates an ``FRC'' file). |
1534 |
|
1534 |
|
1535 |
BBUUGGSS |
1535 |
[1mBUGS[0m |
1536 |
The make syntax is difficult to parse without actually acting of the |
1536 |
The make syntax is difficult to parse without actually acting of the |
1537 |
data. For instance finding the end of a variable use should involve |
1537 |
data. For instance finding the end of a variable use should involve |
1538 |
scanning each the modifiers using the correct terminator for each field. |
1538 |
scanning each the modifiers using the correct terminator for each field. |
Lines 1541-1544
Link Here
|
1541 |
|
1541 |
|
1542 |
There is no way of escaping a space character in a filename. |
1542 |
There is no way of escaping a space character in a filename. |
1543 |
|
1543 |
|
1544 |
NetBSD 7.1_RC1 June 22, 2017 NetBSD 7.1_RC1 |
1544 |
FreeBSD 11.1 June 22, 2017 FreeBSD 11.1 |