title: Multiple rules for one target
body: <p>I have large project and it's compiled on-demand on several different machines with different OS'es.
  One of targets has <code>foo.res</code> in it's dependencies. This resource file can be compiled using either one of 2 different rules:</p>
  
  <p>First rule requires text file <code>foo.txt</code> to be present. This rule also requires some of the non-cross platform software to be installed in the system. This rule can not be used in-field by the our engineers, as it won't run under old MacOS.</p>
  
  <p>Second rule uses pre-compiled resource file <code>foo.res</code> in resources directory and simply copies it to <code>build/</code>. Obviously, this is unwanted workaround, but i have no other choice.</p>
  
  <p>I've tried to describe 2 rules in one Makefile, but i've got such error:</p>
  
  <pre><code>Makefile:78: warning: overriding recipe for target 'build/foo.res'
  Makefile:75: warning: ignoring old recipe for target 'build/foo.res'
  </code></pre>
  
  <p>Currently I use Makefile with one of the rules commented-out:</p>
  
  <pre><code>.PHONY: compile
  build/app.bin: some_files... build/foo.res
      (Here is compiler call)
  
  build/:
      -mkdir build/
  
  .PHONY: clear
  clear:
      -rm -rf ./build
  
  ... Lots of stuff here ...
  
  # build/foo.res: res/foo.res | build/.
  #     cp res/foo.res build/foo.res
  
  build/foo.res: res/foo.txt | build/.
      some_app -o build/foo.res res/foo.txt
  </code></pre>
  
  <p>I deploy pre-compiled <code>res/foo.res</code> to some machines and then I swap commented rules, so regular <code>cp</code> is used. This works fine, until some changes are introduced to Makefile in some of commits. Then it blocks fast-forward update in git.</p>
  
  <p><strong>How can I configure make to fire only one of the rules, based on matched dependencies?</strong></p>