title: cannot cancel GNU make implicit rule `%.o`
body: <p>i have <code>hello.s</code> and <code>makefile</code> with following content:</p>
  <pre><code>%.o: %.s
          nasm -f elf64 -o $@ $&lt;
  
  %: %.o
          ld -o $@ $
  </code></pre>
  <p>however, <a href="https://www.gnu.org/software/make/manual/html_node/Canceling-Rules.html" rel="nofollow noreferrer">implicit rule cancellation</a> is not applied and this makefile only works as intended with flag <code>-r</code>, which removes builtin commands (in this case: <code>%.o: %.c</code>).</p>
  <pre><code>❯ make --dry-run -r hello VERBOSE=1
  nasm -f elf64 -o hello.o hello.s
  ld -o hello hello.o
  rm hello.o
  ❯ make --dry-run hello VERBOSE=1
  /usr/bin/clang    hello.s   -o hello
  </code></pre>
  <p>I wonder what am i missing here.</p>
  <p>GNU version:</p>
  <pre><code>GNU Make 4.3
  x86_64-pc-linux-gnu
  </code></pre>