Home | History | Annotate | Download | only in make
History log of /src/usr.bin/make/make.1
RevisionDateAuthorComments
 1.387  02-Jul-2025  rillig make: shorten diagnostic for invalid -J option

In the manual page, there's more space to properly explain the
complexity behind the warning.
 1.386  28-Jun-2025  rillig make: add POSIX $^ support

POSIX 2024 [1] introduced the $^ internal macro. Implement it as an
alias for $> (.ALLSRC), following the suggestion from defect 1520 [2].

[1]: https://pubs.opengroup.org/onlinepubs/9799919799/utilities/make.html
[2]: https://www.austingroupbugs.net/view.php?id=1520

Patch provided by Diogo Santos in PR bin/59018.
 1.385  13-Jun-2025  rillig make: add on-demand inter-process stack traces

When debugging a build that heavily uses nested calls to sub-makes, the
chain of calls is useful to quickly assess the situation. If explicitly
requested, include the actions from any parent processes in the stack
traces.

Reviewed by: sjg
 1.384  04-Apr-2025  sjg make.1: elaborate on use of .OODATE:M
 1.383  04-Apr-2025  sjg make.1 further describe meta mode

This is long overdue. Explain how meta mode affects
the behavior of make.
 1.382  30-Mar-2025  sjg make: POSIX mode, check for sysV style modifiers first

A POSIX compatible makefile should not be using any
of our native modifiers, so give preference to the sysV style modifier
and only check the others as a fallback.

Reviewed by: rillig
 1.381  14-Nov-2024  sjg make.1 clarify use of MAKEOBJDIRPREFIX

Note that MAKEOBJDIRPREFIX should be an absolute path.
Also that MAKEOBJDIRPREFIX and MAKEOBJDIR *can* be set
via makefile variables, but that care is needed to avoid
unwanted side effects.
 1.380  10-Nov-2024  sjg make: allow -f .../Makefile

If the arg to -f or an entry in .MAKE.MAKEFILE_PREFERENCE
starts with ".../" look for the rest of the path in .CURDIR
and above.

Reviewed by: rillig
 1.379  21-Sep-2024  sjg Only list the defaults for MAKEFILE_PREFERENCE once
 1.378  01-Jul-2024  sjg make: add :tc to capitalize first letter of each word

This is very hard to do without :tc

Reviewed by: rillig
 1.377  01-Jun-2024  sjg make: add .export-all

An explicit syntax for exporting all global variables is much safer
than allowing .export with no argument to do the same.

Add .export-all and have .export with no argument throw a warning saying
to use .export-all

Reviewed by: rillig
 1.376  28-May-2024  sjg make: allow debugging the warning about .OBJDIR

When make complains about an unwritable .OBJDIR
it is not always obvious how we derrived that value.

If MAKE_DEBUG_OBJDIR_CHECK_WRITABLE is enabled call PrintOnError
so we can examine variables that are likely relevant.

Fix description of MAKE_OBJDIR_CHECK_WRITABLE in make.1
 1.375  10-Mar-2024  sjg make: record exit status in GNode

SetErrorVars can now set .ERROR_EXIT which allows
a .ERROR target to ignore the case of .ERROR_EXIT == 6
which means failure happened elsewhere.

Reviewed by:
 1.374  25-Jan-2024  sjg Note that in both :U and :D newval may be empty
 1.373  25-Jan-2024  sjg Indicate that for :U newval is optional
 1.372  24-Dec-2023  sjg Compat_RunCommand call Shell_Init is shellPath is NULL

Since .SHELL is potentially used in compat mode as well,
the man page description should not imply it is only used in jobs mode.

Remove path="sh" from shell-sh unit-test - and it would have detected
this bug.

Reviewed by: rillig
 1.371  10-Sep-2023  rillig make: fix typo
 1.370  09-Sep-2023  sjg Add .MAKE.JOBS.C to indicate wether -jC is supported
 1.369  09-Sep-2023  sjg make: allow -j to compute a multiple of ncpu

If _SC_NPROCESSORS_ONLN is supported; and -j arg is a floating point
number or ends in 'C' compute .MAKE.JOBS as a multiple of _SC_NPROCESSORS_ONLN

Based on a suggestion from des at freebsd.org
Discussed with: rillig, christos
 1.368  20-Aug-2023  sjg make.1: note that %s should only be used with :localtime
 1.367  28-Jun-2023  rillig make.1: clean up wording, clarify scope of '!' in conditions
 1.366  10-May-2023  sjg Make :mtime operate on each word in variable value.

Reviewed by: rillig
 1.365  09-May-2023  sjg make: :mtime=error throw error on stat(2) failure

Sometimes we want fatal error if stat fails on the
presumed pathname.
 1.364  09-May-2023  sjg make: add :mtime to provide mtime of file

The value of the variable is passed to stat(2)
and st_mtime is new value.
An optional arg can be used if stat(2) fails, otherwise
the current time is used.

See varmod-mtime.mk for usage examples.
 1.363  07-May-2023  sjg make.1: lose the trailing blank lines
 1.362  07-May-2023  sjg make: fix description of .PREFIX

For at least 20 years, the setting of .PREFIX in make
has not matched the documentation.
Since the documented behavior does not match reality or
POSIX make, fix the documentation.

In FindDepsRegularPath str_basename is applied to .PREFIX
this is wrong, but I was unable to verify fixing it
was benign in NetBSD build - my NetBSD box (7.2)
was unable to build known-good src with or without any patches.

For now just document the behavior more accurately.
 1.361  23-Mar-2023  sjg Document unexplained *** Error code 6
 1.360  26-Jan-2023  sjg make: some variables should be read-only

Make variables like .newline and .MAKE.{GID,PID,PPID,UID} read-only.

Reviewed by: rillig
 1.359  24-Jan-2023  sjg make: .SYSPATH: to add dirs to sysIncPath

.SYSPATH: with no sources will clear sysIncPath
otherwise sources are added

Reviewed by: rillig
 1.358  23-Jan-2023  sjg make: .[NO]READONLY for control of read-only variables

Reviewed by: rillig
 1.357  01-Jan-2023  rillig make.1: bump date
 1.356  01-Jan-2023  rillig make.1: fix markup
 1.355  01-Jan-2023  rillig make.1: sync list of built-in variables with reality

Fixes PR 57029.
 1.354  01-Jan-2023  rillig make.1: sort list of built-in variables
 1.353  01-Jan-2023  rillig make.1: use consistent markup for boolean flags
 1.352  01-Jan-2023  rillig make.1: move description of .MAKE.MODE below the .MAKE.META block
 1.351  01-Jan-2023  rillig make.1: reduce indentation of the long list of variable names
 1.350  29-Nov-2022  rillig branches: 1.350.2;
make.1: clarify in which case an expression may omit braces
 1.349  15-Nov-2022  rillig make.1: make horizontal and vertical spacing more consistent
 1.348  02-Oct-2022  rillig make.1: clean up style, typography, accuracy

In a code example, replace the deprecated `pwd` with the preferred form
$$(pwd).

Shorten the paragraph about escaping a dollar in modifiers, as the
various escaping mechanisms are described in the section 'Expansion of
variables'.

Summarize the previously many cases of the ':from=to' modifier to be
simpler to understand, actually mention what the pattern matching
character '%' can match.

Describe the syntax of function call expressions in conditionals.
Previously, only the function names had been documented.
 1.347  15-Sep-2022  uwe make(1): fix and simplify optional negation on conditional
 1.346  15-Sep-2022  uwe make(1): use .Dl for one-line literal display
 1.345  14-Sep-2022  rillig make.1: make typography more consistent
 1.344  14-Sep-2022  rillig make.1: fix typography, especially spacing
 1.343  12-Sep-2022  rillig make.1: fix style of ellipsis

In most places, '...' is not intended to be entered verbatim, instead it
is a placeholder, so don't use a fixed-width font for it.
 1.342  12-Sep-2022  rillig make.1: remove extraneous .El, update date
 1.341  12-Sep-2022  rillig make.1: split section on directives into several subsections

Directives such as .error or .undef are not conditionals. Having these
directives mixed in a single list made it more difficult to see how the
directives relate.
 1.340  09-Sep-2022  uwe make(1): add space before the punctuation argument
 1.339  09-Sep-2022  rillig make.1: clean up and make the description more accurate

Most changes are editorial. Notable exceptions are:

The ':Q' in MAKE_PRINT_VAR_ON_ERROR was wrongly added in the previous
commit. As that variable does not produce a shell command, there is no
point in quoting the characters.

Since 2012.10.07.19.17.31, make doesn't complain anymore if a shell
command in compat mode expands to an empty string, which removes the
need to "keep make happy".
 1.338  09-Sep-2022  rillig make.1: only use .Pa for actual pathnames
 1.337  08-Sep-2022  rillig make.1: rewrite many details in a more precise way
 1.336  07-Sep-2022  rillig make.1: clean up style, grammar, punctuation, improve clarity
 1.335  07-Sep-2022  rillig make.1: remove redundant 'then' from conditional sentences.
 1.334  07-Sep-2022  rillig make.1: use present tense in conditional sentences

These sentences are about general, timeless rules, rather than about
predictions about the future.
 1.333  05-Sep-2022  rillig make.1: clarify interpretation of conditionals

String literals in quotes are never interpreted as numbers.

The operators '<', '<=', '>', '>=' are only allowed in numeric
comparisons.

