Writing gcc-style dependency files with clang-cl

Hi there,

We're continuing to work on making Firefox build with clang-cl in more configurations, and one of my colleagues recently wondered[1] if we could generate Makefile dependencies with clang-cl the same way we would with clang or gcc (-MP -MD etc) instead of using the wrapper script[2] that we use with MSVC that parses the output of -showIncludes. Passing these options to clang-cl with `-Xclang` doesn't seem to work, however:

$ clang-cl -Fohello.obj -c hello.cpp -Xclang -MP -Xclang -MD -Xclang -MF -Xclang bar
error: unknown argument: '-MD'
error: unknown argument: '-MF'

Is this something we could make work?


1. 1340588 - use GCC-style dependency generation with clang-cl, rather than the cl.py wrapper we have now
2. https://dxr.mozilla.org/mozilla-central/source/python/mozbuild/mozbuild/action/cl.py

+Reid for clang-cl info

-Xclang escapes through to the -cc1 command line, which you can see by adding -### to see what subcommands clang or clang-cl are running. It looks like -MD and -MF map to ‘-dependency-file foo.dep’ at the -cc1 level, so ‘clang-cl -Xclang -dependency-file -Xclang foo.dep’ should write makefile dependencies into foo.dep.

We should probably add a real flag for this, though. The GCC spelling unfortunately conflicts directly with the very frequently used VC flag /MD (also accepted as -MD).