Question: I see a file .missing-syscalls.d which contains

```
-:  /home/ckim/MVP/snake_linux_3.3.mvpe/include/linux/kconfig.h \
 include/generated/autoconf.h \
 /home/ckim/MVP/snake_linux_3.3.mvpe/arch/sparc/include/asm/types.h \
 include/asm-generic/int-ll64.h \
 /home/ckim/MVP/snake_linux_3.3.mvpe/arch/sparc/include/asm/bitsperlong.h \
 include/asm-generic/bitsperlong.h \
 /home/ckim/MVP/snake_linux_3.3.mvpe/arch/sparc/include/asm/unistd.h

```

I know .d file is only for showing dependancy. But what is '-' as the target?

Answer: 
Hyphen prior to commands in makefiles is used to suppress errors and continue instead of failing like this:

```
clean:
        -rm -f *.o

```

The same way goes for include syntax in makefiles to suppress the error messages that would otherwise appear if the file isn't available like this:

```
-include $(SRC:%.c=%.d)

```

I would assume the .missing-syscalls.d file is used the same way, ignoring non-existing header files it attempts to include.
Either that's an error (from some automated process gone wrong) and that's a literal target of `-` which defines some extra prereqs (for a target that I can't imagine is ever likely to actually run).

Or that's an attempt to ensure that those files aren't considered as intermediate files by make in case some chain of rules would cause it to consider them as such.

See <http://www.gnu.org/software/make/manual/make.html#Chained-Rules> for reference.

> 
> Ordinarily, a file cannot be intermediate if it is mentioned in the
>  makefile as a target or prerequisite. However, you can explicitly mark
>  a file as intermediate by listing it as a prerequisite of the special
>  target .INTERMEDIATE. This takes effect even if the file is mentioned
>  explicitly in some other way.
> 
> 
>