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.