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