1 1.5 rillig # $NetBSD: opt-query.mk,v 1.5 2022/08/17 20:05:41 rillig Exp $ 2 1.1 rillig # 3 1.2 rillig # Tests for the -q command line option. 4 1.3 rillig # 5 1.3 rillig # The -q option only looks at the dependencies between the targets. 6 1.3 rillig # None of the commands in the targets are run, not even those that are 7 1.3 rillig # prefixed with '+'. 8 1.3 rillig 9 1.5 rillig # This test consists of several parts: 10 1.5 rillig # 11 1.5 rillig # main Delegates to the actual tests. 12 1.5 rillig # 13 1.5 rillig # commands Ensures that none of the targets is made. 14 1.5 rillig # 15 1.5 rillig # variants Ensures that the up-to-date status is correctly 16 1.5 rillig # reported in both compat and jobs mode, and for several 17 1.5 rillig # kinds of make targets. 18 1.5 rillig PART?= main 19 1.5 rillig 20 1.5 rillig .if ${PART} == "main" 21 1.5 rillig 22 1.5 rillig all: .PHONY variants cleanup 23 1.5 rillig 24 1.5 rillig _!= touch -f opt-query-file.up-to-date 25 1.5 rillig 26 1.5 rillig variants: .PHONY 27 1.5 rillig . for target in commands 28 1.5 rillig @echo 'Making ${target}': 29 1.5 rillig @${MAKE} -r -f ${MAKEFILE} -q ${mode:Mjobs:%=-j1} ${target} PART=commands \ 30 1.5 rillig && echo "${target}: query status $$?" \ 31 1.5 rillig || echo "${target}: query status $$?" 32 1.5 rillig @echo 33 1.5 rillig . endfor 34 1.5 rillig . for mode in compat jobs 35 1.5 rillig . for target in opt-query-file.out-of-date opt-query-file.up-to-date phony 36 1.5 rillig @echo 'Making ${target} in ${mode} mode': 37 1.5 rillig @${MAKE} -r -f ${MAKEFILE} -q ${mode:Mjobs:%=-j1} ${target} PART=variants \ 38 1.5 rillig && echo "${target} in ${mode} mode: query status $$?" \ 39 1.5 rillig || echo "${target} in ${mode} mode: query status $$?" 40 1.5 rillig @echo 41 1.5 rillig . endfor 42 1.5 rillig . endfor 43 1.5 rillig 44 1.5 rillig # expect: opt-query-file.out-of-date in compat mode: query status 1 45 1.5 rillig 46 1.5 rillig # FIXME: must be 0, not 1. 47 1.5 rillig # expect: opt-query-file.up-to-date in compat mode: query status 1 48 1.5 rillig 49 1.5 rillig # expect: phony in compat mode: query status 1 50 1.5 rillig 51 1.5 rillig # expect: opt-query-file.out-of-date in jobs mode: query status 1 52 1.5 rillig 53 1.5 rillig # FIXME: must be 0, not 1. 54 1.5 rillig # expect: opt-query-file.up-to-date in jobs mode: query status 1 55 1.5 rillig 56 1.5 rillig # expect: phony in jobs mode: query status 1 57 1.5 rillig 58 1.5 rillig cleanup: .PHONY 59 1.5 rillig @rm -f opt-query-file.up-to-date 60 1.5 rillig 61 1.5 rillig .elif ${PART} == "commands" 62 1.4 rillig 63 1.3 rillig # This command cannot be prevented from being run since it is used at parse 64 1.3 rillig # time, and any later variable assignments may depend on its result. 65 1.3 rillig != echo 'command during parsing' 1>&2; echo 66 1.1 rillig 67 1.3 rillig # None of these commands are run. 68 1.3 rillig .BEGIN: 69 1.3 rillig @echo '$@: hidden command' 70 1.3 rillig @+echo '$@: run always' 71 1.1 rillig 72 1.3 rillig # None of these commands are run. 73 1.5 rillig commands: 74 1.3 rillig @echo '$@: hidden command' 75 1.3 rillig @+echo '$@: run always' 76 1.5 rillig # The exit status 1 is because the "commands" target has to be made, that is, 77 1.5 rillig # it is not up-to-date. 78 1.5 rillig 79 1.5 rillig .elif ${PART} == "variants" 80 1.3 rillig 81 1.5 rillig opt-query-file.out-of-date: ${MAKE} 82 1.5 rillig opt-query-file.up-to-date: ${MAKE} 83 1.5 rillig phony: .PHONY 84 1.5 rillig 85 1.5 rillig .else 86 1.5 rillig . error Invalid part '${PART}' 87 1.5 rillig .endif 88