Here's an example:

      $ ls
      Makefile

      $ cat Makefile
      # Constructs a directory foo that contains a file bar.
      foo: bar
              rm -f -r foo
              mkdir foo
              cp bar foo

      $ touch bar

      $ make foo
      rm -f -r foo
      mkdir foo
      cp bar foo

      $ touch bar

      $ make -t foo
      touch foo
      make: touch: open: foo: Is a directory

      $ make --version | head -n 1
      GNU Make 4.4.1

I tracked this down in the source code with "git grep 'touch: open'" and
found that touch is implemented in src/remake.c by reading one byte from
the target and writing it back, which fails if the target already exists
as a directory.

Reply via email to