View | Details | Raw Unified | Return to bug 226678
Collapse All | Expand All

(-)contrib/bmake/ChangeLog (+74 lines)
Lines 1-3 Link Here
1
2018-02-22  Simon J. Gerraty  <sjg@bad.crufty.net>
2
3
	* VERSION: 20180222
4
	  Merge with NetBSD make, pick up
5
	  o parse.c: avoid calling sysconf for every call to loadfile
6
7
2018-02-18  Simon J. Gerraty  <sjg@bad.crufty.net>
8
9
	* VERSION: 20180218
10
	  Merge with NetBSD make, pick up
11
	  o var.c: Var_Set handle NULL value anytime.
12
13
2018-02-12  Simon J. Gerraty  <sjg@bad.crufty.net>
14
15
	* VERSION: 20180212
16
	  Merge with NetBSD make, pick up
17
	  o parse.c: do not treat .info as warning with -W
18
19
2017-12-07  Simon J. Gerraty  <sjg@bad.crufty.net>
20
21
	* VERSION: 20171207
22
	  Merge with NetBSD make, pick up
23
	  o var.c: Var_Append use Var_Set if var not previously set
24
	    so that VAR_CMD is handled correctly.
25
	    Add a suitable unit-test.
26
27
2017-11-26  Simon J. Gerraty  <sjg@bad.crufty.net>
28
29
	* VERSION (_MAKE_VERSION): 20171126
30
31
	* aclocal.m4: use AC_LINK_IFELSE for AC_C___ATTRIBUTE__
32
	  since AC_TRY_COMPILE puts input inside main()
33
	  which upsets modern compilers.
34
35
2017-11-18  Simon J. Gerraty  <sjg@bad.crufty.net>
36
37
	* VERSION: 20171118
38
	  Merge with NetBSD make, pick up
39
	  o var.c: do not append to variable set on command line
40
	    add unit-test to catch this.
41
42
2017-10-28  Simon J. Gerraty  <sjg@bad.crufty.net>
43
44
	* VERSION: 20171028
45
	  Merge with NetBSD make, pick up
46
	  o main.c: ignore empty MAKEOBJDIR
47
48
	* Makefile.config.in:
49
	  make @prefix@ @machine*@ and @default_sys_path@ defaults.
50
51
2017-10-05  Simon J. Gerraty  <sjg@bad.crufty.net>
52
53
	* VERSION: 20171005
54
55
	* unit-tests/dotwait.mk: redirect stderr through pipe for more
56
	  consistent result on some platforms.
57
58
2017-08-13  Simon J. Gerraty  <sjg@bad.crufty.net>
59
60
	* machine.sh: entry for AIX
61
62
2017-08-12  Simon J. Gerraty  <sjg@bad.crufty.net>
63
64
	* VERSION (_MAKE_VERSION): Move the setting of _MAKE_VERSION
65
	  to a file that can be included by configure as well as make.
66
	  This allows configure to set set _MAKE_VERSION in make-bootstrap.sh
67
68
2017-08-10  Simon J. Gerraty  <sjg@bad.crufty.net>
69
70
	* Makefile (_MAKE_VERSION): 20170810
71
	  Merge with NetBSD make, pick up
72
	  o meta.c: if target is in subdir we only need subdir name in
73
	    meta_name.
74
1
2017-07-20  Simon J. Gerraty  <sjg@bad.crufty.net>
75
2017-07-20  Simon J. Gerraty  <sjg@bad.crufty.net>
2
76
3
	* Makefile (_MAKE_VERSION): 20170720
77
	* Makefile (_MAKE_VERSION): 20170720
(-)contrib/bmake/FILES (+1 lines)
Lines 5-10 Makefile.config.in Link Here
5
PSD.doc/Makefile
5
PSD.doc/Makefile
6
PSD.doc/tutorial.ms
6
PSD.doc/tutorial.ms
7
README
7
README
8
VERSION
8
aclocal.m4
9
aclocal.m4
9
arch.c
10
arch.c
10
bmake.1
11
bmake.1
(-)contrib/bmake/Makefile (-6 / +7 lines)
Lines 1-8 Link Here
1
#	$Id: Makefile,v 1.95 2017/07/20 19:36:13 sjg Exp $
1
#	$Id: Makefile,v 1.99 2017/08/13 20:12:53 sjg Exp $
2
2
3
# Base version on src date
4
_MAKE_VERSION= 20170720
5
6
PROG=	bmake
3
PROG=	bmake
7
4
8
SRCS= \
5
SRCS= \
Lines 58-63 SRCS+= \ Link Here
58
	lstReplace.c \
55
	lstReplace.c \
59
	lstSucc.c
56
	lstSucc.c
60
57
58
.-include "VERSION"
59
61
# this file gets generated by configure
60
# this file gets generated by configure
62
.-include "Makefile.config"
61
.-include "Makefile.config"
63
62
Lines 192-202 MANDIR= ${MANDIR.bmake:U${SHAREDIR}/man} Link Here
192
${OBJS}: config.h
191
${OBJS}: config.h
193
.endif
192
.endif
194
193
194
# start-delete2 for bsd.after-import.mk
195
195
# make sure that MAKE_VERSION gets updated.
196
# make sure that MAKE_VERSION gets updated.
196
main.o: ${SRCS} ${MAKEFILE}
197
main.o: ${SRCS} ${.CURDIR}/VERSION
197
198
198
# start-delete2 for bsd.after-import.mk
199
.if ${MK_AUTOCONF_MK} == "yes"
199
.if ${MK_AUTOCONF_MK} == "yes"
200
CONFIGURE_DEPS += ${.CURDIR}/VERSION
200
.include <autoconf.mk>
201
.include <autoconf.mk>
201
.endif
202
.endif
202
SHARE_MK?=${SHAREDIR}/mk
203
SHARE_MK?=${SHAREDIR}/mk
(-)contrib/bmake/Makefile.config.in (-6 / +7 lines)
Lines 1-11 Link Here
1
# things set by configure
1
# things set by configure
2
2
3
prefix= @prefix@
3
_MAKE_VERSION=@_MAKE_VERSION@
4
5
prefix?= @prefix@
4
srcdir= @srcdir@
6
srcdir= @srcdir@
5
CC?= @CC@
7
CC?= @CC@
6
MACHINE= @machine@
8
MACHINE?= @machine@
7
MACHINE_ARCH= @machine_arch@
9
MACHINE_ARCH?= @machine_arch@
8
DEFAULT_SYS_PATH= @default_sys_path@
10
DEFAULT_SYS_PATH?= @default_sys_path@
9
11
10
CPPFLAGS+= @CPPFLAGS@
12
CPPFLAGS+= @CPPFLAGS@
11
CFLAGS+= ${CPPFLAGS} @DEFS@
13
CFLAGS+= ${CPPFLAGS} @DEFS@
Lines 13-20 LDFLAGS= @LDFLAGS@ Link Here
13
LIBOBJS= @LIBOBJS@
15
LIBOBJS= @LIBOBJS@
14
LDADD= @LIBS@
16
LDADD= @LIBS@
15
USE_META= @use_meta@
17
USE_META= @use_meta@
16
FILEMON_H= @filemon_h@
18
FILEMON_H?= @filemon_h@
17
BMAKE_PATH_MAX?= @bmake_path_max@
19
BMAKE_PATH_MAX?= @bmake_path_max@
18
# used if MAXPATHLEN not defined
20
# used if MAXPATHLEN not defined
19
CPPFLAGS+= -DBMAKE_PATH_MAX=${BMAKE_PATH_MAX}
21
CPPFLAGS+= -DBMAKE_PATH_MAX=${BMAKE_PATH_MAX}
20
(-)contrib/bmake/VERSION (+2 lines)
Line 0 Link Here
1
# keep this compatible with sh and make
2
_MAKE_VERSION=20180222
(-)contrib/bmake/aclocal.m4 (-4 / +9 lines)
Lines 1-5 Link Here
1
dnl RCSid:
1
dnl RCSid:
2
dnl	$Id: aclocal.m4,v 1.5 2003/03/06 21:21:30 sjg Exp $
2
dnl	$Id: aclocal.m4,v 1.6 2017/11/26 22:39:20 sjg Exp $
3
dnl
3
dnl
4
4
5
dnl 
5
dnl 
Lines 55-64 dnl Link Here
55
AC_DEFUN(AC_C___ATTRIBUTE__, [
55
AC_DEFUN(AC_C___ATTRIBUTE__, [
56
AC_MSG_CHECKING(for __attribute__)
56
AC_MSG_CHECKING(for __attribute__)
57
AC_CACHE_VAL(ac_cv___attribute__, [
57
AC_CACHE_VAL(ac_cv___attribute__, [
58
AC_TRY_COMPILE([
58
AC_LINK_IFELSE([
59
#include <stdlib.h>
59
#include <stdlib.h>
60
],
60
61
[
62
static void foo(void) __attribute__ ((noreturn));
61
static void foo(void) __attribute__ ((noreturn));
63
62
64
static void
63
static void
Lines 66-71 foo(void) Link Here
66
{
65
{
67
  exit(1);
66
  exit(1);
68
}
67
}
68
69
int
70
main(int argc, char **argv)
71
{
72
	foo();
73
}
69
],
74
],
70
ac_cv___attribute__=yes,
75
ac_cv___attribute__=yes,
71
ac_cv___attribute__=no)])
76
ac_cv___attribute__=no)])
(-)contrib/bmake/bmake.cat1 (-538 / +538 lines)
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
(-)contrib/bmake/bsd.after-import.mk (-1 / +2 lines)
Lines 1-4 Link Here
1
# $Id: bsd.after-import.mk,v 1.12 2014/02/14 23:45:49 sjg Exp $
1
# $Id: bsd.after-import.mk,v 1.13 2017/08/13 00:56:10 sjg Exp $
2
2
3
# This makefile is for use when integrating bmake into a BSD build
3
# This makefile is for use when integrating bmake into a BSD build
4
# system.  Use this makefile after importing bmake.
4
# system.  Use this makefile after importing bmake.
Lines 56-61 bootstrap: ${BMAKE_SRC}/boot-strap ${MAKEFILE} Link Here
56
56
57
# Makefiles need a little more tweaking than say config.h
57
# Makefiles need a little more tweaking than say config.h
58
MAKEFILE_SED = 	sed -e '/^MACHINE/d' \
58
MAKEFILE_SED = 	sed -e '/^MACHINE/d' \
59
	-e '/include.*VERSION/d' \
59
	-e '/^PROG/ { s,=,?=,;s,bmake,$${.CURDIR:T},; }' \
60
	-e '/^PROG/ { s,=,?=,;s,bmake,$${.CURDIR:T},; }' \
60
	-e 's,^.-include,.sinclude,' \
61
	-e 's,^.-include,.sinclude,' \
61
	-e '/^\..*include  *</ { s,<,<bsd.,;/autoconf/d; }' \
62
	-e '/^\..*include  *</ { s,<,<bsd.,;/autoconf/d; }' \
(-)contrib/bmake/configure.in (-2 / +6 lines)
Lines 1-11 Link Here
1
dnl
1
dnl
2
dnl RCSid:
2
dnl RCSid:
3
dnl	$Id: configure.in,v 1.57 2016/06/07 00:49:44 sjg Exp $
3
dnl	$Id: configure.in,v 1.59 2017/11/26 22:39:20 sjg Exp $
4
dnl
4
dnl
5
dnl Process this file with autoconf to produce a configure script
5
dnl Process this file with autoconf to produce a configure script
6
dnl
6
dnl
7
AC_PREREQ(2.50)
7
AC_PREREQ(2.50)
8
AC_INIT([bmake], [20160606], [sjg@NetBSD.org])
8
AC_INIT([bmake], [20171126], [sjg@NetBSD.org])
9
AC_CONFIG_HEADERS(config.h)
9
AC_CONFIG_HEADERS(config.h)
10
10
11
dnl make srcdir absolute
11
dnl make srcdir absolute
Lines 14-19 case "$srcdir" in Link Here
14
*) srcdir=`cd $srcdir && pwd`;;
14
*) srcdir=`cd $srcdir && pwd`;;
15
esac
15
esac
16
16
17
dnl get _MAKE_VERSION
18
. $srcdir/VERSION
19
17
dnl
20
dnl
18
AC_ARG_WITH(defshell,
21
AC_ARG_WITH(defshell,
19
[  --with-defshell=SHELL  use SHELL by default - must be sh compatible, use sh or ksh to pick the internal definitions],
22
[  --with-defshell=SHELL  use SHELL by default - must be sh compatible, use sh or ksh to pick the internal definitions],
Lines 386-391 AC_SUBST(GCC) Link Here
386
AC_SUBST(diff_u)
389
AC_SUBST(diff_u)
387
AC_SUBST(use_meta)
390
AC_SUBST(use_meta)
388
AC_SUBST(filemon_h)
391
AC_SUBST(filemon_h)
392
AC_SUBST(_MAKE_VERSION)
389
AC_OUTPUT(makefile Makefile.config make-bootstrap.sh unit-tests/Makefile)
393
AC_OUTPUT(makefile Makefile.config make-bootstrap.sh unit-tests/Makefile)
390
394
391
cat <<EOF
395
cat <<EOF
(-)contrib/bmake/job.c (-4 / +4 lines)
Lines 1-4 Link Here
1
/*	$NetBSD: job.c,v 1.191 2017/07/20 19:29:54 sjg Exp $	*/
1
/*	$NetBSD: job.c,v 1.192 2018/02/08 09:05:21 dholland Exp $	*/
2
2
3
/*
3
/*
4
 * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
4
 * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
Lines 70-76 Link Here
70
 */
70
 */
71
71
72
#ifndef MAKE_NATIVE
72
#ifndef MAKE_NATIVE
73
static char rcsid[] = "$NetBSD: job.c,v 1.191 2017/07/20 19:29:54 sjg Exp $";
73
static char rcsid[] = "$NetBSD: job.c,v 1.192 2018/02/08 09:05:21 dholland Exp $";
74
#else
74
#else
75
#include <sys/cdefs.h>
75
#include <sys/cdefs.h>
76
#ifndef lint
76
#ifndef lint
Lines 77-83 Link Here
77
#if 0
77
#if 0
78
static char sccsid[] = "@(#)job.c	8.2 (Berkeley) 3/19/94";
78
static char sccsid[] = "@(#)job.c	8.2 (Berkeley) 3/19/94";
79
#else
79
#else
80
__RCSID("$NetBSD: job.c,v 1.191 2017/07/20 19:29:54 sjg Exp $");
80
__RCSID("$NetBSD: job.c,v 1.192 2018/02/08 09:05:21 dholland Exp $");
81
#endif
81
#endif
82
#endif /* not lint */
82
#endif /* not lint */
83
#endif
83
#endif
Lines 102-108 static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3 Link Here
102
 *	    	  	    	a time given by the SEL_* constants, below,
102
 *	    	  	    	a time given by the SEL_* constants, below,
103
 *	    	  	    	or until output is ready.
103
 *	    	  	    	or until output is ready.
104
 *
104
 *
105
 *	Job_Init  	    	Called to intialize this module. in addition,
105
 *	Job_Init  	    	Called to initialize this module. in addition,
106
 *	    	  	    	any commands attached to the .BEGIN target
106
 *	    	  	    	any commands attached to the .BEGIN target
107
 *	    	  	    	are executed before this function returns.
107
 *	    	  	    	are executed before this function returns.
108
 *	    	  	    	Hence, the makefile must have been parsed
108
 *	    	  	    	Hence, the makefile must have been parsed
(-)contrib/bmake/machine.sh (-1 / +7 lines)
Lines 2-8 Link Here
2
# derrived from /etc/rc_d/os.sh
2
# derrived from /etc/rc_d/os.sh
3
3
4
# RCSid:
4
# RCSid:
5
#	$Id: machine.sh,v 1.17 2015/05/05 00:10:54 sjg Exp $
5
#	$Id: machine.sh,v 1.18 2017/08/13 19:11:28 sjg Exp $
6
#
6
#
7
#	@(#) Copyright (c) 1994-2002 Simon J. Gerraty
7
#	@(#) Copyright (c) 1994-2002 Simon J. Gerraty
8
#
8
#
Lines 44-49 Which() { Link Here
44
}
44
}
45
45
46
case $OS in
46
case $OS in
47
AIX)	# from http://gnats.netbsd.org/29386
48
	OSMAJOR=`uname -v`
49
	OSMINOR=`uname -r`
50
	MACHINE=$OS$OSMAJOR.$OSMINOR
51
	MACHINE_ARCH=`bootinfo -T`
52
	;;
47
OpenBSD)
53
OpenBSD)
48
	MACHINE=$OS$OSMAJOR.$machine
