If a variable has an empty value ifndef will enter the true branch.
> make EMPTY=0 all
echo anything
anything
> make EMPTY=1 all
makefile:12: *** variable is defined.. Stop.
> cat makefile
ifeq (1,${EMPTY})
VAR=
else
VAR=anything
endif
ifndef VAR
VAR=${error variable is defined.}
endi
icebox:/tmp> touch test.src
icebox:/tmp> !m
make --question -f t.make -f test.make test.make
main.c:1678: failed assertion `BOGUS_UPDATE_STATUS'
Abort
icebox:/tmp> cat t.make
test.make:
@echo need to make test.make
icebox:/tmp> cat test.make
test.make: test.src
icebox:/tmp> cat test.src