Avoid the term 'C relational operators' since in C, the relational
operators exclude '==' and '!=', which are called equality operators
instead.
 1.332  03-Sep-2022  rillig make: clean up handling of .break in .for loops

Move For_Break further up, as the functions in that file are sorted from
small to big. The cast from size_t to unsigned int is required by lint.

In parse.c, move the code into a separate function to keep
ParseDirective small. Its only job is to parse the directive and then
delegate to another function doing the actual work.

In the manual page, remove empty lines.

In the test, ensure that .break stops processing of the .for loop
immediately; anything after the .break is not processed anymore.
Replace ':=' with '=', as there is no need to evaluate '$i' early.
Check the expected value in the .mk file instead of the .exp file, to
keep the reading scope as small as possible.
 1.331  02-Sep-2022  sjg make: add .break to terminate .for loop early

When .break is encountered within a .for loop
it causes immediate termination.

Outside of a .for loop .break causes a parse error.

Reviewed by: christos
 1.330  14-Aug-2022  uwe make(1): mark up the variable expansion example
 1.329  14-Aug-2022  uwe make(1): use .Dl for .MAKE.JOB.PREFIX examples
 1.328  14-Aug-2022  uwe make(1): prettify .for index variable example
 1.327  14-Aug-2022  uwe make(1): more .Va fixes
 1.326  14-Aug-2022  uwe make(1): mark up FRC in BUGS
 1.325  14-Aug-2022  uwe make(1): Use .Dq instead of literal ASCII quotes
 1.324  14-Aug-2022  uwe make(1): Be consistent about using .Va for make variables
 1.323  14-Aug-2022  rillig make.1: fix accidental removal of the directive 'export'
 1.322  14-Aug-2022  uwe make(1): more .Ar fixes
 1.321  14-Aug-2022  uwe make(1): ".../" in -m option description is literal ".../"
 1.320  14-Aug-2022  uwe make(1): Consistent formatting for -i and -s descriptions.
 1.319  14-Aug-2022  uwe make(1): Fix markup of the -d[flags] section.

The debug flags are literals, not syntactic variables (.Ar).
While here use .Dq for quoted words in the text.
 1.318  14-Aug-2022  uwe make(1): Fix some obviously wrong uses of .Va
 1.317  14-Aug-2022  rillig make.1: clean up formatting and grammar, be more accurate
 1.316  14-Aug-2022  rillig make.1: not every '-' is a flag
 1.315  12-Jul-2022  rillig make.1: fix markup for variable modifiers, add italic correction
 1.314  12-Jul-2022  rillig make.1: fix markup for options, they are not arguments
 1.313  12-Jul-2022  rillig make.1: fix ugly line break in PostScript output
 1.312  12-Jul-2022  rillig make.1: fix markup

Not all square brackets are options, some are wildcards.
 1.311  12-Jul-2022  rillig make.1: replace redundant .Ql with .Sq
 1.310  12-Jul-2022  rillig make: describe variable assignment and evaluation more precisely

Variables in make are not "much like variables in the shell", they only
look that way. Their behavior is more similar to C preprocessor macros.

The spaces around a variable value are removed when parsing the variable
assignment, not after evaluating it.

Before describing the variable assignment operators, introduce the
general syntax of a variable assignment.

Add a separate subsection "Expansion of variables", since assignment and
expansion are unrelated. Illustrate how variable expansions look
instead of describing it in many words.

Describe how variables are expanded in conditionals, since that is
different from everywhere else.
 1.309  07-May-2022  rillig make: allow to randomize build order of targets

In complex dependency structures, when a build fails, a probable cause
is a missing dependency declaration between some files. In compat mode,
the build order is deterministic, in jobs mode, it is somewhat
deterministic. To explore more edge cases, add the line ".MAKE.MODE +=
randomize-targets" somewhere in the makefile.

Fixes PR bin/45226 by riastradh. Reviewed by christos.
 1.308  18-Apr-2022  rillig make: only switch to POSIX mode if '.POSIX:' is the first line

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html
says that in order to make a makefile POSIX-conforming, its first
non-comment line must be the special dependency line '.POSIX:' without
any source dependencies.

Previously, make switched to POSIX mode even if such a line occurred
anywhere else, which was allowed by POSIX but was deep in the
"unspecified behavior" area. For NetBSD make, there is no big
difference since it doesn't ship any <posix.mk> file, this change mainly
affects the bmake distribution.

Previously, makefiles that contain '.POSIX:' somewhere in the middle
could fail due to <posix.mk> resetting .SUFFIXES, among other things.

Suggested by Simon J. Gerraty, who also reviewed an earlier version of
this change.
 1.307  26-Mar-2022  sjg Mention 'make -r' with .POSIX
 1.306  25-Mar-2022  sjg Include posix.mk when .POSIX: first encountered

Since .POSIX: is required to be the first non-comment line
in a Makefile, including ${MAKE_POSIX_MK} or whatever _PATH_POSIX_MK is
set to at this point is equivalent to an extension of sys.mk

This is a minimal change that can allow a better approximation of
POSIX compliance

Reviewed by: rillig
 1.305  09-Feb-2022  rillig make: fix mistakes, spelling and typos in comments and manual page

No binary change for -DNDEBUG.
 1.304  29-Jan-2022  sjg Tweak description of local variable assignments
 1.303  29-Jan-2022  sjg Document quirks of target local variable assignments
 1.302  27-Jan-2022  sjg Allow local variable assignments in dependency lines

The variable is set in the context of the target.
This syntax has been supported by gmake for ~ever.
If necessary a makefile can set .MAKE.TARGET_LOCAL_VARIABLES=false
to disable this.

Expose GetBooleanExpr so parse.c can use it.
 1.301  13-Jan-2022  sjg meta.c: add .MAKE.META.CMP_FILTER

On rare occasions it is useful to be able to filter command lines
before comparison.
 1.300  12-Dec-2021  sjg Add .SUFFIXES as read-only variable.

References to ${.SUFFIXES} are handled dynamically in
ParseVarnameLong by calling Suff_NamesStr.

The variable cannot be set normally.

Reviewed by: rillig
 1.299  03-Aug-2021  wiz Document :On modifiers in more detail.
 1.298  30-Jul-2021  rillig make: fix typo in manual page, add more tests for the new ':On'
 1.297  30-Jul-2021  sjg Add :On for numeric sort

Reviewed by: christos rillig
 1.296  04-Feb-2021  rillig make: rename context and ctxt to scope

This continues the previous commit, in which VAR_GLOBAL, VAR_INTERNAL
and VAR_CMDLINE were renamed.

Renaming the variable 'ctxt' was trivial since that word is used nowhere
else. In the comments though, each occurrence of the word 'context' had
to be checked individually since the word 'context' was not only used
for referring to a variable scope. It is also used to distinguish
different situations where characters are escaped in a certain way
('parsing context') and in a few other expressions.
 1.295  23-Dec-2020  rillig make(1): remove trailing whitespace in manual page
 1.294  22-Dec-2020  rillig make(1): allow .undef to undefine multiple variables at once

Since make doesn't support variable names containing spaces, this edge
case is not enough reason to stop this feature. Having multiple
variable names as arguments nicely aligns with other directives such as
.for and .export.
 1.293  25-Nov-2020  sjg Add .MAKE.UID and .MAKE.GID
 1.292  14-Nov-2020  rillig make(1): document the -S option

This option has been available at least since 1993-03-21, and for the
same time it has been undocumented.
 1.291  12-Nov-2020  sjg Pass a writable flag to Main_SetObjdir to control writable check

For curdir and an explicit .OBJDIR target, we allow for
the directory to be read-only.
During InitObjdir we otherwise default to requiring objdir to be
writable - this can be controlled by env variable
MAKE_OBJDIR_CHECK_WRITABLE

Add unit-tests/objdir-writable

Reviewed by: christos rillig
 1.290  01-Nov-2020  rillig make(1): fix manual page regarding numerical comparisons

Make uses double, not int, for comparing things.
 1.289  28-Aug-2020  rillig make(1): fix manual page about the modifiers of the :C modifier
 1.288  22-Aug-2020  sjg Add .SHELL as read-only variable

The .SHELL variable represents the shellPath used to run
scripts.

Reviewed by: rillig, christos
 1.287  19-Aug-2020  rillig make(1): fix a few inconsistencies in the manual page
 1.286  05-Aug-2020  dholland Also mention that make dependency operators must be uniform.

This wasn't previously documented, I think.
 1.285  05-Aug-2020  dholland Rework the description of the :, !, and :: dependence operators to make sense.

Bump date.
 1.284  31-Jul-2020  sjg Add -dL for LINT

When parsing variable assignments other than := and if
value contains '$' attempt Var_Subst the same as for :=,
if the value does not parse correctly, we get a fatal error
including file an line number.

This can greatly help with finding the cause of problems.

Reviewed by: christos
 1.283  18-Jul-2020  sjg Add -dh for DEBUG_HASH

Allow tracking of max chain length, to see how well the hash
tables are working.
Pull the actual hash operation into a marco so it can be
easily changed - for experimenting.

The current hash, is pretty good.

Reviewed by: christos
 1.282  06-Jun-2020  wiz Remove trailing whitespace.
 1.281  05-Jun-2020  sjg make: add :Or for reverse sort

:Or is more efficient than :O:[-1..1]

Reviewed by: christos
 1.280  27-Apr-2020  christos document the SYSV ${VAR:old=new} corner cases.
 1.279  04-Feb-2020  wiz Remove trailing whitespace.
 1.278  03-Feb-2020  uwe Make delimiters in <file> and "file" literal.
 1.277  03-Feb-2020  kamil Fix usage of angle-brackets and quotes in make(1) manpage

