103 lines
3.0 KiB
Makefile
103 lines
3.0 KiB
Makefile
# $NetBSD: opt-jobs-no-action.mk,v 1.10 2022/05/08 06:51:27 rillig Exp $
|
|
#
|
|
# Tests for the combination of the options -j and -n, which prints the
|
|
# commands instead of actually running them.
|
|
#
|
|
# The format of the output differs from the output of only the -n option,
|
|
# without the -j. This is because all this code is implemented twice, once
|
|
# in compat.c and once in job.c.
|
|
#
|
|
# See also:
|
|
# opt-jobs.mk
|
|
# The corresponding tests without the -n option
|
|
# opt-no-action-combined.mk
|
|
# The corresponding tests without the -j option
|
|
|
|
.MAKEFLAGS: -j1 -n
|
|
|
|
# Change the templates for running the commands in jobs mode, to make it
|
|
# easier to see what actually happens.
|
|
#
|
|
# The shell attributes are handled by Job_ParseShell.
|
|
# The shell attributes 'quiet' and 'echo' don't need a trailing newline,
|
|
# this is handled by the [0] != '\0' checks in Job_ParseShell.
|
|
# The '\#' is handled by ParseRawLine.
|
|
# The '\n' is handled by Str_Words in Job_ParseShell.
|
|
# The '$$' is handled by Var_Subst in ParseDependencyLine.
|
|
.SHELL: \
|
|
name=sh \
|
|
path=${.SHELL} \
|
|
quiet="\# .echoOff" \
|
|
echo="\# .echoOn" \
|
|
filter="\# .noPrint\n" \
|
|
check="\# .echoTmpl\n""echo \"%s\"\n" \
|
|
ignore="\# .runIgnTmpl\n""%s\n" \
|
|
errout="\# .runChkTmpl\n""{ %s \n} || exit $$?\n"
|
|
|
|
all: explained combined
|
|
.ORDER: explained combined
|
|
|
|
# Explain the most basic cases in detail.
|
|
explained: .PHONY
|
|
@+echo hide-from-output 'begin explain'
|
|
|
|
# The following command is regular, it is printed twice:
|
|
# - first using the template shell.echoTmpl,
|
|
# - then using the template shell.runChkTmpl.
|
|
false regular
|
|
|
|
# The following command is silent, it is printed once, using the
|
|
# template shell.runChkTmpl.
|
|
@: silent
|
|
|
|
# The following command ignores errors, it is printed once, using
|
|
# the default template for cmdTemplate, which is "%s\n".
|
|
# XXX: Why is it not printed using shell.echoTmpl as well?
|
|
# XXX: The '-' should not influence the echoing of the command.
|
|
-false ignore-errors
|
|
|
|
# The following command ignores the -n command line option, it is
|
|
# not handled by the Job module but by the Compat module, see the
|
|
# '!silent' in Compat_RunCommand.
|
|
+echo run despite the -n option
|
|
|
|
@+echo hide-from-output 'end explain'
|
|
@+echo hide-from-output
|
|
|
|
|
|
# Test all combinations of the 3 RunFlags.
|
|
#
|
|
# TODO: Closely inspect the output whether it makes sense.
|
|
# XXX: silent=no always=no ignerr={no,yes} should be almost the same.
|
|
#
|
|
SILENT.no= # none
|
|
SILENT.yes= @
|
|
ALWAYS.no= # none
|
|
ALWAYS.yes= +
|
|
IGNERR.no= echo running
|
|
IGNERR.yes= -echo running; false
|
|
#
|
|
combined: combined-begin
|
|
|
|
combined-begin: .PHONY
|
|
@+echo hide-from-output 'begin combined'
|
|
@+echo hide-from-output
|
|
|
|
.for silent in no yes
|
|
. for always in no yes
|
|
. for ignerr in no yes
|
|
. for target in combined-silent-${silent}-always-${always}-ignerr-${ignerr}
|
|
combined: .WAIT ${target} .WAIT
|
|
${target}: .PHONY
|
|
@+echo hide-from-output silent=${silent} always=${always} ignerr=${ignerr}
|
|
${SILENT.${silent}}${ALWAYS.${always}}${IGNERR.${ignerr}}
|
|
@+echo hide-from-output
|
|
. endfor
|
|
. endfor
|
|
. endfor
|
|
.endfor
|
|
|
|
combined: combined-end
|
|
combined-end: .PHONY
|
|
@+echo hide-from-output 'end combined'
|