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