* doc/make.texi (Chained Rules): [SV 61957] Clarify NOTINTERMEDIATE

This commit is contained in:
Paul Smith 2022-08-03 00:13:34 -04:00
parent 91d87ccf32
commit c72e1ec446

View File

@ -10301,18 +10301,21 @@ longer needed. Therefore, an intermediate file which did not exist before
deletion to you by printing a @samp{rm} command showing which file it is deletion to you by printing a @samp{rm} command showing which file it is
deleting. deleting.
Ordinarily, a file cannot be intermediate if it is mentioned in the You can explicitly mark a file as intermediate by listing it as a prerequisite
makefile as a target or prerequisite. However, you can explicitly mark a of the special target @code{.INTERMEDIATE}. This takes effect even if the
file as intermediate by listing it as a prerequisite of the special target file is mentioned explicitly in some other way.
@code{.INTERMEDIATE}. This takes effect even if the file is mentioned
explicitly in some other way.
Listing a file as a prerequisite of the special target A file cannot be intermediate if it is mentioned in the makefile as a target
@code{.NOTINTERMEDIATE} forces it to not be considered intermediate or prerequisite, so one way to avoid the deletion of intermediate files is by
(just as any other mention of the file will do). Also, listing the adding it as a prerequisite to some target. However, doing so can cause make
target pattern of a pattern rule as a prerequisite of to do extra work when searching pattern rules (@pxref{Implicit Rule Search,
@code{.NOTINTERMEDIATE} ensures that no targets generated using that ,Implicit Rule Search Algorithm}).
pattern rule are considered intermediate.
As an alternative, listing a file as a prerequisite of the special target
@code{.NOTINTERMEDIATE} forces it to not be considered intermediate (just as
any other mention of the file will do). Also, listing the target pattern of a
pattern rule as a prerequisite of @code{.NOTINTERMEDIATE} ensures that no
targets generated using that pattern rule are considered intermediate.
You can disable intermediate files completely in your makefile by You can disable intermediate files completely in your makefile by
providing @code{.NOTINTERMEDIATE} as a target with no prerequisites: providing @code{.NOTINTERMEDIATE} as a target with no prerequisites: