1 # $NetBSD: deptgt-end-fail.mk,v 1.7 2022/05/07 08:01:20 rillig Exp $ 2 # 3 # Tests for an errors in the main target, its dependencies, 4 # the .END node and its dependencies. 5 # 6 # Before 2020-11-25, an error in the .END target did not print the "Stop.", 7 # even though this was intended. The cause for this was a missing condition 8 # in Compat_MakeAll, in the code handling the .END node. 9 10 test: .PHONY 11 12 # The default stop-on-error mode is not as interesting to test since it 13 # stops right after the first error. 14 .MAKEFLAGS: -k 15 16 .for all in ok ERR 17 . for all-dep in ok ERR 18 . for end in ok ERR 19 . for end-dep in ok ERR 20 . for target in ${all}-${all-dep}-${end}-${end-dep} 21 test: ${target} 22 ${target}: .PHONY .SILENT 23 echo Test case all=${all} all-dep=${all-dep} end=${end} end-dep=${end-dep}. 24 ${MAKE} -r -f ${MAKEFILE} \ 25 all=${all} all-dep=${all-dep} \ 26 end=${end} end-dep=${end-dep} \ 27 all; \ 28 echo "exit status $$?" 29 echo 30 echo 31 . endfor 32 . endfor 33 . endfor 34 . endfor 35 .endfor 36 37 .if make(all) 38 39 all all-dep end-dep: .PHONY 40 41 CMD.ok= true 42 CMD.ERR= false 43 44 all: all-dep 45 : Making ${.TARGET} from ${.ALLSRC}. 46 @${CMD.${all}} 47 48 all-dep: 49 : Making ${.TARGET} out of nothing. 50 @${CMD.${all-dep}} 51 52 .END: end-dep 53 : Making ${.TARGET} from ${.ALLSRC}. 54 @${CMD.${end}} 55 56 end-dep: 57 : Making ${.TARGET} out of nothing. 58 @${CMD.${end-dep}} 59 60 .endif 61 62 # Until 2020-12-07, several of the test cases printed "`all' not remade 63 # because of errors.", followed by "exit status 0", which contradicted 64 # each other. 65 66 # Until 2020-12-07, '.END' was even made if 'all' failed, but if a dependency 67 # of 'all' failed, it was skipped. This inconsistency was not needed for 68 # anything and thus has been dropped. To run some commands on error, use the 69 # .ERROR target instead, see deptgt-error.mk. 70