make(1) has commands .include <file> and .include "file",
but the manpage was (inconsistently) rendering <file> with
angle-brackets (e.g. in UTF8 ) and "file" with curly-quotes
in HTML output (but not text).

This is an attempt to fix that and output only literal <file>
and "file" as is actually required in the makefile.fileoutput,

https://reviews.freebsd.org/D21470

Submitted by Mateusz Piotrowski (FreeBSD)
 1.276  19-Dec-2019  maxv Revert the filemon removal in bmake, as pointed out by maya we do care
about not introducing divergence with FreeBSD, and the cost of unused
is acceptable here.
 1.275  18-Dec-2019  maxv Retire filemon, discussed on tech-kern@.
 1.274  16-Feb-2019  gutteridge make(1): minor grammar fixes in BUGS section
 1.273  27-May-2018  christos branches: 1.273.2;
- Introduce :q modifier for make variables and make it double escape $'s so
that passing variables to recursive makes with :q works as expected.
- Revert :Q to work as before.
- Adjust makefiles that use recursive make to use :q

Discussed on tech-toolchain@
XXX: pullup 8
 1.272  02-Apr-2018  dholland Fix bad markup.
 1.271  03-Jul-2017  wiz branches: 1.271.4;
Remove workaround for ancient HTML generation code.
 1.270  22-Jun-2017  dholland Improve description of -V. Can probably be improved further.
 1.269  22-Jun-2017  wiz Whitespace fixes.
 1.268  22-Jun-2017  dholland Document what the magic variable .MAKE.EXPAND_VARIABLES actually does.
 1.267  19-Jun-2017  christos Add -v variable that always expands variables; restore -V the way it was.
 1.266  01-Feb-2017  sjg branches: 1.266.4;
Since we are avoiding VAR_INTERNAL, allow the variable :_ stores to
to be specified, also allows for multiple stages of modification to
be stashed.
 1.265  30-Jan-2017  sjg Add :range and :_

:range replaces var value with an integer sequence one per word
in the current var value.

:_ stores the current var value in $_ so that it can be referred to
later in the modifier series.

Reviewed by: christos
 1.264  14-Jan-2017  sjg branches: 1.264.2;
Allow providing a utc value to :{gm,local}time

Reviewed by: christos
 1.263  26-Aug-2016  dholland Document .DELETE_ON_ERROR.
 1.262  18-Aug-2016  wiz Whitespace.
 1.261  15-Aug-2016  sjg Add .MAKE.META.IGNORE_FILTER to allow more complicated filtering of filemon data.

The filter is applied to paths Read or Excuted, and if it expands to
nothing, the entry is skipped.

For example; dirdeps.mk can set this to:

.MAKE.META.IGNORE_FILTER = M*/${.MAKE.DEPENDFILE_PREFIX}*

when checking if DIRDEPS_CACHE is up to date, where only Makefile.depend*
are of interest.
 1.260  10-Aug-2016  sjg Set .ERROR_CMD if we can
 1.259  03-Jun-2016  wiz branches: 1.259.2;
Fix typo in width argument; end sentence with dot.
 1.258  03-Jun-2016  sjg Refactor the logic for deciding when a .meta file is needed.

Both meta_create() and meta_oodate() now share meta_needed()
to indicate if a .meta file is needed.

This allows for deciding that missing .meta file is cause of out-of-date.
The new knob 'missing-meta' controlls this, and is off by default
since the side effect files of generators like yacc will typically need
.NOMETA to avoid problems.

This however makes it much easier for folk to switch back and forth
with meta mode (eg. FreeBSD's normal build can leverage meta mode for
improved reliablility without need to clean).

Also if .MAKE.MODE does not contain 'nofilemon', the knob
'missing-filemon' allows control as to whether missing filemon data
should cause the target to be out-of-date.
Again off by default.
 1.257  10-May-2016  sjg Allow for ignoring paths that match a set of patterns.
This can be expensive, so use with caution.
 1.256  16-Mar-2016  sjg Fix syntax
 1.255  14-Mar-2016  matthias make $@ an alias for $! in archive member rules (compatibility with
other makes).
 1.254  20-Feb-2016  wiz Spelling fixes.
 1.253  20-Feb-2016  sjg Add a knob .MAKE.SAVE_DOLLARS to control the behavior of $$ during :=

If TRUE '$$' are not consumed (saved).
If FALSE '$$' becomes '$' just like normal expansion rules.

default is TRUE.

Reviewed by: christos
 1.252  18-Feb-2016  sjg Add .export-literal to avoid the need for $$ dance when trying to put
unexpanded variables into environment.

Reviewed by: christos
 1.251  18-Feb-2016  sjg It's 2016
 1.250  18-Feb-2016  sjg Add support for .dinclude

Like .sinclude missing file will be ignored.
Like .depend stale dependencies will be ignored.
Allows better implementation of auto depend.

Reviewed by: christos
Requested by: Bryan Drewery at FreeBSD.
 1.249  05-Jun-2015  wiz Drop trailing whitespace.
 1.248  05-Jun-2015  sjg Document .OBJDIR target.
 1.247  10-Apr-2015  wiz It's 2015.
 1.246  10-Apr-2015  wiz Remove trailing whitespace.
 1.245  09-Apr-2015  sjg Forgot to tweak date
 1.244  09-Apr-2015  sjg jobs mode handles '-' very differently to compat mode, but this is not
reflected in make.1
Also fix handling to match the behavior described in the comment
of JobPrintCommand (only matters if shell sets hasErrCtl).

A better long term solution is needed since the current behavior
is sub-optimal wrt '-' and different from all other makes.

Reviewed by: christos
 1.243  14-Sep-2014  apb Small markup fixes:
* Use \e instead of \\ to represent a backslash;
* Dont' start a line with .SUFFIXES.
 1.242  14-Sep-2014  dholland bump date; I think I'm done for tonight
 1.241  14-Sep-2014  dholland Add some notes on compatibility with other make dialects.

I was originally intending to preserve some of Jarmo Jaakkola's notes
on POSIX make from the PR 49085 changes... but really there's no point
wandering into details about $? and such when the big picture is
"almost everything in this manual works only in BSD make".

Maybe the exact details can be stuffed into a chapter of the mythical
make reference manual if that ever gets (re)written.
 1.240  14-Sep-2014  dholland Improve the documentation of rule-local variables. Cherry-picked from
the PR 49085 changes, with some adjustments by me.
 1.239  14-Sep-2014  dholland Improvements pertaining to shell commands and chdir. Some of this
appeared in the PR 49085 changes, even though it's not actually
relevant there except tangentially. However, I've reworked most of
that for clarity and added some more.
 1.238  09-Sep-2014  dholland Restore -r1.234 of make.1, which was an unrelated fix from sjg pertaining
to the docs for the -w option.
 1.237  09-Sep-2014  dholland Revert the man page as well. (hi joerg)

Revert it to 20140823 (-r1.230), before the controversial commits,
which changed it a good deal.
 1.236  05-Sep-2014  wiz Reduce pirate slang.
 1.235  04-Sep-2014  christos document commented out .INVISIBLE and .JOIN.
 1.234  28-Aug-2014  sjg Enter/leave flag is -w not -dw
 1.233  23-Aug-2014  christos PR/46096: Jarmo Jaakkola: fix many problems with dependencies (PR 49086)

Quite extensive rewrite of the Suff module. Some ripple effects into
Parse and Targ modules too.

Dependency searches in general were made to honor explicit rules so
implicit and explicit sources are no longer applied on targets that
do not invoke a transformation rule.

Archive member dependency search was rewritten. Explicit rules now
work properly and $(.TARGET) is set correctly. POSIX semantics for
lib(member.o) and .s1.a rules are supported.

.SUFFIXES list maintenance was rewritten so that scanning of existing
rules works when suffixes are added and that clearing the suffix list
removes single suffix rules too. Transformation rule nodes are now
mixed with regular nodes so they are available as regular targets too
if needed (especially after the known suffixes are cleared).

The .NULL target was documented in the manual page, especially to
warn against using it when a single suffix rule would work.
A deprecation warning was also added to the manual and make also
warns the user if it encounters .NULL.

Search for suffix rules no longer allows the explicit dependencies
to override the selected transformation rule. A check is made in
the search that the transformation that would be tried does not
already exist in the chain. This prevents getting stuck in an infinite
loop under specific circumstances. Local variables are now set
before node's children are expanded so dynamic sources work in
multi-stage transformations. Make_HandleUse() no longer expands
the added children for transformation nodes, preventing triple
expansion and allowing the Suff module to properly postpone their
expansion until proper values are set for the local variables.

Directory prefix is no longer removed from $(.PREFIX) if the target
is found via directory search.

The last rule defined is now used instead of the first one (POSIX
requirement) in case a rule is defined multiple times. Everything
defined in the first instance is undone, but things added "globally"
are honored. To implement this, each node tracks attribute bits
which have been set by special targets (global) instead of special
sources (local). They also track dependencies that were added by
a rule with commands (local) instead of rule with no commands (global).

New attribute, OP_FROM_SYS_MK is introduced. It is set on all targets
found in system makefiles so that they are not eligible to become
the main target. We cannot just set OP_NOTMAIN because it is one of
the attributes inherited from transformation and .USE rules and would
make any eligible target that uses a built-in inference rule ineligible.

