title: Issue with make
body: <p>Let's consider this tiny example. Everything should work fine without the <code>VILLAIN</code>. Actually this word leads to an error but not where I was expecting it...</p>
  
  <p>The error:</p>
  
  <pre><code>$ make
  mkdir -p obj
  zip out.exe obj/foo.o obj/bar.o obj/baz.o
          zip warning: name not matched: obj/foo.o
          zip warning: name not matched: obj/bar.o
          zip warning: name not matched: obj/baz.o
  
  zip error: Nothing to do! (out.exe)
  Makefile:9: recipe for target 'out.exe' failed
  make: *** [out.exe] Error 12
  </code></pre>
  
  <p>It seems make wants to go a bit too fast by executing a recipe where its dependencies are not already made (obj/foo.o ...). Actually I was expecting an error like: "Unable to find VILLAIN to make obj/foo.o"</p>
  
  <p>The Makefile:</p>
  
  <pre><code>#!/usr/bin/env make
  SRCDIR = src
  OBJDIR = obj
  
  SRC = $(addsuffix .c,foo bar baz)
  OBJ = $(addprefix $(OBJDIR)/, $(notdir $(SRC:c=o)))
  
  out.exe: $(OBJ)
      zip $@ $^ 
  
  $(OBJDIR)/%.o: $(SRCDIR)/%.c VILLAIN
      cp $&lt; $@
  
  $(OBJ) : | $(OBJDIR)
  
  $(OBJDIR):
      mkdir -p $@
  
  clean:
      rm -f *.c
      rm -rf $(OBJDIR)/ $(SRCDIR)/
      mkdir -p $(SRCDIR)/
      touch $(addprefix $(SRCDIR)/,$(SRC))
  </code></pre>
  
  <p>However if I remove the villain everything works fine:</p>
  
  <pre><code>$ make clean
  rm -f *.c
  rm -rf obj/ src/
  mkdir -p src/
  touch src/foo.c src/bar.c src/baz.c
  
  $ make
  mkdir -p obj
  cp src/foo.c obj/foo.o
  cp src/bar.c obj/bar.o
  cp src/baz.c obj/baz.o
  zip out.exe obj/foo.o obj/bar.o obj/baz.o
    adding: obj/foo.o (stored 0%)
    adding: obj/bar.o (stored 0%)
    adding: obj/baz.o (stored 0%)
  </code></pre>
  
  <p>Why make try to make a target before building its prerequisite? </p>