54
	MACHINE=$OS$OSMAJOR.$machine
49
	arch=`Which arch /usr/bin:/usr/ucb:$PATH`
55
	arch=`Which arch /usr/bin:/usr/ucb:$PATH`
(-)contrib/bmake/main.c (-4 / +5 lines)
Lines 1-4 Link Here
1
/*	$NetBSD: main.c,v 1.272 2017/06/19 19:58:24 christos Exp $	*/
1
/*	$NetBSD: main.c,v 1.273 2017/10/28 21:54:54 sjg Exp $	*/
2
2
3
/*
3
/*
4
 * Copyright (c) 1988, 1989, 1990, 1993
4
 * Copyright (c) 1988, 1989, 1990, 1993
Lines 69-75 Link Here
69
 */
69
 */
70
70
71
#ifndef MAKE_NATIVE
71
#ifndef MAKE_NATIVE
72
static char rcsid[] = "$NetBSD: main.c,v 1.272 2017/06/19 19:58:24 christos Exp $";
72
static char rcsid[] = "$NetBSD: main.c,v 1.273 2017/10/28 21:54:54 sjg Exp $";
73
#else
73
#else
74
#include <sys/cdefs.h>
74
#include <sys/cdefs.h>
75
#ifndef lint
75
#ifndef lint
Lines 81-87 __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, Link Here
81
#if 0
81
#if 0
82
static char sccsid[] = "@(#)main.c	8.3 (Berkeley) 3/19/94";
82
static char sccsid[] = "@(#)main.c	8.3 (Berkeley) 3/19/94";
83
#else
83
#else
84
__RCSID("$NetBSD: main.c,v 1.272 2017/06/19 19:58:24 christos Exp $");
84
__RCSID("$NetBSD: main.c,v 1.273 2017/10/28 21:54:54 sjg Exp $");
85
#endif
85
#endif
86
#endif /* not lint */
86
#endif /* not lint */
87
#endif
87
#endif
Lines 792-798 Main_SetVarObjdir(const char *var, const char *suf Link Here
792
{
792
{
793
	char *p, *path, *xpath;
793
	char *p, *path, *xpath;
794
794
795
	if ((path = Var_Value(var, VAR_CMD, &p)) == NULL)
795
	if ((path = Var_Value(var, VAR_CMD, &p)) == NULL ||
796
	    *path == '\0')
796
		return FALSE;
797
		return FALSE;
797
798
798
	/* expand variable substitutions */
799
	/* expand variable substitutions */
(-)contrib/bmake/make-bootstrap.sh.in (-1 / +1 lines)
Lines 13-19 esac Link Here
13
CC="@CC@"
13
CC="@CC@"
14
CFLAGS="@CFLAGS@ -I. -I${srcdir} @DEFS@ @CPPFLAGS@ -DMAKE_NATIVE ${XDEFS} -DBMAKE_PATH_MAX=@bmake_path_max@"
14
CFLAGS="@CFLAGS@ -I. -I${srcdir} @DEFS@ @CPPFLAGS@ -DMAKE_NATIVE ${XDEFS} -DBMAKE_PATH_MAX=@bmake_path_max@"
15
15
16
MAKE_VERSION=`sed -n '/^_MAKE_VERSION=/s,.*=[^0-9]*,,p' $srcdir/Makefile`
16
MAKE_VERSION=@_MAKE_VERSION@
17
17
18
MDEFS="-DMAKE_VERSION=\"$MAKE_VERSION\" \
18
MDEFS="-DMAKE_VERSION=\"$MAKE_VERSION\" \
19
-D@force_machine@MACHINE=\"@machine@\" -DMACHINE_ARCH=\"@machine_arch@\" \
19
-D@force_machine@MACHINE=\"@machine@\" -DMACHINE_ARCH=\"@machine_arch@\" \
(-)contrib/bmake/make.h (-1 / +2 lines)
Lines 1-4 Link Here
1
/*	$NetBSD: make.h,v 1.103 2017/07/20 19:29:54 sjg Exp $	*/
1
/*	$NetBSD: make.h,v 1.104 2018/02/12 21:38:09 sjg Exp $	*/
2
2
3
/*
3
/*
4
 * Copyright (c) 1988, 1989, 1990, 1993
4
 * Copyright (c) 1988, 1989, 1990, 1993
Lines 346-351 typedef struct GNode { Link Here
346
 * once the makefile has been parsed. PARSE_WARNING means it can. Passed
346
 * once the makefile has been parsed. PARSE_WARNING means it can. Passed
347
 * as the first argument to Parse_Error.
347
 * as the first argument to Parse_Error.
348
 */
348
 */
349
#define PARSE_INFO	3
349
#define PARSE_WARNING	2
350
#define PARSE_WARNING	2
350
#define PARSE_FATAL	1
351
#define PARSE_FATAL	1
351
352
(-)contrib/bmake/meta.c (-3 / +12 lines)
Lines 1-4 Link Here
1
/*      $NetBSD: meta.c,v 1.68 2017/07/09 04:54:00 sjg Exp $ */
1
/*      $NetBSD: meta.c,v 1.70 2018/02/13 19:37:30 sjg Exp $ */
2
2
3
/*
3
/*
4
 * Implement 'meta' mode.
4
 * Implement 'meta' mode.
Lines 250-255 meta_name(char *mname, size_t mnamelen, Link Here
250
    char *rp;
250
    char *rp;
251
    char *cp;
251
    char *cp;
252
    char *tp;
252
    char *tp;
253
    char *dtp;
254
    size_t ldname;
253
255
254
    /*
256
    /*
255
     * Weed out relative paths from the target file name.
257
     * Weed out relative paths from the target file name.
Lines 286-295 meta_name(char *mname, size_t mnamelen, Link Here
286
    }
288
    }
287
    /* on some systems dirname may modify its arg */
289
    /* on some systems dirname may modify its arg */
288
    tp = bmake_strdup(tname);
290
    tp = bmake_strdup(tname);
289
    if (strcmp(dname, dirname(tp)) == 0)
291
    dtp = dirname(tp);
292
    if (strcmp(dname, dtp) == 0)
290
	snprintf(mname, mnamelen, "%s.meta", tname);
293
	snprintf(mname, mnamelen, "%s.meta", tname);
291
    else {
294
    else {
292
	snprintf(mname, mnamelen, "%s/%s.meta", dname, tname);
295
	ldname = strlen(dname);
296
	if (strncmp(dname, dtp, ldname) == 0 && dtp[ldname] == '/')
297
	    snprintf(mname, mnamelen, "%s/%s.meta", dname, &tname[ldname+1]);
298
	else
299
	    snprintf(mname, mnamelen, "%s/%s.meta", dname, tname);
293
300
294
	/*
301
	/*
295
	 * Replace path separators in the file name after the
302
	 * Replace path separators in the file name after the
Lines 783-789 meta_cmd_finish(void *pbmp) Link Here
783
{
790
{
784
    int error = 0;
791
    int error = 0;
785
    BuildMon *pbm = pbmp;
792
    BuildMon *pbm = pbmp;
793
#ifdef USE_FILEMON
786
    int x;
794
    int x;
795
#endif
787
796
788
    if (!pbm)
797
    if (!pbm)
789
	pbm = &Mybm;
798
	pbm = &Mybm;
(-)contrib/bmake/mk/ChangeLog (+36 lines)
Lines 1-3 Link Here
1
2018-01-18  Simon J Gerraty  <sjg@beast.crufty.net>
2
3
	* install-mk (MK_VERSION): 20180118
4
5
	* ldorder.mk: let make compute correct link order
6
7
2017-12-12  Simon J Gerraty  <sjg@beast.crufty.net>
8
9
	* install-mk (MK_VERSION): 20171212
10
11
	* gendirdeps.mk: guard against bogus entries in GENDIRDEPS_FILTER
12
13
2017-11-14  Simon J. Gerraty  <sjg@bad.crufty.net>
14
15
	* install-mk (MK_VERSION): 20171111
16
17
	* lib.mk: ensure META_NOECHO is set
18
19
2017-10-25  Simon J. Gerraty  <sjg@bad.crufty.net>
20
21
	* Allow for host32 on rare occasions.
22
23
2017-10-18  Simon J. Gerraty  <sjg@bad.crufty.net>
24
25
	* install-mk (MK_VERSION): 20171018
26
27
	* whats.mk: include what_thing in what_uuid to avoid problem
28
	  when building multiple apps in the same directory.
29
30
2017-08-12  Simon J. Gerraty  <sjg@bad.crufty.net>
31
32
	* install-mk (MK_VERSION): 20170812
33
34
	* autoconf.mk: Use CONFIGURE_DEPS so Makefile can
35
	  add dependencies for config.recheck and config.gen
36
1
2017-06-30  Simon J. Gerraty  <sjg@bad.crufty.net>
37
2017-06-30  Simon J. Gerraty  <sjg@bad.crufty.net>
2
38
3
	* install-mk (MK_VERSION): 20170630
39
	* install-mk (MK_VERSION): 20170630
(-)contrib/bmake/mk/FILES (+1 lines)
Lines 17-22 inc.mk Link Here
17
init.mk
17
init.mk
18
install-mk
18
install-mk
19
java.mk
19
java.mk
20
ldorder.mk
20
lib.mk
21
lib.mk
21
libnames.mk
22
libnames.mk
22
libs.mk
23
libs.mk
(-)contrib/bmake/mk/auto.obj.mk (-2 / +8 lines)
Lines 1-4 Link Here
1
# $Id: auto.obj.mk,v 1.14 2017/04/18 23:53:18 sjg Exp $
1
# $Id: auto.obj.mk,v 1.15 2017/11/04 21:05:04 sjg Exp $
2
#
2
#
3
#	@(#) Copyright (c) 2004, Simon J. Gerraty
3
#	@(#) Copyright (c) 2004, Simon J. Gerraty
4
#
4
#
Lines 60-70 __objdir_made != echo ${__objdir}/; umask ${OBJDIR Link Here
60
.endif
60
.endif
61
# This causes make to use the specified directory as .OBJDIR
61
# This causes make to use the specified directory as .OBJDIR
62
.OBJDIR: ${__objdir}
62
.OBJDIR: ${__objdir}
63
.if ${.OBJDIR:tA} != ${__objdir:tA} && ${__objdir_made:Uno:M${__objdir}/*} != ""
63
.if ${.OBJDIR:tA} != ${__objdir:tA}
64
# we did not get what we want - do we care?
65
.if ${__objdir_made:Uno:M${__objdir}/*} != ""
64
# watch out for __objdir being relative path
66
# watch out for __objdir being relative path
65
.if !(${__objdir:M/*} == "" && ${.OBJDIR:tA} == ${${.CURDIR}/${__objdir}:L:tA})
67
.if !(${__objdir:M/*} == "" && ${.OBJDIR:tA} == ${${.CURDIR}/${__objdir}:L:tA})
66
.error could not use ${__objdir}: .OBJDIR=${.OBJDIR}
68
.error could not use ${__objdir}: .OBJDIR=${.OBJDIR}
67
.endif
69
.endif
68
.endif
70
.endif
71
# apparently we can live with it
72
# make sure we know what we have
73
.OBJDIR: ${.CURDIR}
69
.endif
74
.endif
70
.endif
75
.endif
76
.endif
(-)contrib/bmake/mk/autoconf.mk (-4 / +6 lines)
Lines 1-4 Link Here
1
# $Id: autoconf.mk,v 1.8 2012/11/19 05:37:48 sjg Exp $
1
# $Id: autoconf.mk,v 1.9 2017/08/13 20:03:13 sjg Exp $
2
#
2
#
3
#	@(#) Copyright (c) 1996-2009, Simon J. Gerraty
3
#	@(#) Copyright (c) 1996-2009, Simon J. Gerraty
4
#
4
#
Lines 15-22 Link Here
15
15
16
.NOPATH:	config.h config.status
16
.NOPATH:	config.h config.status
17
17
18
CONFIGURE_DEPS += ${.CURDIR}/config.h.in ${.CURDIR}/configure
19
18
.if !target(config.h)
20
.if !target(config.h)
19
config.h:	${.CURDIR}/config.h.in config.status
21
config.h:	${CONFIGURE_DEPS} config.status
20
	./config.status
22
	./config.status
21
.endif
23
.endif
22
24
Lines 28-38 config.status: config.recheck Link Here
28
config.status:  config.gen
30
config.status:  config.gen
29
.endif
31
.endif
30
32
31
config.recheck: config.h.in ${.CURDIR}/configure
33
config.recheck: ${CONFIGURE_DEPS}
32
	./config.status --recheck
34
	./config.status --recheck
33
	@touch $@
35
	@touch $@
34
36
35
config.gen: config.h.in ${.CURDIR}/configure
37
config.gen: ${CONFIGURE_DEPS}
36
	CC="${CC} ${CCMODE}" ${.CURDIR}/configure --no-create ${CONFIGURE_ARGS}
38
	CC="${CC} ${CCMODE}" ${.CURDIR}/configure --no-create ${CONFIGURE_ARGS}
37
	@touch $@ config.recheck
39
	@touch $@ config.recheck
38
40
(-)contrib/bmake/mk/dirdeps.mk (-2 / +6 lines)
Lines 1-4 Link Here
1
# $Id: dirdeps.mk,v 1.89 2017/05/17 17:41:47 sjg Exp $
1
# $Id: dirdeps.mk,v 1.90 2017/10/25 23:44:20 sjg Exp $
2
2
3
# Copyright (c) 2010-2013, Juniper Networks, Inc.
3
# Copyright (c) 2010-2013, Juniper Networks, Inc.
4
# All rights reserved.
4
# All rights reserved.
Lines 536-545 _machines := ${DEP_MACHINE} Link Here
536
# this is the machine list we actually use below
536
# this is the machine list we actually use below
537
_machines := ${_only_machines}
537
_machines := ${_only_machines}
538
538
539
.if defined(HOSTPROG) || ${DEP_MACHINE} == "host"
539
.if defined(HOSTPROG) || ${DEP_MACHINE:Nhost*} == ""
540
# we need to build this guy's dependencies for host as well.
540
# we need to build this guy's dependencies for host as well.
541
.if ${DEP_MACHINE:Nhost*} == ""
542
_machines += ${DEP_MACHINE}
543
.else
541
_machines += host
544
_machines += host
542
.endif
545
.endif
546
.endif
543
547
544
_machines := ${_machines:O:u}
548
_machines := ${_machines:O:u}
545
.endif
549
.endif
(-)contrib/bmake/mk/dpadd.mk (-9 / +13 lines)
Lines 1-4 Link Here
1
# $Id: dpadd.mk,v 1.23 2017/02/13 16:46:01 sjg Exp $
1
# $Id: dpadd.mk,v 1.26 2018/02/12 21:54:26 sjg Exp $
2
#
2
#
3
#	@(#) Copyright (c) 2004, Simon J. Gerraty
3
#	@(#) Copyright (c) 2004, Simon J. Gerraty
4
#
4
#
Lines 60-65 LDADD += ${LDADD_${__lib:T:R}:U${__lib:T:R:S/lib/- Link Here
60
# DPADD can contain things other than libs
60
# DPADD can contain things other than libs
61
__dpadd_libs := ${DPADD:M*/lib*}
61
__dpadd_libs := ${DPADD:M*/lib*}
62
62
63
.if defined(PROG) && ${MK_PROG_LDORDER_MK:Uno} != "no"
63
# some libs have dependencies...
64
# some libs have dependencies...
64
# DPLIBS_* allows bsd.libnames.mk to flag libs which must be included
65
# DPLIBS_* allows bsd.libnames.mk to flag libs which must be included
65
# in DPADD for a given library.
66
# in DPADD for a given library.
Lines 73-78 __ldadd_all_xtras+= ${LDADD_${__lib}:U${__lib:T:R: Link Here
73
DPADD+= ${__lib}
74
DPADD+= ${__lib}
74
.endif
75
.endif
75
.endfor
76
.endfor
77
.endif
76
# Last of all... for libc and libgcc
78
# Last of all... for libc and libgcc
77
DPADD+= ${DPADD_LAST}
79
DPADD+= ${DPADD_LAST}
78
80
Lines 125-133 SRC_LIBS+= ${_OBJDIR}/lib${LIB}.a Link Here
125
# 
127
# 
126
128
127
SRC_LIBS?=
129
SRC_LIBS?=
128
__dpadd_libs += ${SRC_LIBS}
130
# magic_libs includes those we want to link with
129
DPMAGIC_LIBS += ${__dpadd_libs} \
131
# as well as those we might look at
130
	${__dpadd_libs:@d@${DPMAGIC_LIBS_${d:T:R}}@}
132
__dpadd_magic_libs += ${__dpadd_libs} ${SRC_LIBS}
133
DPMAGIC_LIBS += ${__dpadd_magic_libs} \
134
	${__dpadd_magic_libs:@d@${DPMAGIC_LIBS_${d:T:R}}@}
131
135
132
# we skip this for staged libs
136
# we skip this for staged libs
133
.for __lib in ${DPMAGIC_LIBS:O:u:N${STAGE_OBJTOP:Unot}*/lib/*}
137
.for __lib in ${DPMAGIC_LIBS:O:u:N${STAGE_OBJTOP:Unot}*/lib/*}
Lines 189-201 LDADD := ${LDADD:S,^${__ldadd}$,${__ldadd}_p,g} Link Here
189
#
193
#
190
# We take care of duplicate suppression later.
194
# We take care of duplicate suppression later.
191
# don't apply :T:R too early
195
# don't apply :T:R too early
192
__dpadd_incs += ${__dpadd_libs:u:@x@${INCLUDES_${x:T:R}}@}
196
__dpadd_incs += ${__dpadd_magic_libs:u:@x@${INCLUDES_${x:T:R}}@}
193
__dpadd_incs += ${__dpadd_libs:O:u:@s@${SRC_LIBS_${s:T:R}:U}@:@x@${INCLUDES_${x:T:R}}@}
197
__dpadd_incs += ${__dpadd_magic_libs:O:u:@s@${SRC_LIBS_${s:T:R}:U}@:@x@${INCLUDES_${x:T:R}}@}
194
198
195
__dpadd_last_incs += ${__dpadd_libs:u:@x@${INCLUDES_LAST_${x:T:R}}@}
199
__dpadd_last_incs += ${__dpadd_magic_libs:u:@x@${INCLUDES_LAST_${x:T:R}}@}
196
__dpadd_last_incs += ${__dpadd_libs:O:u:@s@${SRC_LIBS_${s:T:R}:U}@:@x@${INCLUDES_LAST_${x:T:R}}@}
200
__dpadd_last_incs += ${__dpadd_magic_libs:O:u:@s@${SRC_LIBS_${s:T:R}:U}@:@x@${INCLUDES_LAST_${x:T:R}}@}
197
201
198
.if defined(HOSTPROG) || ${MACHINE} == "host"
202
.if defined(HOSTPROG) || ${MACHINE:Nhost*} == ""
199
# we want any -I/usr/* last
203
# we want any -I/usr/* last
200
__dpadd_last_incs := \
204
__dpadd_last_incs := \
201
	${__dpadd_last_incs:N-I/usr/*} \
205
	${__dpadd_last_incs:N-I/usr/*} \
(-)contrib/bmake/mk/final.mk (-3 / +3 lines)
Lines 1-4 Link Here
1
# $Id: final.mk,v 1.8 2017/05/07 20:30:08 sjg Exp $
1
# $Id: final.mk,v 1.9 2018/01/24 22:57:11 sjg Exp $
2
2
3
.if !target(__${.PARSEFILE}__)
3
.if !target(__${.PARSEFILE}__)
4
__${.PARSEFILE}__:
4
__${.PARSEFILE}__:
Lines 6-11 __${.PARSEFILE}__: Link Here
6
# provide a hook for folk who want to do scary stuff
6
# provide a hook for folk who want to do scary stuff
7
.-include <${.CURDIR:H}/Makefile-final.inc>
7
.-include <${.CURDIR:H}/Makefile-final.inc>
8
8
9
.-include <local.final.mk>
10
9
.if ${MK_STAGING} == "yes"
11
.if ${MK_STAGING} == "yes"
10
.include <meta.stage.mk>
12
.include <meta.stage.mk>
11
.elif !empty(STAGE)
13
.elif !empty(STAGE)
Lines 12-19 __${.PARSEFILE}__: Link Here
12
.-include <stage.mk>
14
.-include <stage.mk>
13
.endif
15
.endif
14
16
15
.-include <local.final.mk>
16
17
.if empty(_SKIP_BUILD)
17
.if empty(_SKIP_BUILD)
18
install: realinstall
18
install: realinstall
19
.endif
19
.endif
(-)contrib/bmake/mk/gendirdeps.mk (-3 / +5 lines)
Lines 1-4 Link Here
1
# $Id: gendirdeps.mk,v 1.33 2016/10/11 22:37:28 sjg Exp $
1
# $Id: gendirdeps.mk,v 1.37 2018/01/31 19:06:46 sjg Exp $
2
2
3
# Copyright (c) 2010-2013, Juniper Networks, Inc.
3
# Copyright (c) 2010-2013, Juniper Networks, Inc.
4
# All rights reserved.
4
# All rights reserved.
Lines 194-200 dpadd_dir_list += ${f:H:tA} Link Here
194
.endfor
194
.endfor
195
.if !empty(ddep_list)
195
.if !empty(ddep_list)
196
ddeps != cat ${ddep_list:O:u} | ${META2DEPS_FILTER} ${_skip_gendirdeps} \
196
ddeps != cat ${ddep_list:O:u} | ${META2DEPS_FILTER} ${_skip_gendirdeps} \
197
        sed 's,//*$$,,;s,\.${HOST_TARGET}$$,.host,;s,\.${MACHINE}$$,,'
197
        sed 's,//*$$,,;s,\.${HOST_TARGET:Uhost}$$,.host,;s,\.${HOST_TARGET32:Uhost32}$$,.host32,;s,\.${MACHINE}$$,,'
198
198
199
.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
199
.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
200
.info ${RELDIR}: raw_dir_list='${dir_list}'
200
.info ${RELDIR}: raw_dir_list='${dir_list}'
Lines 255-261 DIRDEPS += \ Link Here
255
	${dirdep_list:M${RELDIR}/*:@d@${.MAKE.MAKEFILE_PREFERENCE:@m@${exists(${SRCTOP}/$d/$m):?$d:${exists(${SRCTOP}/${d:R}/$m):?$d:}}@}@} \
255
	${dirdep_list:M${RELDIR}/*:@d@${.MAKE.MAKEFILE_PREFERENCE:@m@${exists(${SRCTOP}/$d/$m):?$d:${exists(${SRCTOP}/${d:R}/$m):?$d:}}@}@} \
256
	${qualdir_list:M${RELDIR}/*:@d@${.MAKE.MAKEFILE_PREFERENCE:@m@${exists(${SRCTOP}/${d:R}/$m):?$d:}@}@}
256
	${qualdir_list:M${RELDIR}/*:@d@${.MAKE.MAKEFILE_PREFERENCE:@m@${exists(${SRCTOP}/${d:R}/$m):?$d:}@}@}
257
257
258
DIRDEPS := ${DIRDEPS:${GENDIRDEPS_FILTER:UNno:ts:}:C,//+,/,g:O:u}
258
# what modifiers do we allow in GENDIRDEPS_FILTER
259
GENDIRDEPS_FILTER_MASK += @CMNS
260
DIRDEPS := ${DIRDEPS:${GENDIRDEPS_FILTER:UNno:M[${GENDIRDEPS_FILTER_MASK:O:u:ts}]*:ts:}:C,//+,/,g:O:u}
259
261
260
.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
262
.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
261
.info ${RELDIR}: M2D_OBJROOTS=${M2D_OBJROOTS}
263
.info ${RELDIR}: M2D_OBJROOTS=${M2D_OBJROOTS}
(-)contrib/bmake/mk/install-mk (-2 / +2 lines)
Lines 55-61 Link Here
55
#       Simon J. Gerraty <sjg@crufty.net>
55
#       Simon J. Gerraty <sjg@crufty.net>
56
56
57
# RCSid:
57
# RCSid:
58
#	$Id: install-mk,v 1.148 2017/06/30 23:46:15 sjg Exp $
58
#	$Id: install-mk,v 1.153 2018/01/24 22:57:11 sjg Exp $
59
#
59
#
60
#	@(#) Copyright (c) 1994 Simon J. Gerraty
60
#	@(#) Copyright (c) 1994 Simon J. Gerraty
61
#
61
#
Lines 70-76 Link Here
70
#	sjg@crufty.net
70
#	sjg@crufty.net
71
#
71
#
72
72
73
MK_VERSION=20170630
73
MK_VERSION=20180118
74
OWNER=
74
OWNER=
75
GROUP=
75
GROUP=
76
MODE=444
76
MODE=444
(-)contrib/bmake/mk/ldorder.mk (+127 lines)
Line 0 Link Here
1
# $Id: ldorder.mk,v 1.18 2018/02/11 18:27:59 sjg Exp $
2
#
3
#	@(#) Copyright (c) 2015, Simon J. Gerraty
4
#
5
#	This file is provided in the hope that it will
6
#	be of use.  There is absolutely NO WARRANTY.
7
#	Permission to copy, redistribute or otherwise
8
#	use this file is hereby granted provided that 
9
#	the above copyright notice and this notice are
10
#	left intact. 
11
#      
12
#	Please send copies of changes and bug-fixes to:
13
#	sjg@crufty.net
14
#
15
16
# Try to compute optimal link order.
17
# When using only shared libs link order does not much matter,
18
# but archive libs are a different matter.
19
20
# We can construct a graph of .ldorder-lib${LIB*} dependencies
21
# and associate each with _LDORDER_USE to output the relevant
22
# ld flags.
23
# Due to the nature of make, the result will be in the reverse order
24
# that we want to feed to ld.
25
# So we need to reverse it before use.
26
27
.if !target(_LDORDER_USE)
28
# does caller want to use ldorder?
29
# yes for prog, normally no for lib
30
_ldorder_use := ${.ALLTARGETS:Mldorder}
31
32
.-include <local.ldorder.mk>
33
34
# convert /path/to/libfoo.a into _{LIBFOO}
35
LDORDER_INC_FILTER += S,+,PLUS,g S,.so$$,,g
36
LDORDER_LIBS_FILTER += O:u
37
LDORDER_INC ?= ldorder.inc
38
REFERENCE_FILE ?= :
39
40
_LDORDER_USE: .ldorder-rm .USE .NOTMAIN
41
	@echo depends: ${.ALLSRC:M.ldorder-lib*} > /dev/null
42
	@echo ${LDADD_${.TARGET:T:S,.ldorder-,,}:U${.TARGET:T:S/.ldorder-lib/-l/}} >> .ldorder
43
	@${META_COOKIE_TOUCH}
44
45
# we need to truncate our working file
46
.ldorder-rm: .NOTMAIN
47
	@rm -f .ldorder ldorder-*
48
	@${.ALLSRC:O:u:@f@${REFERENCE_FILE} < $f;@}
49
	@${META_COOKIE_TOUCH}
50
51
# make sure this exists
52
.ldorder:	.NOTMAIN
53
54
# and finally we need to reverse the order of content
55
ldorder: .ldorder .NOTMAIN
56
	@{ test ! -s .ldorder || cat -n .ldorder | sort -rn | \
57
	sed '/ldorder-/d;s,^[[:space:]0-9]*,,'; } > ${.TARGET}
58
59
# Initially we hook contents of DPLIBS and DPADD into our graph
60
LDORDER_LIBS ?= ${DPLIBS} ${DPADD:M*/lib*} ${__dpadd_libs}
61
# we need to remember this
62
_LDORDER_LIBS := ${LDORDER_LIBS:${LDORDER_LIBS_FILTER:ts:}}
63
64
.if empty(_LDORDER_LIBS)
65
# don't use stale ldorder
66
LDADD_LDORDER =
67
.else
68
# this is how you use it
69
LDADD_LDORDER ?= `cat ldorder`
70
.endif
71
72
# for debug below
73
_ldorder = ${RELDIR}.${TARGET_SPEC}
74
75
.endif				# !target(_LDORDER_USE)
76
77
.if !empty(LDORDER_LIBS) && !empty(_ldorder_use)
78
# canonicalize - these are just tokens anyway
79
LDORDER_LIBS := ${LDORDER_LIBS:${LDORDER_LIBS_FILTER:ts:}:R:C/\.so.*//}
80
_ldorders := ${LDORDER_LIBS:T:Mlib*:S,^,.ldorder-,}
81
82
.for t in ${_ldorders}
83
.if !target($t)
84
$t: _LDORDER_USE
85
.endif
86
.endfor
87
88
# and this makes it all happen
89
.ldorder: ${_ldorders}
90
91
# this is how we get the dependencies
92
.if ${.INCLUDEDFROMFILE:M*.${LDORDER_INC}} != ""
93
_ldorder := .ldorder-${.INCLUDEDFROMFILE:S/.${LDORDER_INC}//}
94
${_ldorder}: ${_ldorders}
95
.ldorder-rm: ${.INCLUDEDFROMDIR}/${.INCLUDEDFROMFILE}
96
.endif
97
98
# set DEBUG_LDORDER to pattern[s] that match the dirs of interest
99
.if ${DEBUG_LDORDER:Uno:@x@${RELDIR:M$x}@} != ""
100
.info ${_ldorder}: ${_ldorders}
101
.endif
102
103
# now try to find more ...
104
# each *.${LDORDER_INC} should set LDORDER_LIBS to what it needs
105
# it can also add to CFLAGS etc.
106
.for __inc in ${LDORDER_LIBS:S,$,.${LDORDER_INC},}
107
.if !target(__${__inc}__)
108
__${__inc}__:
109
# make sure this is reset
110
LDORDER_LIBS =
111
.-include <${__inc}>
112
.endif
113
.endfor
114
115
.endif				# !empty(LDORDER_LIBS)
116
117
.ifdef LIB
118
# you can make this depend on files (must match *ldorder*)
119
# to add extra content - like CFLAGS
120
libLDORDER_INC = lib${LIB}.${LDORDER_INC}
121
.if !commands(${libLDORDER_INC})
122
${libLDORDER_INC}:
123
	@(cat /dev/null ${.ALLSRC:M*ldorder*}; \
124
	echo 'LDORDER_LIBS= ${_LDORDER_LIBS:T:R:${LDORDER_INC_FILTER:ts:}:tu:C,.*,_{&},}'; \
125
	echo; echo '.include <ldorder.mk>' ) | sed 's,_{,$${,g' > ${.TARGET}
126
.endif
127
.endif
(-)contrib/bmake/mk/lib.mk (-4 / +15 lines)
Lines 1-4 Link Here
1
# $Id: lib.mk,v 1.62 2017/06/11 03:24:04 sjg Exp $
1
# $Id: lib.mk,v 1.68 2018/01/26 20:08:16 sjg Exp $
2
2
3
.if !target(__${.PARSEFILE}__)
3
.if !target(__${.PARSEFILE}__)
4
__${.PARSEFILE}__:
4
__${.PARSEFILE}__:
Lines 37-42 PICO?= .pico Link Here
37
37
38
CFLAGS+=	${COPTS}
38
CFLAGS+=	${COPTS}
39
39
40
META_NOECHO?= echo
41
40
# Originally derrived from NetBSD-1.6
42
# Originally derrived from NetBSD-1.6
41
43
42
# Set PICFLAGS to cc flags for producing position-independent code,
44
# Set PICFLAGS to cc flags for producing position-independent code,
Lines 370-375 _LIBS+=llib-l${LIB}.ln Link Here
370
372
371
.if empty(LIB)
373
.if empty(LIB)
372
_LIBS=
374
_LIBS=
375
.elif ${MK_LDORDER_MK} != "no"
376
# Record any libs that we need to be linked with
377
_LIBS+= ${libLDORDER_INC}
378
379
.include <ldorder.mk>
373
.endif
380
.endif
374
381
375
.if !defined(_SKIP_BUILD)
382
.if !defined(_SKIP_BUILD)
Lines 507-526 libinstall: Link Here
507
	[ -d ${DESTDIR}/${LIBDIR} ] || \
514
	[ -d ${DESTDIR}/${LIBDIR} ] || \
508
	${INSTALL} -d ${LIB_INSTALL_OWN} -m 775 ${DESTDIR}${LIBDIR}
515
	${INSTALL} -d ${LIB_INSTALL_OWN} -m 775 ${DESTDIR}${LIBDIR}
509
.if ${MK_ARCHIVE} != "no"
516
.if ${MK_ARCHIVE} != "no"
510
	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 600 lib${LIB}.a \
517
	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 644 lib${LIB}.a \
511
	    ${DESTDIR}${LIBDIR}
518
	    ${DESTDIR}${LIBDIR}
512
	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}.a
519
	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}.a
513
	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}.a
520
	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}.a
514
.endif
521
.endif
515
.if ${MK_PROFILE} != "no"
522
.if ${MK_PROFILE} != "no"
516
	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 600 \
523
	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 644 \
517
	    lib${LIB}_p.a ${DESTDIR}${LIBDIR}
524
	    lib${LIB}_p.a ${DESTDIR}${LIBDIR}
518
	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
525
	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
519
	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
526
	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
520
.endif
527
.endif
528
.if ${MK_LDORDER_MK} != "no"
529
	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 644 \
530
		lib${LIB}.ldorder.inc ${DESTDIR}${LIBDIR}
531
.endif
521
.if ${MK_PIC} != "no"
532
.if ${MK_PIC} != "no"
522
.if ${MK_PICLIB} != "no"
533
.if ${MK_PICLIB} != "no"
523
	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 600 \
534
	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 644 \
524
	    lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
535
	    lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
525
	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
536
	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
526
	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
537
	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
(-)contrib/bmake/mk/meta.autodep.mk (-2 / +2 lines)
Lines 1-4 Link Here
1
# $Id: meta.autodep.mk,v 1.45 2016/06/03 17:22:32 sjg Exp $
1
# $Id: meta.autodep.mk,v 1.46 2017/10/25 23:44:20 sjg Exp $
2
2
3
#
3
#
4
#	@(#) Copyright (c) 2010, Simon J. Gerraty
4
#	@(#) Copyright (c) 2010, Simon J. Gerraty
Lines 261-267 META_FILES = ${.MAKE.META.FILES:T:N.depend*:N*o.me Link Here
261
_makesyspath:= ${_PARSEDIR}
261
_makesyspath:= ${_PARSEDIR}
262
${_DEPENDFILE}: ${_depend} ${.PARSEDIR}/gendirdeps.mk  ${META2DEPS} $${.MAKE.META.CREATED}
262
${_DEPENDFILE}: ${_depend} ${.PARSEDIR}/gendirdeps.mk  ${META2DEPS} $${.MAKE.META.CREATED}
263
	@echo Checking $@: ${.OODATE:T:[1..8]}
263
	@echo Checking $@: ${.OODATE:T:[1..8]}
264
	@(cd . && \
264
	@(cd . && ${GENDIRDEPS_ENV} \
265
	SKIP_GENDIRDEPS='${SKIP_GENDIRDEPS:O:u}' \
265
	SKIP_GENDIRDEPS='${SKIP_GENDIRDEPS:O:u}' \
266
	DPADD='${FORCE_DPADD:O:u}' ${_gendirdeps_mutex} \
266
	DPADD='${FORCE_DPADD:O:u}' ${_gendirdeps_mutex} \
267
	MAKESYSPATH=${_makesyspath} \
267
	MAKESYSPATH=${_makesyspath} \
(-)contrib/bmake/mk/meta.stage.mk (-3 / +3 lines)
Lines 1-4 Link Here
1
# $Id: meta.stage.mk,v 1.54 2017/07/06 23:20:33 sjg Exp $
1
# $Id: meta.stage.mk,v 1.55 2017/10/27 01:17:09 sjg Exp $
2
#
2
#
3
#	@(#) Copyright (c) 2011-2017, Simon J. Gerraty
3
#	@(#) Copyright (c) 2011-2017, Simon J. Gerraty
4
#
4
#
Lines 20-28 Link Here
20
20
21
.if ${.MAKE.DEPENDFILE_PREFERENCE:U${.MAKE.DEPENDFILE}:M*.${MACHINE}} != ""
21
.if ${.MAKE.DEPENDFILE_PREFERENCE:U${.MAKE.DEPENDFILE}:M*.${MACHINE}} != ""
22
# this is generally safer anyway
22
# this is generally safer anyway
23
_dirdep = ${RELDIR}.${MACHINE}
23
_dirdep ?= ${RELDIR}.${MACHINE}
24
.else
24
.else
25
_dirdep = ${RELDIR}
25
_dirdep ?= ${RELDIR}
26
.endif
26
.endif
27
27
28
CLEANFILES+= .dirdep
28
CLEANFILES+= .dirdep
(-)contrib/bmake/mk/own.mk (-1 / +3 lines)
Lines 1-4 Link Here
1
# $Id: own.mk,v 1.36 2017/07/08 21:58:46 sjg Exp $
1
# $Id: own.mk,v 1.39 2018/01/26 20:08:16 sjg Exp $
2
2
3
.if !target(__${.PARSEFILE}__)
3
.if !target(__${.PARSEFILE}__)
4
__${.PARSEFILE}__:
4
__${.PARSEFILE}__:
Lines 91-96 OPTIONS_DEFAULT_NO+= DPADD_MK Link Here
91
OPTIONS_DEFAULT_NO+= \
91
OPTIONS_DEFAULT_NO+= \
92
	INSTALL_AS_USER \
92
	INSTALL_AS_USER \
93
	GPROF \
93
	GPROF \
94
	LDORDER_MK \
94
	LIBTOOL \
95
	LIBTOOL \
95
	LINT \
96
	LINT \
96
97
Lines 113-118 OPTIONS_DEFAULT_YES+= \ Link Here
113
114
114
OPTIONS_DEFAULT_DEPENDENT+= \
115
OPTIONS_DEFAULT_DEPENDENT+= \
115
	CATPAGES/MAN \
116
	CATPAGES/MAN \
117
	PROG_LDORDER_MK/LDORDER_MK \
116
	OBJDIRS/OBJ \
118
	OBJDIRS/OBJ \
117
	PICINSTALL/LINKLIB \
119
	PICINSTALL/LINKLIB \
118
	PICLIB/PIC \
120
	PICLIB/PIC \
(-)contrib/bmake/mk/prog.mk (-3 / +9 lines)
Lines 1-4 Link Here
1
#	$Id: prog.mk,v 1.32 2017/05/06 17:30:09 sjg Exp $
1
#	$Id: prog.mk,v 1.35 2018/01/26 20:04:07 sjg Exp $
2
2
3
.if !target(__${.PARSEFILE}__)
3
.if !target(__${.PARSEFILE}__)
4
__${.PARSEFILE}__:
4
__${.PARSEFILE}__:
Lines 109-123 _SUPCXX= -lstdc++ -lm Link Here
109
109
110
_CCLINK?=	${CC}
110
_CCLINK?=	${CC}
111
111
112
.if ${MK_PROG_LDORDER_MK} != "no"
113
${PROG}: ldorder
114
115
.include <ldorder.mk>
116
.endif
117
112
.if defined(DESTDIR) && exists(${LIBCRT0}) && ${LIBCRT0} != "/dev/null"
118
.if defined(DESTDIR) && exists(${LIBCRT0}) && ${LIBCRT0} != "/dev/null"
113
119
114
${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${DPADD}
120
${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${DPADD}
115
	${_CCLINK} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} -nostdlib ${_PROGLDOPTS} -L${DESTDIR}/usr/lib ${LIBCRT0} ${LIBCRTBEGIN} ${OBJS} ${LDADD} -L${DESTDIR}/usr/lib ${_SUPCXX} -lgcc -lc -lgcc ${LIBCRTEND}
121
	${_CCLINK} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} -nostdlib ${_PROGLDOPTS} -L${DESTDIR}/usr/lib ${LIBCRT0} ${LIBCRTBEGIN} ${OBJS} ${LDADD_LDORDER} ${LDADD} -L${DESTDIR}/usr/lib ${_SUPCXX} -lgcc -lc -lgcc ${LIBCRTEND}
116
122
117
.else
123
.else
118
124
119
${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${DPADD}
125
${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${DPADD}
120
	${_CCLINK} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${_PROGLDOPTS} ${OBJS} ${LDADD}
126
	${_CCLINK} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${_PROGLDOPTS} ${OBJS} ${LDADD_LDORDER} ${LDADD}
121
127
122
.endif	# defined(DESTDIR)
128
.endif	# defined(DESTDIR)
123
.endif	# defined(OBJS) && !empty(OBJS)
129
.endif	# defined(OBJS) && !empty(OBJS)
(-)contrib/bmake/mk/sys.clean-env.mk (-2 / +2 lines)
Lines 1-4 Link Here
1
# $Id: sys.clean-env.mk,v 1.21 2016/02/18 21:16:40 sjg Exp $
1
# $Id: sys.clean-env.mk,v 1.22 2017/10/25 23:44:20 sjg Exp $
2
#
2
#
3
#	@(#) Copyright (c) 2009, Simon J. Gerraty
3
#	@(#) Copyright (c) 2009, Simon J. Gerraty
4
#
4
#
Lines 97-103 _objroot := ${OBJROOT:U${SB_OBJROOT:U${SB}/${SB_OB Link Here
97
.if ${MAKE_VERSION} < 20160218
97
.if ${MAKE_VERSION} < 20160218
98
_objtop := ${OBJTOP:U${_objroot}${MACHINE}}
98
_objtop := ${OBJTOP:U${_objroot}${MACHINE}}
99
# Take care of ${MACHINE}
99
# Take care of ${MACHINE}
100
.if ${MACHINE} == "host" || ${OBJTOP} == ${HOST_OBJTOP:Uno}
100
.if ${MACHINE:Nhost*} == "" || ${OBJTOP} == ${HOST_OBJTOP:Uno}
101
OBJTOP = ${_objtop:S,${HOST_TARGET}$,\${MACHINE},}
101
OBJTOP = ${_objtop:S,${HOST_TARGET}$,\${MACHINE},}
102
.else
102
.else
103
OBJTOP = ${_objtop:S,${MACHINE}$,\${MACHINE},}
103
OBJTOP = ${_objtop:S,${MACHINE}$,\${MACHINE},}
(-)contrib/bmake/mk/sys.mk (-2 / +2 lines)
Lines 1-4 Link Here
1
# $Id: sys.mk,v 1.45 2017/02/05 01:26:13 sjg Exp $
1
# $Id: sys.mk,v 1.46 2017/11/15 22:59:23 sjg Exp $
2
#
2
#
3
#	@(#) Copyright (c) 2003-2009, Simon J. Gerraty
3
#	@(#) Copyright (c) 2003-2009, Simon J. Gerraty
4
#
4
#
Lines 84-90 OPTIONS_DEFAULT_DEPENDENT += \ Link Here
84
MK_META_MODE = yes
84
MK_META_MODE = yes
85
.-include <meta.sys.mk>
85
.-include <meta.sys.mk>
86
.elif ${MK_META_MODE:Uno} == "yes"
86
.elif ${MK_META_MODE:Uno} == "yes"
87
.MAKE.MODE = meta verbose
87
.MAKE.MODE = meta verbose ${META_MODE}
88
.endif
88
.endif
89
# make sure we have a harmless value
89
# make sure we have a harmless value
90
.MAKE.MODE ?= normal
90
.MAKE.MODE ?= normal
(-)contrib/bmake/mk/sys.vars.mk (-2 / +2 lines)
Lines 1-4 Link Here
1
# $Id: sys.vars.mk,v 1.2 2017/01/31 07:44:45 sjg Exp $
1
# $Id: sys.vars.mk,v 1.3 2018/02/06 00:51:53 sjg Exp $
2
#
2
#
3
#	@(#) Copyright (c) 2003-2009, Simon J. Gerraty
3
#	@(#) Copyright (c) 2003-2009, Simon J. Gerraty
4
#
4
#
Lines 45-51 M_L_TARGETS = ${M_ListToMatch:S,V,_TARGETS,} Link Here
45
45
46
# turn a list into a set of :N modifiers
46
# turn a list into a set of :N modifiers
47
# NskipFoo = ${Foo:${M_ListToSkip}}
47
# NskipFoo = ${Foo:${M_ListToSkip}}
48
M_ListToSkip= O:u:ts::S,:,:N,g:S,^,N,
48
M_ListToSkip= O:u:S,^,N,:ts:
49
49
50
# type should be a builtin in any sh since about 1980,
50
# type should be a builtin in any sh since about 1980,
51
# but sadly there are exceptions!
51
# but sadly there are exceptions!
(-)contrib/bmake/mk/whats.mk (-4 / +5 lines)
Lines 1-4 Link Here
1
# $Id: whats.mk,v 1.1 2014/08/30 22:40:47 sjg Exp $
1
# $Id: whats.mk,v 1.3 2017/10/19 06:09:14 sjg Exp $
2
#
2
#
3
#	@(#) Copyright (c) 2014, Simon J. Gerraty
3
#	@(#) Copyright (c) 2014, Simon J. Gerraty
4
#
4
#
Lines 36-42 what_build_thing?= ${KMOD}.ko Link Here
36
36
37
.if !empty(what_thing)
37
.if !empty(what_thing)
38
# a unique name that won't conflict with anything
38
# a unique name that won't conflict with anything
39
what_uuid = what_${.CURDIR:T:hash}
39
what_uuid = what_${what_thing}_${.CURDIR:T:hash}
40
what_var = what_${.CURDIR:T:hash}
40
41
41
.if !empty(what_build_thing)
42
.if !empty(what_build_thing)
42
${what_build_thing}: ${what_build_exts:@e@${what_uuid}.$e@}
43
${what_build_thing}: ${what_build_exts:@e@${what_uuid}.$e@}
Lines 57-63 _what1:= @(\#)${what_thing:tu} built ${%Y%m%d:L:lo Link Here
57
_what2:= @(\#)${what_location}
58
_what2:= @(\#)${what_location}
58
59
59
${what_uuid}.c:
60
${what_uuid}.c:
60
	echo '${_what_t} ${what_uuid}1[] = "${_what1}";' > $@ ${.OODATE:MNO_META_CMP}
61
	echo '${_what_t} ${what_var}1[] = "${_what1}";' > $@ ${.OODATE:MNO_META_CMP}
61
	echo '${_what_t} ${what_uuid}2[] = "${_what2}";' >> $@
62
	echo '${_what_t} ${what_var}2[] = "${_what2}";' >> $@
62
.endif
63
.endif
63
.endif
64
.endif
(-)contrib/bmake/os.sh (-1 / +6 lines)
Lines 17-23 Link Here
17
#	Simon J. Gerraty <sjg@crufty.net>
17
#	Simon J. Gerraty <sjg@crufty.net>
18
18
19
# RCSid:
19
# RCSid:
20
#	$Id: os.sh,v 1.53 2017/01/11 20:01:09 sjg Exp $
20
#	$Id: os.sh,v 1.55 2017/12/11 20:31:41 sjg Exp $
21
#
21
#
22
#	@(#) Copyright (c) 1994 Simon J. Gerraty
22
#	@(#) Copyright (c) 1994 Simon J. Gerraty
23
#
23
#
Lines 138-143 SunOS) Link Here
138
	# so NetBSD/i386 is good enough
138
	# so NetBSD/i386 is good enough
139
	case $OS in
139
	case $OS in
140
	NetBSD)
140
	NetBSD)
141
	        LOCALBASE=/usr/pkg
141
		HOST_ARCH=$MACHINE
142
		HOST_ARCH=$MACHINE
142
		SHARE_ARCH=$OS/$HOST_ARCH
143
		SHARE_ARCH=$OS/$HOST_ARCH
143
		;;
144
		;;
Lines 196-201 Haiku) Link Here
196
	esac
197
	esac
197
	;;
198
	;;
198
esac
199
esac
200
LOCALBASE=${LOCALBASE:-/usr/local}
199
201
200
HOSTNAME=${HOSTNAME:-`( hostname ) 2>/dev/null`}
202
HOSTNAME=${HOSTNAME:-`( hostname ) 2>/dev/null`}
201
HOSTNAME=${HOSTNAME:-`( uname -n ) 2>/dev/null`}
203
HOSTNAME=${HOSTNAME:-`( uname -n ) 2>/dev/null`}
Lines 237-242 Echo() { Link Here
237
export HOSTNAME HOST	    
239
export HOSTNAME HOST	    
238
export OS MACHINE MACHINE_ARCH OSREL OSMAJOR LOCAL_FS TMP_DIRS MAILER N C K PS_AXC
240
export OS MACHINE MACHINE_ARCH OSREL OSMAJOR LOCAL_FS TMP_DIRS MAILER N C K PS_AXC
239
export LN SHARE_ARCH TR
241
export LN SHARE_ARCH TR
242
export LOCALBASE
240
243
241
case /$0 in
244
case /$0 in
242
*/os.sh)
245
*/os.sh)
Lines 246-250 case /$0 in Link Here
246
		echo "$v='$vv'"
249
		echo "$v='$vv'"
247
	done
250
	done
248
	;;
251
	;;
252
*/host_target32) echo $HOST_TARGET32;;
253
*/host_target) echo $HOST_TARGET;;
249
esac
254
esac
250
255
(-)contrib/bmake/parse.c (-8 / +9 lines)
Lines 1-4 Link Here
1
/*	$NetBSD: parse.c,v 1.225 2017/04/17 13:29:07 maya Exp $	*/
1
/*	$NetBSD: parse.c,v 1.227 2018/02/22 01:59:28 sjg Exp $	*/
2
2
3
/*
3
/*
4
 * Copyright (c) 1988, 1989, 1990, 1993
4
 * Copyright (c) 1988, 1989, 1990, 1993
Lines 69-75 Link Here
69
 */
69
 */
70
70
71
#ifndef MAKE_NATIVE
71
#ifndef MAKE_NATIVE
72
static char rcsid[] = "$NetBSD: parse.c,v 1.225 2017/04/17 13:29:07 maya Exp $";
72
static char rcsid[] = "$NetBSD: parse.c,v 1.227 2018/02/22 01:59:28 sjg Exp $";
73
#else
73
#else
74
#include <sys/cdefs.h>
74
#include <sys/cdefs.h>
75
#ifndef lint
75
#ifndef lint
Lines 76-82 Link Here
76
#if 0
76
#if 0
77
static char sccsid[] = "@(#)parse.c	8.3 (Berkeley) 3/19/94";
77
static char sccsid[] = "@(#)parse.c	8.3 (Berkeley) 3/19/94";
78
#else
78
#else
79
__RCSID("$NetBSD: parse.c,v 1.225 2017/04/17 13:29:07 maya Exp $");
79
__RCSID("$NetBSD: parse.c,v 1.227 2018/02/22 01:59:28 sjg Exp $");
80
#endif
80
#endif
81
#endif /* not lint */
81
#endif /* not lint */
82
#endif
82
#endif
Lines 490-496 loadfile(const char *path, int fd) Link Here
490
{
490
{
491
	struct loadedfile *lf;
491
	struct loadedfile *lf;
492
#ifdef HAVE_MMAP
492
#ifdef HAVE_MMAP
493
	long pagesize;
493
	static long pagesize = 0;
494
#endif
494
#endif
495
	ssize_t result;
495
	ssize_t result;
496
	size_t bufpos;
496
	size_t bufpos;
Lines 515-523 loadfile(const char *path, int fd) Link Here
515
	if (load_getsize(fd, &lf->len) == SUCCESS) {
515
	if (load_getsize(fd, &lf->len) == SUCCESS) {
516
		/* found a size, try mmap */
516
		/* found a size, try mmap */
517
#ifdef _SC_PAGESIZE
517
#ifdef _SC_PAGESIZE
518
		pagesize = sysconf(_SC_PAGESIZE);
518
		if (pagesize == 0)
519
#else
519
			pagesize = sysconf(_SC_PAGESIZE);
520
		pagesize = 0;
521
#endif
520
#endif
522
		if (pagesize <= 0) {
521
		if (pagesize <= 0) {
523
			pagesize = 0x1000;
522
			pagesize = 0x1000;
Lines 720-725 ParseVErrorInternal(FILE *f, const char *cfname, s Link Here
720
	(void)vfprintf(f, fmt, ap);
719
	(void)vfprintf(f, fmt, ap);
721
	(void)fprintf(f, "\n");
720
	(void)fprintf(f, "\n");
722
	(void)fflush(f);
721
	(void)fflush(f);
722
	if (type == PARSE_INFO)
723
		return;
723
	if (type == PARSE_FATAL || parseWarnFatal)
724
	if (type == PARSE_FATAL || parseWarnFatal)
724
		fatals += 1;
725
		fatals += 1;
725
	if (parseWarnFatal && !fatal_warning_error_printed) {
726
	if (parseWarnFatal && !fatal_warning_error_printed) {
Lines 812-818 ParseMessage(char *line) Link Here
812
813
813
    switch(*line) {
814
    switch(*line) {
814
    case 'i':
815
    case 'i':
815
	mtype = 0;
816
	mtype = PARSE_INFO;
816
	break;
817
	break;
817
    case 'w':
818
    case 'w':
818
	mtype = PARSE_WARNING;
819
	mtype = PARSE_WARNING;
(-)contrib/bmake/stresep.c (-5 / +9 lines)
Lines 1-4 Link Here
1
/*	$NetBSD: stresep.c,v 1.2 2007/12/06 22:07:07 seb Exp $	*/
1
/*	$NetBSD: stresep.c,v 1.4 2017/08/23 10:27:41 christos Exp $	*/
2
2
3
/*-
3
/*-
4
 * Copyright (c) 1990, 1993
4
 * Copyright (c) 1990, 1993
Lines 59-64 stresep(char **stringp, const char *delim, int esc Link Here
59
	char *s;
59
	char *s;
60
	const char *spanp;
60
	const char *spanp;
61
	int c, sc;
61
	int c, sc;
62
	size_t l;
62
	char *tok;
63
	char *tok;
63
64
64
	if (stringp == NULL || delim == NULL)
65
	if (stringp == NULL || delim == NULL)
Lines 66-88 stresep(char **stringp, const char *delim, int esc Link Here
66
67
67
	if ((s = *stringp) == NULL)
68
	if ((s = *stringp) == NULL)
68
		return NULL;
69
		return NULL;
70
	l = strlen(s) + 1;
69
	for (tok = s;;) {
71
	for (tok = s;;) {
70
		c = *s++;
72
		c = *s++;
73
		l--;
71
		while (esc != '\0' && c == esc) {
74
		while (esc != '\0' && c == esc) {
72
			(void)strcpy(s - 1, s);
75
			memmove(s - 1, s, l);
73
			c = *s++;
76
			c = *s++;
77
			l--;
74
		}
78
		}
75
		spanp = delim;
79
		spanp = delim;
76
		do {
80
		do {
77
			if ((sc = *spanp++) == c) {
81
			if ((sc = *spanp++) == c) {
78
				if (c == 0)
82
				if (c == '\0')
79
					s = NULL;
83
					s = NULL;
80
				else
84
				else
81
					s[-1] = 0;
85
					s[-1] = '\0';
82
				*stringp = s;
86
				*stringp = s;
83
				return tok;
87
				return tok;
84
			}
88
			}
85
		} while (sc != 0);
89
		} while (sc != '\0');
86
	}
90
	}
87
}
91
}
88
#endif
92
#endif
(-)contrib/bmake/unit-tests/dotwait.exp (-2 / +2 lines)
Lines 22-30 shared.2.1 Link Here
22
shared.2.1
22
shared.2.1
23
shared.2.99
23
shared.2.99
24
shared.2.99
24
shared.2.99
25
cycle.1.99
26
cycle.1.99
25
make: Graph cycles through `cycle.2.99'
27
make: Graph cycles through `cycle.2.99'
26
make: Graph cycles through `cycle.2.98'
28
make: Graph cycles through `cycle.2.98'
27
make: Graph cycles through `cycle.2.97'
29
make: Graph cycles through `cycle.2.97'
28
cycle.1.99
29
cycle.1.99
30
exit status 0
30
exit status 0
(-)contrib/bmake/unit-tests/dotwait.mk (-2 / +2 lines)
Lines 1-4 Link Here
1
# $NetBSD: dotwait.mk,v 1.1 2014/08/21 13:44:51 apb Exp $
1
# $NetBSD: dotwait.mk,v 1.2 2017/10/08 20:44:19 sjg Exp $
2
2
3
THISMAKEFILE:= ${.PARSEDIR}/${.PARSEFILE}
3
THISMAKEFILE:= ${.PARSEDIR}/${.PARSEFILE}
4
4
Lines 11-17 PAUSE= sleep 1 Link Here
11
# Ignore "--- target ---" lines printed by parallel make.
11
# Ignore "--- target ---" lines printed by parallel make.
12
all:
12
all:
13
.for t in ${TESTS}
13
.for t in ${TESTS}
14
	@${.MAKE} -f ${THISMAKEFILE} -j4 $t | grep -v "^--- "
14
	@${.MAKE} -f ${THISMAKEFILE} -j4 $t 2>&1 | grep -v "^--- "
15
.endfor
15
.endfor
16
16
17
#
17
#
(-)contrib/bmake/unit-tests/varcmd.exp (+2 lines)
Lines 1-5 Link Here
1
default FU=<v>fu</v> FOO=<v>foo</v> VAR=<v></v>
1
default FU=<v>fu</v> FOO=<v>foo</v> VAR=<v></v>
2
two FU=<v>bar</v> FOO=<v>goo</v> VAR=<v></v>
2
two FU=<v>bar</v> FOO=<v>goo</v> VAR=<v></v>
3
immutable FU='bar'
4
immutable FOO='goo'
3
three FU=<v>bar</v> FOO=<v>goo</v> VAR=<v></v>
5
three FU=<v>bar</v> FOO=<v>goo</v> VAR=<v></v>
4
four FU=<v>bar</v> FOO=<v>goo</v> VAR=<v>Internal</v>
6
four FU=<v>bar</v> FOO=<v>goo</v> VAR=<v>Internal</v>
5
five FU=<v>bar</v> FOO=<v>goo</v> VAR=<v>Internal</v>
7
five FU=<v>bar</v> FOO=<v>goo</v> VAR=<v>Internal</v>
(-)contrib/bmake/unit-tests/varcmd.mk (-2 / +13 lines)
Lines 1-4 Link Here
1
# $Id: varcmd.mk,v 1.1.1.1 2014/08/30 18:57:18 sjg Exp $
1
# $Id: varcmd.mk,v 1.1.1.3 2017/12/08 03:37:54 sjg Exp $
2
#
2
#
3
# Test behaviour of recursive make and vars set on command line.
3
# Test behaviour of recursive make and vars set on command line.
4
4
Lines 15-21 show: Link Here
15
	@echo "${TAG} FU=<v>${FU}</v> FOO=<v>${FOO}</v> VAR=<v>${VAR}</v>"
15
	@echo "${TAG} FU=<v>${FU}</v> FOO=<v>${FOO}</v> VAR=<v>${VAR}</v>"
16
16
17
one:	show
17
one:	show
18
	@${.MAKE} -f ${MAKEFILE} FU=bar FOO=goo two
18
	@${.MAKE} -f ${MAKEFILE} FU=bar FOO+=goo two
19
19
20
two:	show
20
two:	show
21
	@${.MAKE} -f ${MAKEFILE} three
21
	@${.MAKE} -f ${MAKEFILE} three
Lines 24-29 three: show Link Here
24
	@${.MAKE} -f ${MAKEFILE} four
24
	@${.MAKE} -f ${MAKEFILE} four
25
25
26
26
27
.ifmake two
28
# this should not work
29
FU+= oops
30
FOO+= oops
31
_FU:= ${FU}
32
_FOO:= ${FOO}
33
two: immutable
34
immutable:
35
	@echo "$@ FU='${_FU}'"
36
	@echo "$@ FOO='${_FOO}'"
37
.endif
27
.ifmake four
38
.ifmake four
28
VAR=Internal
39
VAR=Internal
29
.MAKEOVERRIDES+= VAR
40
.MAKEOVERRIDES+= VAR
(-)contrib/bmake/var.c (-8 / +9 lines)
Lines 1-4 Link Here
1
/*	$NetBSD: var.c,v 1.215 2017/04/16 21:39:49 riastradh Exp $	*/
1
/*	$NetBSD: var.c,v 1.218 2018/02/18 00:52:42 sjg Exp $	*/
2
2
3
/*
3
/*
4
 * Copyright (c) 1988, 1989, 1990, 1993
4
 * Copyright (c) 1988, 1989, 1990, 1993
Lines 69-75 Link Here
69
 */
69
 */
70
70
71
#ifndef MAKE_NATIVE
71
#ifndef MAKE_NATIVE
72
static char rcsid[] = "$NetBSD: var.c,v 1.215 2017/04/16 21:39:49 riastradh Exp $";
72
static char rcsid[] = "$NetBSD: var.c,v 1.218 2018/02/18 00:52:42 sjg Exp $";
73
#else
73
#else
74
#include <sys/cdefs.h>
74
#include <sys/cdefs.h>
75
#ifndef lint
75
#ifndef lint
Lines 76-82 Link Here
76
#if 0
76
#if 0
77
static char sccsid[] = "@(#)var.c	8.3 (Berkeley) 3/19/94";
77
static char sccsid[] = "@(#)var.c	8.3 (Berkeley) 3/19/94";
78
#else
78
#else
79
__RCSID("$NetBSD: var.c,v 1.215 2017/04/16 21:39:49 riastradh Exp $");
79
__RCSID("$NetBSD: var.c,v 1.218 2018/02/18 00:52:42 sjg Exp $");
80
#endif
80
#endif
81
#endif /* not lint */
81
#endif /* not lint */
82
#endif
82
#endif
Lines 970-976 Var_Set(const char *name, const char *val, GNode * Link Here
970
	VarAdd(name, val, ctxt);
970
	VarAdd(name, val, ctxt);
971
    } else {
971
    } else {
972
	Buf_Empty(&v->val);
972
	Buf_Empty(&v->val);
973
	Buf_AddBytes(&v->val, strlen(val), val);
973
	if (val)
974
	    Buf_AddBytes(&v->val, strlen(val), val);
974
975
975
	if (DEBUG(VAR)) {
976
	if (DEBUG(VAR)) {
976
	    fprintf(debug_file, "%s:%s = %s\n", ctxt->name, name, val);
977
	    fprintf(debug_file, "%s:%s = %s\n", ctxt->name, name, val);
Lines 997-1003 Var_Set(const char *name, const char *val, GNode * Link Here
997
	 * Makefile settings.
998
	 * Makefile settings.
998
	 */
999
	 */
999
	if (varNoExportEnv != TRUE)
1000
	if (varNoExportEnv != TRUE)
1000
	    setenv(name, val, 1);
1001
	    setenv(name, val ? val : "", 1);
1001
1002
1002
	Var_Append(MAKEOVERRIDES, name, VAR_GLOBAL);
1003
	Var_Append(MAKEOVERRIDES, name, VAR_GLOBAL);
1003
    }
1004
    }
Lines 1060-1070 Var_Append(const char *name, const char *val, GNod Link Here
1060
	name = expanded_name;
1061
	name = expanded_name;
1061
    }
1062
    }
1062
1063
1063
    v = VarFind(name, ctxt, (ctxt == VAR_GLOBAL) ? FIND_ENV : 0);
1064
    v = VarFind(name, ctxt, (ctxt == VAR_GLOBAL) ? (FIND_CMD|FIND_ENV) : 0);
1064
1065
1065
    if (v == NULL) {
1066
    if (v == NULL) {
1066
	VarAdd(name, val, ctxt);
1067
	Var_Set(name, val, ctxt, 0);
1067
    } else {
1068
    } else if (ctxt == VAR_CMD || !(v->flags & VAR_FROM_CMD)) {
1068
	Buf_AddByte(&v->val, ' ');
1069
	Buf_AddByte(&v->val, ' ');
1069
	Buf_AddBytes(&v->val, strlen(val), val);
1070
	Buf_AddBytes(&v->val, strlen(val), val);
1070
1071
(-)usr.bin/bmake/Makefile (-7 / +2 lines)
Lines 14-24 CFLAGS+= -I${.CURDIR} Link Here
14
CLEANDIRS+= FreeBSD
14
CLEANDIRS+= FreeBSD
15
CLEANFILES+= bootstrap
15
CLEANFILES+= bootstrap
16
16
17
#	$Id: Makefile,v 1.95 2017/07/20 19:36:13 sjg Exp $
17
#	$Id: Makefile,v 1.99 2017/08/13 20:12:53 sjg Exp $
18
18
19
# Base version on src date
20
_MAKE_VERSION= 20170720
21
22
PROG?=	${.CURDIR:T}
19
PROG?=	${.CURDIR:T}
23
20
24
SRCS= \
21
SRCS= \
Lines 74-79 SRCS+= \ Link Here
74
	lstReplace.c \
71
	lstReplace.c \
75
	lstSucc.c
72
	lstSucc.c
76
73
74
77
# this file gets generated by configure
75
# this file gets generated by configure
78
.sinclude "Makefile.config"
76
.sinclude "Makefile.config"
79
77
Lines 160-169 MANDIR= ${MANDIR.bmake:U${SHAREDIR}/man} Link Here
160
${OBJS}: config.h
158
${OBJS}: config.h
161
.endif
159
.endif
162
160
163
# make sure that MAKE_VERSION gets updated.
164
main.o: ${SRCS} ${MAKEFILE}
165
161
166
167
# A simple unit-test driver to help catch regressions
162
# A simple unit-test driver to help catch regressions
168
accept test:
163
accept test:
169
	cd ${.CURDIR}/unit-tests && MAKEFLAGS= ${.MAKE} -r -m / TEST_MAKE=${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET}
164
	cd ${.CURDIR}/unit-tests && MAKEFLAGS= ${.MAKE} -r -m / TEST_MAKE=${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET}
(-)usr.bin/bmake/Makefile.config (-5 / +6 lines)
Lines 7-16 SRCTOP?= ${.CURDIR:H:H} Link Here
7
7
8
# things set by configure
8
# things set by configure
9
9
10
prefix= /usr
10
_MAKE_VERSION=20180222
11
12
prefix?= /usr
11
srcdir= ${SRCTOP}/contrib/bmake
13
srcdir= ${SRCTOP}/contrib/bmake
12
CC?= gcc
14
CC?= cc
13
DEFAULT_SYS_PATH= .../share/mk:/usr/share/mk
15
DEFAULT_SYS_PATH?= .../share/mk:/usr/share/mk
14
16
15
CPPFLAGS+= 
17
CPPFLAGS+= 
16
CFLAGS+= ${CPPFLAGS} -DHAVE_CONFIG_H
18
CFLAGS+= ${CPPFLAGS} -DHAVE_CONFIG_H
Lines 18-25 LDFLAGS= Link Here
18
LIBOBJS=  ${LIBOBJDIR}stresep$U.o
20
LIBOBJS=  ${LIBOBJDIR}stresep$U.o
19
LDADD= 
21
LDADD= 
20
USE_META= yes
22
USE_META= yes
21
FILEMON_H= /usr/include/dev/filemon/filemon.h
23
FILEMON_H?= /usr/include/dev/filemon/filemon.h
22
BMAKE_PATH_MAX?= 1024
24
BMAKE_PATH_MAX?= 1024
23
# used if MAXPATHLEN not defined
25
# used if MAXPATHLEN not defined
24
CPPFLAGS+= -DBMAKE_PATH_MAX=${BMAKE_PATH_MAX}
26
CPPFLAGS+= -DBMAKE_PATH_MAX=${BMAKE_PATH_MAX}
25
(-)usr.bin/bmake/Makefile.inc (+4 lines)
Lines 30-32 CFLAGS+= -DNO_PWD_OVERRIDE Link Here
30
DEFAULT_SYS_PATH= .../share/mk:/usr/share/mk
30
DEFAULT_SYS_PATH= .../share/mk:/usr/share/mk
31
.export DEFAULT_SYS_PATH
31
.export DEFAULT_SYS_PATH
32
.endif
32
.endif
33
34
.if ${MACHINE} != "host"
35
FILEMON_H ?= ${SRCTOP}/sys/dev/filemon/filemon.h
36
.endif
(-)usr.bin/bmake/config.h (-3 / +3 lines)
Lines 236-242 Link Here
236
#define HAVE_WORKING_VFORK 1
236
#define HAVE_WORKING_VFORK 1
237
237
238
/* define if your compiler has __attribute__ */
238
/* define if your compiler has __attribute__ */
239
/* #undef HAVE___ATTRIBUTE__ */
239
#define HAVE___ATTRIBUTE__ 1
240
240
241
/* Define to the address where bug reports for this package should be sent. */
241
/* Define to the address where bug reports for this package should be sent. */
242
#define PACKAGE_BUGREPORT "sjg@NetBSD.org"
242
#define PACKAGE_BUGREPORT "sjg@NetBSD.org"
Lines 245-251 Link Here
245
#define PACKAGE_NAME "bmake"
245
#define PACKAGE_NAME "bmake"
246
246
247
/* Define to the full name and version of this package. */
247
/* Define to the full name and version of this package. */
248
#define PACKAGE_STRING "bmake 20160606"
248
#define PACKAGE_STRING "bmake 20171126"
249
249
250
/* Define to the one symbol short name of this package. */
250
/* Define to the one symbol short name of this package. */
251
#define PACKAGE_TARNAME "bmake"
251
#define PACKAGE_TARNAME "bmake"
Lines 254-260 Link Here
254
#define PACKAGE_URL ""
254
#define PACKAGE_URL ""
255
255
256
/* Define to the version of this package. */
256
/* Define to the version of this package. */
257
#define PACKAGE_VERSION "20160606"
257
#define PACKAGE_VERSION "20171126"
258
258
259
/* Define as the return type of signal handlers (`int' or `void'). */
259
/* Define as the return type of signal handlers (`int' or `void'). */
260
#define RETSIGTYPE void
260
#define RETSIGTYPE void

Return to bug 226678