The $(.IMPSRC) local variable now works like in gmake: it is set to
the first prerequisite for explicit rules. For implicit rules it
is still the implied source.

The manual page is improved regarding the fixed features. Test cases
for the fixed problems are added.

Other improvements in the Suff module include:
- better debug messages for transformation rule search (length of
the chain is now visualized by indentation)
- Suff structures are created, destroyed and moved around by a set
of maintenance functions so their reference counts are easier
to track (this also gets rid of a lot of code duplication)
- some unreasonably long functions were split into smaller ones
- many local variables had their names changed to describe their
purpose instead of their type
 1.232  23-Aug-2014  wiz Bump date for previous.
 1.231  23-Aug-2014  christos PR/49085: Jarmo Jaakkola: fix several parsing errors

Don't exit from var.c:Var_Parse() before possible modifiers are handled
on D and F modified versions of local variables. Properly expand $(?D)
and $(?F) too.

Make line continuations in rule's commands POSIX compliant.

Fix the syntax error caused by lib(member) as the last target before
a dependency operator.

Document the line continuation change in the manual page. Also talk
more about the POSIX style local variables and their modifiers.

Add tests covering the fixed problems into d_posix.mk. The test is
a known failure at the moment because of PR 49086 and PR 49092.

[XXX: unconverted tests]
 1.230  15-Feb-2014  sjg Put .INCLUDEDFROM* in the right section
 1.229  19-Jan-2014  apb Emphasise the fact that the regexp and replacement in :C/// are
subjected to variable expansion before regexp parsing. This was already
documented if you read carefully enough, but more emphasis would have
helped me to figure out why I needed three or four backslashes where I
expected to need only two.
 1.228  10-Jan-2014  wiz Bump date for previous.
 1.227  10-Jan-2014  christos add .INCLUDEDFROM{FILE,DIR}
 1.226  07-Nov-2013  dholland apostrophe's do not make plural's.
 1.225  27-Oct-2013  wiz Remove trailing whitespace.
 1.224  25-Oct-2013  apb Explain that ${VAR:M*} will normalise the inter-word spacing.
 1.223  25-Oct-2013  apb The :C/// modifier takes an extendedregular expression.
 1.222  11-Aug-2013  apb Use Va markup to show that the "suffix" part of ".PATH.suffix"
is a placeholder, not a literal string.
Also bump date.
 1.221  11-Aug-2013  dholland Document .PATH.suffix:. Noted by apb back in December of 2008
(that's how long my queue is...)
 1.220  30-Jul-2013  sjg Allow an empty .MAKE.JOB.PREFIX to supress output of --- job --- tokens
 1.219  16-Jul-2013  christos More gmake compatibility:
1. add -w flag to print Entering and Leaving directory name the the beginning
and the end of processing.
2. export MAKELEVEL=$((MAKELEVEL + 1)) only in the child environment.
3. when printing error messages, prefix them with the program name [$MAKELEVEL]
for $MAKELEVEL > 0
4. if $MAKEFLAGS consists only of letters assume it is a set of flags (as
allowed by posix), convert them to -f -l -a -g -s, so that they get parsed
properly.
With those fixes gmake -> bmake -> gmake -> bmake etc. works as expected.
 1.218  26-Jun-2013  agc fix a typo
 1.217  25-Jun-2013  wiz Remove trailing whitespace.
 1.216  25-Jun-2013  sjg Add .MAKE.META.IGNORE_PATHS to facilitate local additions to the paths
which should be ignored by meta_oodate().
 1.215  22-May-2013  christos improve wording
 1.214  22-May-2013  christos put a note on what FRC means.
 1.213  31-Mar-2013  sjg Refine the effect of .OODATE on command comparison.
Rather than apply it to the whole script, just the current command line
is affected. This allows a trick like ${.OODATE:M.NOMETA_CMP}
to cause command comparison to be supressed for one command only.
 1.212  23-Mar-2013  sjg If built with filemon support, set .MAKE.PATH_FILEMON to _PATH_FILEMON
so that makefiles can test for it.
 1.211  05-Mar-2013  christos Add a .STALE special target that gets invoked when dependency files contain
stail entries.
 1.210  27-Jan-2013  sjg In SHELL COMMANDS section, provide some clues about different
behavior in jobs vs non-jobs mode.
Move the comment about when shell is skipped to this discussion
from COMPATABILITY.
Remove the incorrect statement about default mode being somehow
neither jobs mode or compat mode (it is compat mode).
 1.209  08-Oct-2012  christos It is Sprite, not Sprint; pointed out by Todd Miller.
 1.208  17-Sep-2012  christos spelling
 1.207  17-Sep-2012  sjg Document the fact that lack of shell meta chars in a command
results in direct exec in compat mode.
 1.206  30-Aug-2012  wiz branches: 1.206.2;
Add an s.
 1.205  30-Aug-2012  sjg Add a knob to control whether -V fully expands a plain variable by default.
The default retains the traditional NetBSD behavior, but the knob
can be set so that FreeBSD can retain their expected behavior.
This is a compromise to be sure.

Add a debug flag -dV to override the above, so that regardless of
the knob setting, the raw value of a variable can be easily seen.
 1.204  24-Apr-2012  sjg Restore previous behavior - supressing duplicate entries in
.MAKE.MAKEFILES - it is more efficient.
 1.203  20-Apr-2012  sjg Fix some typos in/around ParseGmakeExport.
Remove the suppresssion of duplicate entries in .MAKE.MAKEFILES
 1.202  08-Apr-2012  wiz Remove unnecessary Bk/Ek pairs from SYNOPSIS.
No effective change except where I used the opportunity to sort options
and/or option descriptions.
 1.201  31-Mar-2012  christos document gmake export command
 1.200  03-Feb-2012  sjg Fix description of 'silent' in .MAKE.MODE
Also document 'env' in that context.
 1.199  23-Dec-2011  sjg Mention limits of :P
 1.198  17-Dec-2011  sjg The :@ example gives the impression that we encourage the ODE
convention of naming loop variables like .LINK., when in fact
single char variables are far more common in NetBSD.
 1.197  13-Nov-2011  dholland Fix xref to the PSD; PR 45568 from Petri Laakso.
 1.196  06-Nov-2011  christos explain how to use .PARSEDIR and .PARSEFILE
 1.195  28-Aug-2011  sjg branches: 1.195.2;
In meta mode, we create .meta files for most targets.
These capture all the interesting data - useful for debugging.
In such cases there is no need to replicate commands in the build log.
Rather than run the entire build .SILENT, allow meta mode to set that flag
per target iff a .meta file is created.
Normal behavior is retained for targets where no .meta file is created,
ensuring that no build data is lost.
 1.194  18-Aug-2011  sjg Make some dashes em-dashes (based on patch from Andrew O. Shadoura).
Note behavior of .META flag wrt out-of-date.
 1.193  30-Jun-2011  wiz dependant -> dependent
 1.192  28-May-2011  cheusov fix bug in section .ORDER of make.1
 1.191  04-May-2011  wiz Remove trailing whitespace.
 1.190  04-May-2011  christos Document what I wrote for PR/40115
 1.189  04-May-2011  sjg Add .MAKE.META.BAILIWICK - to identify the scope of make's control.
meta_oodate: if a file that was written or linked within our bailiwick,
but outside of .OBJDIR is missing, add it to missingFiles.
If we get to the end of the .meta file without seeing it [re]moved,
then consider the target out-of-date.
 1.188  11-Apr-2011  wiz Remove trailing whitespace.
 1.187  11-Apr-2011  sjg Add :localtime and :gmtime which use value as format string for strftime.
 1.186  07-Apr-2011  joerg Add the :hash modifier to compute a 32bit hash of an variable.
This uses MurmurHash3 to get a reasonable collission-free hash with
small code. The result is endian neutral.
 1.185  27-Mar-2011  sjg Use curdirOk as the token
 1.184  27-Mar-2011  sjg When .MAKE.MODE inlcudes 'meta'; 'curdir=true' enables creating .meta
files in .CURDIR - such as when running make in .OBJDIR with a generated
makefile.
 1.183  26-Feb-2011  sjg Fix rendering of :? example
 1.182  14-Sep-2010  wiz branches: 1.182.2;
Remove trailing spaces, add a few serial commas.
 1.181  13-Sep-2010  sjg Bump date
 1.180  13-Sep-2010  sjg Add meta.c which implements "meta" mode for make.
In this mode, a .meta file is created for each target, capturing
the expanded commands used, any command output, and if filemon(9)
is available, a record of system calls which are of interest.
Not enabled unless USE_META=yes is set when building make.
Also, if FILEMON_H exists, meta.c will be compiled to use filemon(9).
 1.179  30-Jun-2010  dholland Document that suffix rules are not applied to PHONY targets, and also
document the .TARGETS builtin variable, which has existed since 4.4 days.
Bump date. Arises from discussion in PR 43502.
 1.178  27-Jun-2010  dholland fix previous, the source isn't exactly crystal clear and there's a bug that
makes the behavior misleading.
 1.177  27-Jun-2010  dholland Clarify $(.PREFIX) / $*. Bump date.
 1.176  10-Jun-2010  wiz Whitespace.
 1.175  09-Jun-2010  christos Explain variable expansion better. Requested by Aleksey Cheusov
 1.174  06-Jun-2010  wiz Bump date for previous.
 1.173  06-Jun-2010  sjg Add .export-env which tells make to export a variable to the environment
but not to track it - as is done for .export
This allows the variable to be updated without affecting what was put
into the environment.
Older versions of make will simply treat this as .export
 1.172  13-May-2010  joerg Drop trailing white space. Use .Oo / .Oc explicitly to annotate that the
empty content is intended.
 1.171  22-Apr-2010  sjg PR: 42850
Reviewed by:

modmisc: since we apply an exists() test to $paths, be conservative
in what we expect.

Run the unit tests with -r -m / so that we do not fail if there
is no sys.mk present.
 1.170  15-Apr-2010  sjg Add :tA to attempt to resolve to absoute path using realpath().
 1.169  07-Apr-2010  wiz Sort a bit more.
 1.168  07-Apr-2010  sjg Add:

.error "message"
.warning "message"
based on FreeBSD implementation.
add .info while were at it.

.ERROR: a target to run on error.
We pass the failing GNode to PrintOnError so it can set
.ERROR_TARGET.

.MAKE.MAKEFILE_PREFERENCE
As a means to control make's list of prefered makefile names.
(Default: "makefile Makefile")

.MAKE.DEPENDFILE
Names the file to read dependencies from
(Default ".depend")

.MAKE.MODE
Processed after all makefiles are read.
Can put make into "compat" mode (more to come).

Fix:

compat.c: Error code should not be sent to debug_file.
Make_DoAllVar: use DONE_ALLSRC to avoid processing a node multiple times.
ReadMakefile: we can simply use doing_depend to control setting MAKEFILE.
 1.167  22-Feb-2010  joerg \\ -> \e
 1.166  19-Nov-2009  wiz New sentence, new line; remove trailing whitespace.
 1.165  19-Nov-2009  sjg Add .unexport - the exact opposite of .export
and .unexport-env which unexport's all previously .export'd globals
as well as clearing environ[].
Allow's sys.mk near total controll.

Reviewed by: apb
 1.164  15-Oct-2009  joerg Do not work around ancient groff limits with .Xo/.Xc.
 1.163  02-Oct-2009  wiz Remove trailing whitespace.
 1.162  01-Oct-2009  dsl Add example of how to use the ?: modifier properly.
 1.161  08-Sep-2009  sjg Reviewed by: apb

Use .MAKE.LEVEL to track recursion.
The first instance of make will have .MAKE.LEVEL 0, which
can be handy for excluding rules which should not apply
in a sub-make.
gmake and freebsd's make have a similar mechanism, but each
uses a different variable to track it. Since we cannot be
compatible with both, we allow the makefiles to cope if they want
by handling the export of .MAKE.LEVEL+1 in Var_Set().
 1.160  26-Aug-2009  sjg Bump date
 1.159  26-Aug-2009  sjg Add -C directory, same as gmake and freebsd make.
 1.158  01-Jun-2009  sjg Missing ':' in .ORDER example
 1.157  13-May-2009  wiz Whitespace fix.
 1.156  11-Apr-2009  snj Typo fix: many file -> many files.
 1.155  11-Apr-2009  wiz Bump date for previous.
 1.154  11-Apr-2009  apb Honour the TMPDIR environment variable instead of always using /tmp
as a place to store temporary files.
 1.153  24-Jan-2009  wiz branches: 1.153.2;
Sort sections. Fix typo (last line).
 1.152  24-Jan-2009  dsl Correct the definition of the :? modifier - in particular the modifier
applies to the variable name, not its value!
Remove the set of examples that were recently added that failed to
explain why some worked and some didn't.
Add a not to the compatability section about the change in .for loop
substitution post 5.0.
Add a BUGS section.
XXX the BUGS section needs more entries :-)
 1.151  12-Jan-2009  dholland Fix blatantly wrong exposition of .WAIT example.
