1# $Id: forloop.mk,v 1.1.1.2 2020/05/05 00:54:40 sjg Exp $ 2 3all: for-loop 4 5LIST = one "two and three" four "five" 6 7.if make(for-fail) 8for-fail: 9 10XTRA_LIST = xtra 11.else 12 13.for x in ${LIST} 14X!= echo 'x=$x' >&2; echo 15.endfor 16 17CFL = -I/this -I"This or that" -Ithat "-DTHIS=\"this and that\"" 18cfl= 19.for x in ${CFL} 20X!= echo 'x=$x' >&2; echo 21.if empty(cfl) 22cfl= $x 23.else 24cfl+= $x 25.endif 26.endfor 27X!= echo 'cfl=${cfl}' >&2; echo 28 29.if ${cfl} != ${CFL} 30.error ${.newline}'${cfl}' != ${.newline}'${CFL}' 31.endif 32 33.for a b in ${EMPTY} 34X!= echo 'a=$a b=$b' >&2; echo 35.endfor 36 37# Since at least 1993, iteration stops at the first newline. 38# Back then, the .newline variable didn't exist, therefore it was unlikely 39# that a newline ever occured. 40.for var in a${.newline}b${.newline}c 41X!= echo 'newline-item=('${var:Q}')' 1>&2; echo 42.endfor 43 44.endif # for-fail 45 46.for a b in ${LIST} ${LIST:tu} ${XTRA_LIST} 47X!= echo 'a=$a b=$b' >&2; echo 48.endfor 49 50for-loop: 51 @echo We expect an error next: 52 @(cd ${.CURDIR} && ${.MAKE} -f ${MAKEFILE} for-fail) && \ 53 { echo "Oops that should have failed!"; exit 1; } || echo OK 54