You cannot do this. The shell
documentation clearly says that all newlines will be converted into spaces. You cannot avoid this.
You could run a command and redirect the output to stderr, instead of stdout, so that it doesn't get captured by the $(shell ...)
function:
$(warning Making where CURDIR is $(CURDIR))
$(shell ls -l $(CURDIR) 1>&2)