PR bin/40372 from Gao Ya'nan.
 1.150  21-Dec-2008  dsl Note that an unrecognised word in a .if is the same as in .ifdef and that
such a word has to be white-space separated.
From PR bin/30967 bin/37222 and maybe others!
 1.149  21-Dec-2008  dsl Add some notes about recursive expansion and expansion of variable names.
Note that any of "${}()" in variable names will be griefsome!
Remove the example of using ::= to apply a modifier to a .for loop
variable as that is no longer necessary.
Remember to change the date :-)
 1.148  07-Dec-2008  christos explain compatibility mode better.
 1.147  07-Dec-2008  christos add debug flag for cwd.
 1.146  26-Nov-2008  wiz I think ':' is called "colon", not "column" :)
 1.145  25-Nov-2008  christos PR/40026: Aleksej Saushev: make(1) doesn't document VPATH, document it.
 1.144  30-Oct-2008  wiz branches: 1.144.2;
Whitespace.
 1.143  30-Oct-2008  sjg Update the modification date
 1.142  29-Oct-2008  sjg Add some examples of how to use :?
 1.141  22-Oct-2008  apb Send debugging output to stderr by default, not to stderr.
If you really want debugging to stdout, specify "-dFstdout"
in MAKEFLAGS or on the command line.

Discussed in tech-userlevel.
 1.140  19-Oct-2008  wiz Add missing dot before macro.
 1.139  19-Oct-2008  apb Always make the debugging output unbuffered; in addition, if debugging
is enabled but debugging output is not directed to stdout, then make
stdout line buffered.

Previously, the code to make debug output unbuffered applied only if
debugging to a file, not if debugging to stdout or stderr. Making
stdout line buffered when debugging was suggested by Steven Bellovin.
 1.138  18-Oct-2008  apb Document how "-dF[+]filename" works.
 1.137  10-Aug-2008  wiz Drop trailing whitespace. Use .Dq.
 1.136  10-Aug-2008  cube Clarify a bit .SUFFIXES and .IMPSRC. Should fix PR#37822.
 1.135  19-Jan-2008  sjg branches: 1.135.6;
Implement -dl (aka LOUD) to override '@' at the start of script lines.
Based on supplied patch.

PR: 37202
 1.134  08-Oct-2007  sjg Use .MAKE.MAKEFILES to track all the makefiles that have been read
so they can be used in dependency rules.
 1.133  05-Oct-2007  sjg Add the ability to .export variables to the environment.
 1.132  01-Oct-2007  sjg Add the ability to tweak the token output before targets in job mode.
Eg.
.MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}]
would produce
---make[1234] target ---
 1.131  13-Aug-2007  rillig branches: 1.131.2;
A small word can sometimes express things clearer ...
 1.130  23-Jan-2007  wiz 4 -> 4.0, since Nx does not accept all arguments without complaint.
 1.129  23-Dec-2006  wiz Fix a typo. Use Nx.
 1.128  19-Nov-2006  dsl branches: 1.128.2; 1.128.4;
Update information on .ORDER and .WAIT.
Document the -d-flags and -dFfilename.%d options.
Mention MAKEFLAGS at the top, reword to make it clear that makefile and
Makefile are only used if no -f makefile is given.
 1.127  29-Jun-2006  rillig Fixed the bug reported in PR 33866, which is that the :Q operator does not
handle newlines correctly. Ok'ed by christos.
 1.126  17-Jun-2006  reed Fix mispelling.
 1.125  19-Mar-2006  wiz branches: 1.125.2;
New sentence, new line.
 1.124  19-Mar-2006  sjg Document an interesting kwirk in := handling of undefined variables.
 1.123  11-Mar-2006  wiz Markup fixes.
 1.122  26-Feb-2006  apb Make ".WAIT" apply recursively to all children of nodes on the right
hand side of the .WAIT, except when the recursive interpretation would
cause a cycle in the dependency graph.

Discussed in tech-toolchain. Reviewed by christos, sjg.
 1.121  26-Feb-2006  wiz Fix typo.
 1.120  26-Feb-2006  sjg Update man page and add test case for specifying modifiers via variable.
