xref: /freebsd/contrib/bmake/unit-tests/deptgt-delete_on_error.mk (revision fe75646a0234a261c0013bf1840fdac4acaf0cec)
1# $NetBSD: deptgt-delete_on_error.mk,v 1.4 2023/06/01 20:56:35 rillig Exp $
2#
3# Tests for the special target .DELETE_ON_ERROR in dependency declarations,
4# which controls whether the target is deleted if a shell command fails or
5# is interrupted.
6#
7# In compatibility mode, regular and phony targets are deleted, but precious
8# targets are preserved.
9#
10# In parallel mode, regular targets are deleted, while phony and precious
11# targets are preserved.
12#
13# See also:
14#	CompatDeleteTarget
15#	JobDeleteTarget
16
17THIS=		deptgt-delete_on_error
18TARGETS=	${THIS}-regular ${THIS}-regular-delete
19TARGETS+=	${THIS}-phony ${THIS}-phony-delete
20TARGETS+=	${THIS}-precious ${THIS}-precious-delete
21
22all:
23	@rm -f ${TARGETS}
24	@echo 'Compatibility mode'
25	@-${.MAKE} -f ${MAKEFILE} -k ${TARGETS}
26	@rm -f ${TARGETS}
27	@echo
28	@echo 'Parallel mode'
29	@-${.MAKE} -f ${MAKEFILE} -k -j1 ${TARGETS}
30	@rm -f ${TARGETS}
31
32${THIS}-regular{,-delete}:
33	> ${.TARGET}; false
34
35${THIS}-phony{,-delete}: .PHONY
36	> ${.TARGET}; false
37
38${THIS}-precious{,-delete}: .PRECIOUS
39	> ${.TARGET}; false
40
41# The special target .DELETE_ON_ERROR is a global setting.
42# It does not apply to single targets.
43# The following line is therefore misleading but does not generate any
44# warning or even an error message.
45.DELETE_ON_ERROR: ${TARGETS:M*-delete}
46