I recently noticed problems with building with clang in msvc mode when using my distro clang. It seems specific to its configuration, I think that it doesn't affect default clang.
One problem is that --rtlib=libgcc is specified in /etc/clang, which causes clang to produce: ``` clang-15: error: unsupported runtime library 'libgcc' for platform 'MSVC' ``` I think it's a clang bug here: https://github.com/llvm/llvm-project/blob/main/clang/lib/Driver/ToolChains/M... It should probably check for -nodefaultlibs in addition to -nostdlib. It's easy to handle on Wine side by using -nostdlib.
The other problem is that clang for some reason doesn't define `_MSV_VER` by default. I found that it's defined only if I pass `-fuse-ld=lld` to the command line. That's weird because it shouldn't affect compilation step, it should matter only for linking and that's when we pass it. I didn't track it down in clang code itself, but if we can't depend on clang providing it by default, we need to make sure to pass `-fms-compatibility-version` ourselves. The exact version doesn't really matter, we mostly need to make sure that it's defined at all so that our #ifdefs work correctly.
-- v2: configure: Use -fuse-ld=lld also for compilation targets. winegcc: Use -nostdlib instead of -nostartfiles on Clang MSVC targets. configure: Use -nostdlib instead of -nostartfiles in WINE_TRY_PE_CFLAGS.