Also allow said variable to appear anywhere in the modifier list.
 1.119  22-Jan-2006  dsl Make .NOTPARALLEL stop the job engine issuing more than one token (instead
of trying to de-jobify the make.
You can now put .NOTPARALLEL in a submake of a recursive make (where it is
using a job-token pipe from the outer make and have it only run a single job.
You can also specify .NOTPARRALEL in the root makefile of a large recursive
make and have the submakes run multiple commands.
Add some diagnostics printfs (enabled with -dp) to the parser.
 1.118  27-Jun-2005  wiz Consistency. Use Pp instead of br.
 1.117  27-Jun-2005  lukem Restore the rework from rev 1.115 and expand the description of .OBJDIR
to document the behaviour that is currently in use (the "./obj" and
"/usr/obj/`pwd`" behaviour).
Hopefully the existing .OBJDIR behaviour is clearer now.
 1.116  26-Jun-2005  wiz Since the obj dir handling changes in the code have been
reverted, revert them in the man page too (i.e., revert v1.115).
 1.115  23-Jun-2005  lukem Deprecate support for automagically setting the .OBJDIR to
./obj.${MACHINE}
./obj
/usr/obj/${PWD}

The rules for the default .OBJDIR setting are now simplified to
(and documented as) trying the chdir to the following
(if the appropriate variable is defined):
${MAKEOBJDIRPREFIX}${.CURDIR}
${MAKEOBJDIR}
${.CURDIR}

.OBJDIR can be overridden in the makefile.
<bsd.obj.mk> uses this to provide the "culled" .OBJDIR semantics
for NetBSD's /usr/src builds.

MAKEOBJDIRPREFIX & MAKEOBJDIR still can only be provided
in the environment or on make(1)'s command line.

Per discussion on tech-toolchain.
This should reduce a lot of lossage people have experienced over
the years with various .OBJDIR setups.
 1.114  19-Jun-2005  wiz Fix an article, and drop trailing whitespace.
 1.113  18-Jun-2005  rpaulo Change "non-escaped" to "unescaped".
Reviewed by hubertf.
 1.112  17-Jun-2005  wiz Bump date for -jn, and add some formatting.
 1.111  17-Jun-2005  jmc Add new debugging option '-dn' which will leave the scripts fed into make on
-j jobs in /tmp for debugging purposes. Add a note to the man page that
this could cause problems if run a lot (due to the number of files created)
 1.110  15-Jun-2005  rpaulo We now support comments until the end of a non-escaped line.
Ok'ed by hubertf.
 1.109  01-Jun-2005  wiz New sentence, new line; grammar improvements.
 1.108  01-Jun-2005  sjg Add :Ox for random ordering, based on patch from
Mike M. Volokhov <mishka@apk.od.ua>
 1.107  08-May-2005  christos Now that dependencies in .BEGIN, .END, and .INTERRUPT work, allow them.
 1.106  01-May-2005  christos PR/9566: Arne H. Juul: Document special targets that do not obey dependencies.
 1.105  23-Feb-2005  sjg branches: 1.105.2;
In the case of :? modifier, variable can be an expression - say so.
 1.104  13-Jul-2004  wiz Sort options in synopsis.
 1.103  07-May-2004  wiz Add comma in enumerations; fix a sentence; plural needs no apostrophe.
 1.102  07-May-2004  sjg Remove use of sh -e when running in compat mode.
Its not posix compliant and serves very little purpose.
With this change compat and jobs modes are consistent wrt how
they treat each line of a script.

Add support for the '+' command line prefix as required by posix.
Lines prefixed with '+' are executed even when -n is given.
[Actually posix says they should also be done for -q and -t]

PR:
Reviewed by: jmc
 1.101  05-Feb-2004  wiz branches: 1.101.2;
Bump date; uppercase POSIX.
 1.100  05-Feb-2004  ross Briefly document the posix command line order and add that this
is (unfortunately) not enforced.
 1.99  04-Feb-2004  wiz Use more mdoc macros; new sentence, new line; bump date for previous.
 1.98  03-Feb-2004  chuck add parent directory search for make as discussed on tech-toolchain.
- new dir.c function: Dir_FindHereOrAbove:
Search for a path in the current directory and then all the directories
above it in turn until the path is found or we reach the root ("/").
- add hooks to use it in main.c for -m and syspath (compiled in
_PATH_DEFSYSPATH and $MAKESYSPATH).
- updated man page
 1.97  27-Jan-2004  lukem Document more SPECIAL SOURCES (aka ATTRIBUTES).
Improve description of variable modifiers.
In the variable list, be more specific referring to "environment variables"
rather than just relying upon the formatting difference between .Ev and .Va.
 1.96  26-Dec-2003  wiz Bump date for previous; use macros for marking up
the dollar sign.
 1.95  26-Dec-2003  jmc Note that variable expansion can occur within SYSV style = substitions.
 1.94  07-Dec-2003  wiz Drop trailing spaces.
 1.93  07-Dec-2003  dsl Add back 'on error' that got deleted by mistake.
 1.92  07-Dec-2003  dsl Add a -Dg3 which outputs the 'input graph' only on error exit.
Lets you see the wood for the trees...
 1.91  07-Nov-2003  lukem Add some subsections in the VARIABLE ASSIGNMENTS section.

In the "modifier description" list, show each modifier with the leading `:'.
Rationale: it's hard to search for modifiers without it, and we already do
the same thing in the -options and .makecommands lists. I now find it much
easier to find the description for a modifier in the man page.
 1.90  09-Oct-2003  jdolecek properly dottify .\" comments; this fixes output of [range] paragraph
 1.89  27-Sep-2003  sjg Implement :[] modifier to allow picking a range of words out of a variable.
Also :tW and a W flag to :C and :S to allow treating value as a single word.
Add unit tests for the above, and fix some corner cases.
Based on patches supplied by Alan Barrett <apb@cequrux.com>
 1.88  10-Sep-2003  jmmv Add the 'e' debug flag (i.e., '-d e'): when enabled, show the "target
failed" and "command failed" messages added recently. These introduce
too much noise when debugging some kind of problems, specially in pkgsrc.
 1.87  10-Sep-2003  jmmv Document the '-d f' flag.
 1.86  05-Sep-2003  wiz Whitespace nits.
 1.85  05-Sep-2003  sjg Allow -V '${FOO}' to print the expanded version of FOO.
A side effect of adding and removing a -E option for the above is that
the cases in MainParseArgs are now ordered correctly?
 1.84  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22365, verified by myself.
 1.83  01-Aug-2003  sjg Allow .SHELL: to control the shell used by compat mode too.
Add a shell spec for ksh - a nice portable posix shell.
Document .SHELL:
 1.82  16-Jul-2003  wiz Bump date for tu addition; drop trailing space; sort a bit.
 1.81  14-Jul-2003  sjg Add a :ts[c] modifier to allow controlling the separator used between
words in a variable expansion. If 'c' is omitted no separator is used.
 1.80  26-Jun-2003  wiz Misc mdoc fixes (mostly quoting).
 1.79  23-May-2003  wiz New sentence, new line; bump date for last.
 1.78  23-May-2003  christos PR/10917: John Hawkinson: Document $MAKE and say which one we want to be using.
 1.77  16-Apr-2003  wiz Bump date for last.
 1.76  01-Apr-2003  jrf Added MAKESYSPATH environment variable as per jmmv's suggestion in
PR 18030
 1.75  14-Mar-2003  thorpej Add a -X option, which prevents make(1) from putting variables
set on the command line into the environment individually. This
can be useful on systems which have a tight limit on the size
of the argument space.
 1.74  25-Feb-2003  wiz .Nm does not need a dummy argument ("") before punctuation or
for correct formatting of the SYNOPSIS any longer.
 1.73  04-Feb-2003  perry "Utilize" has exactly the same meaning as "use," but it is more
difficult to read and understand. Most manuals of English style
therefore say that you should use "use".
 1.72  09-Jan-2003  uebayasi Be more specific how to call arguments of modifiers.

Reviewed By: wiz
 1.71  03-Jan-2003  mjl Tyop fixes
 1.70  29-Nov-2002  wiz Bump date for .PATH description; begin sentence with upper case letter;
new sentence, new line.
 1.69  26-Nov-2002  sjg Whenever we update .PATH, set the variable ${.PATH} to reflect the
search list that will be used. Thus 'dot' and 'cur' will appear in
${.PATH} either at the start or end depending on .DOTLAST even though
they are not strictly in dirSearchPath.

When .CURDIR is assigned to - re-set the 'cur' Path.

Finally, when checking subdirs, look in 'dot' and 'cur' (first or last
depending on .DOTLAST) just as we do in other situations.
 1.68  02-Nov-2002  perry environment variables, not environmental variables
 1.67  30-Sep-2002  grant New sentence, new line.
 1.66  24-Sep-2002  wiz Fix an Xr, add a comma and join two short lines. In short, minor changes :)
 1.65  24-Sep-2002  christos add missing Lt.
 1.64  19-Aug-2002  wiz End some sentences with a dot. bin/17987 by Julio Merino.
 1.63  19-Mar-2002  lukem clarify how :U works
 1.62  08-Feb-2002  ross Generate <>& symbolically. I'm avoiding .../dist/... directories for now.
 1.61  07-Feb-2002  ross Edit -mdoc usage.

* There is no -indent option to .Bd or .Bl, although you would
never know that from its frequent use in this tree. There is a
"-offset indent" combination that makes sense, and you can certainly
say "-width indent".

* Also, you can't markup the -width option argument, tho you CAN
use a callable macro. So "-width Ar filename" doesn't make sense,
but either "-width Ar" or "-width filename" does, as might something
like "-width xxfilename" for a little extra space.

* There are a lot of needlessly complex hanging tag macros in man4 used
to create simple item lists. Those should be simplified one of these
days before someone copies and edits yet another man4 page.
 1.60  06-Feb-2002  pk Add `tu' and `tl' variable expansion modifiers, which transform the
value to uppercase and lowercase, respectively. From Kevin Neal from FreeBSD.
 1.59  01-Feb-2002  bgrayson - Several paragraphs were indented one level further than needed.
- The endfor example needed some spacing readjustments.
 1.58  23-Dec-2001  lukem outdent description of variable expansion modifiers
 1.57  12-Nov-2001  wiz Whitespace/punctuation nits.
 1.56  12-Nov-2001  tv Add new make variable .ALLTARGETS, which lists all targets in the Makefile.
(Makes it possible to search the target list for particular things and
apply attributes to all the relevant targets.)
 1.55  12-Nov-2001  tv Sort list of make variables.
 1.54  23-Oct-2001  jmc Fix typo in definition of PARSEFILE. It should refer to PARSEDIR (and not
itself twice) when describing the variables lifetime
 1.53  13-Aug-2001  ad Nit.
 1.52  03-Jul-2001  christos add .USEBEFORE Attribute
 1.51  10-Jun-2001  sjg Simplify the exporting of VAR_CMD's via MAKEFLAGS.
We now just list the names of such variables in .MAKEOVERRIDES.
When we come to export MAKEFLAGS we quote the value of each exported variable
using :Q, using: ${.MAKEOVERRIDES:O:u:@v@$v=${$v:Q}@}
The :O:u suppresses duplicate names.
Also modifed Parse_DoVar to re-export MAKEFLAGS whenever .MAKEOVERRIDES
is assigned to so .MAKEOVERRIDES+= PATH will export PATH=${PATH:Q}
to the environment, while .MAKEOVERRIDES= will disable export of VAR_CMD's.
 1.50  09-Jun-2001  sjg Mention .MAKEOVERRIDES
 1.49  01-Jun-2001  sjg A number of semi-related changes.
1. make -dx turns on DEBUG_SHELL which causes sh -x to be used where
possible.
2. PrintOnError() is now called when make is stopping due to an error.
This routine reports the curdir and the value of any variables listed
in MAKE_PRINT_VAR_ON_ERROR.
3. Variables set via command line, are propagated to child-makes via
MAKEFLAGS. This behaviour appears to be necessary for POSIX (according
to the GNU folk anyway).
4. Do not reset MAKEFILE when reading ".depend" as this rather eliminates the
usefulness of ${MAKEFILE}.
5. Added ${.newline} as a simple means of being able to include \n in the
result of a :@ loop expansion.
6. Set ${MAKE_VERSION} if defined. Need to come up with a useful value.

Reviewed: christos
 1.48  04-Apr-2001  wiz getcwd lives in 3, not 2. Whitespace fixes.
 1.47  14-Jan-2001  christos Provide a new .if commands(<target>) primitive that returns true if the
target has commands associated with it.
 1.46  10-Jan-2001  christos PR/11800: Chris Demetriou: Add -W flag to exit on parse warnings.
While I am here, s/make:.*"/%s:\1", progname/
 1.45  01-Jan-2001  sommerfeld Delete forceSerial; just use compatMake for that.
Add -N flag to *really* not execute any commands (useful when using
the -d flags to debug usr/src/Makefile)
Document -N
Update documentation of -n to mention that it still executes commands
for targets marked .MAKE so that the -N/-n distinction is clear.
 1.44  30-Dec-2000  sommerfeld Add a token-passing scheme to allow a recursive make to successfully
use -j; all make's in a recursive build cooperate to limit the total
number of jobs, using a token-passing scheme.

The current token passing algorithm is similar to the one implemented
by gmake; there is a single pipe which is inherited through the entire
process hierarchy; tokens are obtained by reading a byte from the
"read end" of the pipe, and are returned by writing them to the "write
end". This exact algorithm is likely to change in the future.

Implementation details:
- Use the new trace facility to allow measurement of the
effectiveness of different token-passing schemes
- Get a token in MakeStartJobs(), return it in Make_Update()
- Eliminate Job_Full() and the jobFull global since they are
redundant with token system.
- Add an "internal" -J option (to pass the token pipe fd's down to
submakes) and a -T option for tracing.
- Change how compatMake is forced so that -j means something when
inherited by submakes.
- When waiting for a token, poll the token-passing pipe as well as
the output pipes of existing jobs.
 1.43  05-Sep-2000  christos :u modifier a'la uniq(1) [from der Mouse]
 1.42  01-Jun-2000  sjg branches: 1.42.2;
Rats! ${FOO:=bar} is a common usage of the SysV = modifier.
To avoid that, we now do ::[+?!]*= but the SysV = modifier can
conflict with any new modifier. At there are currently no Makefiles
in our tree that use ${FOO::=bar}
 1.41  30-May-2000  sjg Implemented a set of assignment modifiers. These solve obscure
problems such as using modifiers on .for loop iterators derived from
local variables (eg .TARGET).
Unless the variable already exists in a global context, these assignments are
local to the current context (this is usually what is wanted).
 1.40  29-Apr-2000  sjg branches: 1.40.2;
Added the :U :D :L :P :! and :@ modifiers as used by ODE make.
These allow some very useful magic in the makefiles.
The comment in var.c describing their behaviour is mostly lifted
from ODE make, but the implementation of the modifiers themselves
is quite different (much simpler) due to divergence of our code base.
 1.39  16-Apr-2000  christos PR/9899: David A. Holland: multi-variable .for constructs in make
 1.38  08-Feb-2000  sjg Mention MAKEOBJDIRPREFIX and explain how it or MAKEOBJDIR are used.
Also fixed a typo in the .SUFFIXES bit.
 1.37  08-Oct-1999  msaitoh s/ the the / the /
 1.36  12-Sep-1999  christos branches: 1.36.2;
Add :O var modifier, that sorts the words in a variable.
 1.35  09-Aug-1999  aidan Added .PARSEDIR and .PARSEFILE variables to make(1).
 1.34  12-Jul-1999  thorpej Fix a typo.
 1.33  11-Jul-1999  thorpej Add a mechanism for specifying that ${.CURDIR} will be searched last
in the presence of .PATH directives by specifying:

.PATH: .DOTLAST

This will be used to fixup the build system to work with both crypto-us
and crypto-intl sub-trees.

Make(1) changes by Christos Zoulas, after much badgering by me :-)
 1.32  10-Mar-1999  erh Add missing .El line.
 1.31  09-Mar-1999  ross Missing .El.
 1.30  07-Mar-1999  mycroft Clean up SYNOPSIS formatting.
 1.29  17-Nov-1998  ross Fix a bug that apparently prevented, since day 1, the .-include / .sinclude
feature from ever working. Also, fix the man page that incorrectly described
the syntax of the feature that didn't work.
 1.28  06-Aug-1998  christos - Add {.,}[s-]include for silent include file failures
- Make traditional include statement include more than one file if present
on the line.

Keeping up with the other's :-)
 1.27  01-Apr-1998  christos Add conditional variable evaluation from Alistair Crooks.
 1.26  24-Feb-1998  hubertf Fix typos from PR 5055 by NAKAJIMA Yoshihiro <nakayosh@kcn.or.jp>.
 1.25  19-Oct-1997  lukem branches: 1.25.2;
fix up .Nm usage
 1.24  12-Oct-1997  mikel add missing .Nm argument
 1.23  26-May-1997  pk Erase spurious character.
 1.22  26-May-1997  pk Minor formatting glitch.
 1.21  08-May-1997  mycroft Fix description of .NOPATH.
 1.20  08-May-1997  gwr Add the new .NOPATH feature which can be used to disable .PATH search
for particular targets, i.e. .depend, objects, etc. (from Christos).
 1.19  06-May-1997  mycroft Document .PHONY better.
 1.18  10-Mar-1997  christos Add a .MADE directive to indicated that the children of a target are
up-to-date, even when they are not. This is to simulate our current
make install behavior with proper dependencies.
 1.17  24-Dec-1996  christos [initial version of the substitution/regexp changes were courtesy of Der Mouse]

- fix the variable substitution code in make [PR/2748]
1. change s/a/b/ so that it substitutes the first occurance of the
pattern on each word, not only the first word.
2. add flag '1' to the variable substitution so that the substitutions
get performed only once.

***THIS IS AN INCOMPATIBLE CHANGE!***

Unfortunately there was no way to make things consistent without
modifying the current behavior. Fortunately none of our Makefiles
depended on this.

OLD:

VAR = aa1 aa2 aa3 aa4

S/a/b/ = ba1 aa2 aa3 aa4
S/a/b/g = bb1 bb2 bb3 bb4

NEW:

VAR = aa1 aa2 aa3 aa4

S/a/b/ = ba1 ba2 ba3 ba4
S/a/b/1 = ba1 aa2 aa3 aa4
S/a/b/g = bb1 bb2 bb3 bb4
S/a/b/1g = bb1 aa2 aa3 aa4

- add regexp variable substitution via 'C/foo/bar/' [PR/2752]

- add variable quoting via the ${VAR:Q} modifier. This is useful when running
recursive invocations of make(1):

make VAR=${VAR:Q}

will always work... (This may prove useful in the kernel builds...) [PR/2981]
 1.16  06-Nov-1996  christos - Merge in FreeBSD and Lite2 changes.
- Fix bug where a non-archive target with a .a suffix would always
be considered to be out of date, since it does not have a TOC.
 1.15  30-Aug-1996  thorpej Tidy up some RCS ids a bit.
 1.14  15-Mar-1996  christos branches: 1.14.4;
Add PHONY attribute and target. This is the first step to cleanup the
xinstall and xlint crud.
 1.13  06-Mar-1996  christos Fix PR/2118; apply sysincludes patch.
 1.12  16-Dec-1995  christos - Added .WAIT to synchronize between sources like other pmake variants.
- Updated documentation to include .ORDER .PARALLEL .NO_PARALLEL .NONPARALLEL
 1.11  08-Nov-1995  christos - Turn compat mode on by default. It gets turned off when the -j without
the -B flag is specified. [Thus you can use -j 1 to turn it off].
- Fix malloc -> emalloc as Gordon noted.
 1.10  02-Nov-1995  christos Minor:
- ${.PREFIX} should never contain a full pathname
- Fixed gcc -Wall warnings
Major:
- compatMake is now FALSE. This means that we are now running in
full pmake mode:
* rules on dependency lines can be executed in parallel and or
out of sequence:

foo: bar baz

can fire the rule for baz before the rule for bar is fired.
To enforce bar to be fired before baz, another rule needs to be
added. [bar: baz]
* adjacent shell commands in a target are now executed by a single
invocation of the shell, not one invocation of the shell per line
(compatMake can be turned off using the -B flag)
- The -j flag now works... I.e. make -j 4 will fork up to four jobs in
parallel when it can. The target name is printed before each burst
of output caused by the target execution as '--- target ---', when j > 1
- I have changed all the Makefiles so that they work with make -j N, and
I have tested the whole netbsd by:
'make -j 4 cleandir; make -j 4 depend; make -j 4; make -j 4 install'
- I have not compiled or tested this version of make with -DREMOTE.
 1.9  14-Jun-1995  christos branches: 1.9.2;
- $NetBSD$ rcsids
- Fixed so that .[A-Z]* targets that do not match keywords are ignored as
Posix mandates
- Added .PHONY target keyword
 1.8  29-Apr-1995  christos Fix small typo; from Chris Torek
 1.7  23-Jan-1995  mycroft Fix 4 typos pointed out by Jordan, and 1 by me.
 1.6  05-Mar-1994  cgd fixes/improvements from Christos Zoulas <christos@deshaw.com>.
 1.5  10-Feb-1994  jtc Fix typos & spelling errors
 1.4  22-Dec-1993  pk Introduced ${.OBJDIR}. The variable is similar to .CURDIR but points at
the directory where make builds the targets. It can be used to clean up
those cumbersome Makefiles that have to guess at the "obj" directory.
 1.3  01-Aug-1993  mycroft Add RCS indentifiers.
 1.2  22-Apr-1993  mycroft Fix various bugs in man pages (from 386BSD patch 130).
 1.1  21-Mar-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.2  28-Dec-1996  tls Import 4.4BSD-Lite2 sources onto CSRG branch (already merged at head)
 1.1.1.1  21-Mar-1993  cgd initial import of 386bsd-0.1 sources
 1.9.2.1  05-Dec-1995  jtc environmental -> environment
 1.14.4.1  26-Jan-1997  rat Update make(1) from trunk, by request from Christos Zoulas. Fixes many bugs.
 1.25.2.1  08-May-1998  mycroft Sync with trunk, per request of christos.
 1.36.2.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.40.2.1  23-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.42.2.1  26-Apr-2001  he Pull up revision 1.48 (via patch, requested by wiz):
Correct getcwd reference, plus whitespace fixes.
 1.101.2.2  10-May-2004  tron Pull up revision 1.103 (requested by sjg in ticket #282):
Add comma in enumerations; fix a sentence; plural needs no apostrophe.
 1.101.2.1  10-May-2004  tron Pull up revision 1.102 (requested by sjg in ticket #282):
Remove use of sh -e when running in compat mode.
Its not posix compliant and serves very little purpose.
With this change compat and jobs modes are consistent wrt how
they treat each line of a script.
Add support for the '+' command line prefix as required by posix.
Lines prefixed with '+' are executed even when -n is given.
[Actually posix says they should also be done for -q and -t]
PR:
Reviewed by: jmc
 1.105.2.4  02-Jul-2005  tron Pull up revision 1.113 (requested by rpaulo in ticket #491):
Change "non-escaped" to "unescaped".
Reviewed by hubertf.
 1.105.2.3  02-Jul-2005  tron Pull up revision 1.110 (requested by rpaulo in ticket #491):
We now support comments until the end of a non-escaped line.
Ok'ed by hubertf.
 1.105.2.2  16-Jun-2005  tron Backout ticket 458, it causes PR toolchain/30536.
 1.105.2.1  16-Jun-2005  tron Pull up revision 1.110 (requested by rpaulo in ticket #458):
We now support comments until the end of a non-escaped line.
Ok'ed by hubertf.
 1.125.2.1  19-Jun-2006  chap Sync with head.
 1.128.4.1  03-Sep-2007  wrstuden Sync w/ NetBSD-4-RC_1
 1.128.2.2  15-Jan-2009  bouyer Pull up following revision(s) (requested by dholland in ticket #1262):
usr.bin/make/make.1: revision 1.151
Fix blatantly wrong exposition of .WAIT example.
PR bin/40372 from Gao Ya'nan.
 1.128.2.1  05-Jun-2007  bouyer branches: 1.128.2.1.2;
Apply patch (requested by tron in ticket #696):
usr.bin/make/compat.c patch
usr.bin/make/cond.c patch
usr.bin/make/dir.c patch
usr.bin/make/for.c patch
usr.bin/make/main.c patch
usr.bin/make/make.1 patch
usr.bin/make/make.c patch
usr.bin/make/make.h patch
usr.bin/make/nonints.h patch
usr.bin/make/parse.c patch
usr.bin/make/str.c patch
usr.bin/make/targ.c patch
usr.bin/make/util.c patch
usr.bin/make/var.c patch

Synchronize make(1) with HEAD branch to increase perfomance and
improve stability.
 1.128.2.1.2.1  15-Jan-2009  bouyer Pull up following revision(s) (requested by dholland in ticket #1262):
usr.bin/make/make.1: revision 1.151
Fix blatantly wrong exposition of .WAIT example.
PR bin/40372 from Gao Ya'nan.
 1.131.2.2  23-Mar-2008  matt sync with HEAD
 1.131.2.1  06-Nov-2007  matt sync with HEAD
 1.135.6.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.144.2.3  16-Jan-2009  bouyer Pull up following revision(s) (requested by dholland in ticket #271):
usr.bin/make/make.1: revision 1.151
Fix blatantly wrong exposition of .WAIT example.
PR bin/40372 from Gao Ya'nan.
 1.144.2.2  28-Nov-2008  snj Pull up following revision(s) (requested by christos in ticket #135):
usr.bin/make/make.1: revision 1.146
I think ':' is called "colon", not "column" :)
 1.144.2.1  28-Nov-2008  snj Pull up following revision(s) (requested by christos in ticket #135):
usr.bin/make/make.1: revision 1.145
PR/40026: Aleksej Saushev: make(1) doesn't document VPATH, document it.
 1.153.2.1  13-May-2009  jym Sync with HEAD.

Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
 1.182.2.1  05-Mar-2011  bouyer Sync with HEAD
 1.195.2.5  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.195.2.4  30-Oct-2012  yamt sync with head
 1.195.2.3  23-May-2012  yamt sync with head.
 1.195.2.2  17-Apr-2012  yamt sync with head
 1.195.2.1  10-Nov-2011  yamt sync with head
 1.206.2.4  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.206.2.3  23-Jun-2013  tls resync from head
 1.206.2.2  25-Feb-2013  tls resync with head
 1.206.2.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.259.2.1  20-Mar-2017  pgoyette Sync with HEAD
 1.264.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.266.4.2  09-Jun-2018  martin Pull up following revision(s) (requested by christos in ticket #870):

sys/lib/libgnuefi/Makefile.inc: revision 1.5
external/mit/xorg/xorg-pkg-ver.mk: revision 1.9
sys/arch/i386/stand/lib/Makefile.inc: revision 1.17
sys/compat/common/Makefile.inc: revision 1.25
usr.bin/make/unit-tests/varquote.exp: revision 1.1, 1.2
sys/lib/libsa/Makefile.inc: revision 1.24
usr.bin/make/var.c: revision 1.220
sys/arch/ia64/stand/efi/libefi/Makefile.inc: revision 1.5
sys/arch/hppa/spmath/Makefile.inc: revision 1.10
usr.bin/make/unit-tests/varquote.mk: revision 1.1, 1.2
usr.bin/make/unit-tests/Makefile: revision 1.53
sys/lib/libkern/Makefile.inc: revision 1.45
sys/arch/acorn32/stand/lib/Makefile.inc: revision 1.4
sys/arch/m68k/fpsp/Makefile.inc: revision 1.21
usr.bin/make/make.1: revision 1.273
sys/lib/libz/Makefile.inc: revision 1.17

- Introduce :q modifier for make variables and make it double escape $'s so
that passing variables to recursive makes with :q works as expected.
- Adjust makefiles that use recursive make to use :q

Discussed on tech-toolchain@

XXX: pullup 8
 1.266.4.1  18-Jul-2017  snj Pull up following revision(s) (requested by jmcneill in ticket #113):
usr.bin/make/main.c: 1.266-1.272
usr.bin/make/make.1: revision 1.267
move some code out of the gigantic main function; no functional change.
--
-V: try to expand the variable again if the value contains a variable.
--
simplify
--
a variable that starts with \\ is not expanded.
--
Remove previous variable expansion code; sjg had already added the code to
do it. Note that the manual page already documents this behavior and does
not need to change:
-dV -V VAR: prints the raw variable
-V VAR: prints the expanded variable
--
make the code look like to 1.266
--
Add -v variable that always expands variables; restore -V the way it was.
 1.271.4.2  25-Jun-2018  pgoyette Sync with HEAD
 1.271.4.1  07-Apr-2018  pgoyette Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
 1.273.2.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.273.2.1  10-Jun-2019  christos Sync with HEAD
 1.350.2.1  02-Jan-2023  martin Pull up following revision(s) (requested by rillig in ticket #31):

usr.bin/make/make.1: revision 1.351
usr.bin/make/make.1: revision 1.352
usr.bin/make/make.1: revision 1.353
usr.bin/make/make.1: revision 1.354
usr.bin/make/make.1: revision 1.355
usr.bin/make/make.1: revision 1.356

make.1: reduce indentation of the long list of variable names

make.1: move description of .MAKE.MODE below the .MAKE.META block

make.1: use consistent markup for boolean flags

make.1: sort list of built-in variables

make.1: sync list of built-in variables with reality
Fixes PR 57029.

make.1: fix markup

RSS XML Feed