The problem is in how you're defining your variables, because it's picking up a space somewhere. This often happens when you leave a trailing space at the end of a line.
The giveaway is that the result of this command:
Code:
@echo 'creating binary "$(BIN)"'
Is this... note the space in the filename:
Code:
creating binary "../bin/hello .exe"
Breaking it down, $BIN is defined like so:
Code:
BIN= $(BINDIR)/$(NAME)$(SUFFIX).exe
BINDIR= ../bin
NAME= hello
SUFFIX=
If you go to the end of line in vi, you'll find a trailing space after hello on the NAME= line. You'll see it here in your web browser when you highlight the code with your mouse. Delete it, and that should solve your problem.