Estou escrevendo uma receita de Makefile que precisa ser executada SE E SOMENTE SE um determinado arquivo existir ...
Aqui está o que eu tenho:
clean:
$(if $(shell test -s ${MFN_LSTF}), \
$(foreach mfn, $(shell cat ${MFN_LSTF}), \
$(MAKE) -f mfd/${mfn} clean;), )
.PHONY: clean
${MFN_LSTF} contém um nome de arquivo que contém uma lista de uma coluna de nomes de makefile que são considerados no mesmo diretório local que esta receita de makefile.
O problema que encontrei é que a foreach
instrução é executada sempre. Eu quero que ele execute SOMENTE SE o nome do arquivo ${MFN_LSTF}
existir.
Eu tentei isso também:
clean:
[ test -s ${MFN_LSTF} ] &&
for mfn in $(shell cat ${MFN_LSTF}); do
$(MAKE) -f mfd/${mfn} clean
done
.PHONY: clean