xref: /freebsd/contrib/bmake/unit-tests/shell-ksh.mk (revision 0b46a53a2f50b5ab0f4598104119a049b9c42cc9)
1*0b46a53aSSimon J. Gerraty# $NetBSD: shell-ksh.mk,v 1.2 2025/06/05 21:56:54 rillig Exp $
2956e45f6SSimon J. Gerraty#
3*0b46a53aSSimon J. Gerraty# Tests for using a Korn shell for running the commands.
4956e45f6SSimon J. Gerraty
5*0b46a53aSSimon J. GerratyKSH!=	which ksh 2> /dev/null || true
6*0b46a53aSSimon J. Gerraty
7*0b46a53aSSimon J. Gerraty# The shell path must be an absolute path.
8*0b46a53aSSimon J. Gerraty# This is only obvious in parallel mode since in compat mode,
9*0b46a53aSSimon J. Gerraty# simple commands are executed via execvp directly.
10*0b46a53aSSimon J. Gerraty.if ${KSH} != ""
11*0b46a53aSSimon J. Gerraty.SHELL: name="ksh" path="${KSH}"
12*0b46a53aSSimon J. Gerraty.endif
13*0b46a53aSSimon J. Gerraty
14*0b46a53aSSimon J. Gerraty# In parallel mode, the shell->noPrint command is filtered from
15*0b46a53aSSimon J. Gerraty# the output, rather naively (in PrintOutput).
16*0b46a53aSSimon J. Gerraty.MAKEFLAGS: -j1
17956e45f6SSimon J. Gerraty
18956e45f6SSimon J. Gerratyall:
19*0b46a53aSSimon J. Gerraty.if ${KSH} != ""
20*0b46a53aSSimon J. Gerraty	# This command is both printed and executed.
21*0b46a53aSSimon J. Gerraty	echo normal
22*0b46a53aSSimon J. Gerraty
23*0b46a53aSSimon J. Gerraty	# This command is only executed.
24*0b46a53aSSimon J. Gerraty	@echo hidden
25*0b46a53aSSimon J. Gerraty
26*0b46a53aSSimon J. Gerraty	# This command is both printed and executed.
27*0b46a53aSSimon J. Gerraty	+echo always
28*0b46a53aSSimon J. Gerraty
29*0b46a53aSSimon J. Gerraty	# This command is both printed and executed.
30*0b46a53aSSimon J. Gerraty	-echo ignore errors
31*0b46a53aSSimon J. Gerraty
32*0b46a53aSSimon J. Gerraty	# In the Korn shell, "set +v" is set as the noPrint command.
33*0b46a53aSSimon J. Gerraty	# Therefore, it is filtered from the output, rather naively.
34*0b46a53aSSimon J. Gerraty# FIXME: Don't assume a newline character in PrintFilteredOutput.
35*0b46a53aSSimon J. Gerraty# expect: The "is filtered out.
36*0b46a53aSSimon J. Gerraty	@echo 'The "set +v" is filtered out.'
37*0b46a53aSSimon J. Gerraty.else
38*0b46a53aSSimon J. Gerraty	@sed '$$d' ${MAKEFILE:.mk=.exp}	# This is cheated.
39*0b46a53aSSimon J. Gerraty.endif
40