The following small makefile doesn't behave as one would naively expect: MANLANG?=foo "" all: .for i in ${MANLANG} .if empty(${i}) @echo foo ${i} .endif .endfor
ports-i386%make foo foo foo I think this is because the .if evaluation is happening too early, and it's not being done after the .for loop is expanded and the i variable is set. In order to get this to work I seem to have to do the following: MANLANG?=foo "" .for i in ${MANLANG} j= ${i} .if (${j} != "\"\"") .for l in ${j} k+= ${l} .endfor .endif .endfor all: @echo ${k} ports-i386%make foo If I remove the inner .for it breaks, and if I remove the j assignment it breaks. Also if I try and remove the use of k and put an echo inside the inner .for (with the all: preceding the whole loop) it breaks. This is extremely nasty. Am I missing an easier way to do this? Kris
pgp1XG6fz57LB.pgp
Description: PGP signature