1 1.1 rillig # $NetBSD: posix-execution.mk,v 1.1 2025/04/13 09:29:32 rillig Exp $ 2 1.1 rillig # 3 1.1 rillig # https://pubs.opengroup.org/onlinepubs/9799919799/utilities/make.html#tag_20_76_13_03 4 1.1 rillig # 5 1.1 rillig 6 1.1 rillig .POSIX: 7 1.1 rillig 8 1.1 rillig 9 1.1 rillig # The target consists of two commands, which are executed separately. 10 1.1 rillig # The second command thus does not see the shell variable from the first 11 1.1 rillig # command. 12 1.1 rillig # expect: one-at-a-time: shell_variable is 'second' 13 1.1 rillig all: one-at-a-time 14 1.1 rillig one-at-a-time: 15 1.1 rillig @shell_variable=first 16 1.1 rillig @echo "$@: shell_variable is '$${shell_variable:-second}'" 17 1.1 rillig 18 1.1 rillig 19 1.1 rillig # expect: echo "prefixes: ignore errors"; exit 13 20 1.1 rillig # expect: prefixes: ignore errors 21 1.1 rillig # expect-not: echo "prefixes: no echo" 22 1.1 rillig # expect: prefixes: no echo 23 1.1 rillig # expect: prefixes: always, no echo 24 1.1 rillig all: prefixes 25 1.1 rillig prefixes: 26 1.1 rillig -echo "$@: ignore errors"; exit 13 27 1.1 rillig @echo "$@: no echo" 28 1.1 rillig +@echo "$@: always, no echo" 29 1.1 rillig 30 1.1 rillig 31 1.1 rillig # Deviation from POSIX: The shell "-e" option is not in effect. 32 1.1 rillig # expect: shell-e-option: before 33 1.1 rillig # expect: shell-e-option: after 34 1.1 rillig all: shell-e-option 35 1.1 rillig shell-e-option: 36 1.1 rillig @echo '$@: before'; false; echo '$@: after' 37 1.1 rillig 38 1.1 rillig 39 1.1 rillig # expect-not-matches: ^do%-prefix%-plus: a regular command 40 1.1 rillig # expect: do-prefix-plus: prefixed by plus 41 1.1 rillig # expect: do-prefix-plus: prefixed by plus 42 1.1 rillig all: prefix-plus 43 1.1 rillig prefix-plus: 44 1.1 rillig @${MAKE} -f ${MAKEFILE} -n do-prefix-plus 45 1.1 rillig @${MAKE} -f ${MAKEFILE} -n -j1 do-prefix-plus 46 1.1 rillig do-prefix-plus: 47 1.1 rillig @echo '$@: a regular command' 48 1.1 rillig @+echo '$@: prefixed by plus' 49 1.1 rillig @echo '$@: a regular command' 50 1.1 rillig 51 1.1 rillig 52 1.1 rillig # expect: do-error-not-ignored: successful 53 1.1 rillig # expect-not: do-error-not-ignored: after an error 54 1.1 rillig all: error-not-ignored 55 1.1 rillig error-not-ignored: 56 1.1 rillig @${MAKE} -f ${MAKEFILE} do-error-not-ignored || : 57 1.1 rillig do-error-not-ignored: 58 1.1 rillig @echo '$@: successful'; exit 13 59 1.1 rillig @echo '$@: after an error' 60