@@ -819,10 +819,23 @@ pub struct TargetOptions {
819819 /// Only useful for compiling against Illumos/Solaris,
820820 /// as they have a different set of linker flags. Defaults to false.
821821 pub is_like_solaris : bool ,
822- /// Whether the target toolchain is like Windows'. Only useful for compiling against Windows,
823- /// only really used for figuring out how to find libraries, since Windows uses its own
824- /// library naming convention. Defaults to false.
822+ /// Whether the target is like Windows.
823+ /// This is a combination of several more specific properties represented as a single flag:
824+ /// - The target uses a Windows ABI,
825+ /// - uses PE/COFF as a format for object code,
826+ /// - uses Windows-style dllexport/dllimport for shared libraries,
827+ /// - uses import libraries and .def files for symbol exports,
828+ /// - executables support setting a subsystem.
825829 pub is_like_windows : bool ,
830+ /// Whether the target is like MSVC.
831+ /// This is a combination of several more specific properties represented as a single flag:
832+ /// - The target has all the properties from `is_like_windows`
833+ /// (for in-tree targets "is_like_msvc ⇒ is_like_windows" is ensured by a unit test),
834+ /// - has some MSVC-specific Windows ABI properties,
835+ /// - uses a link.exe-like linker,
836+ /// - uses CodeView/PDB for debuginfo and natvis for its visualization,
837+ /// - uses SEH-based unwinding,
838+ /// - supports control flow guard mechanism.
826839 pub is_like_msvc : bool ,
827840 /// Whether the target toolchain is like Emscripten's. Only useful for compiling with
828841 /// Emscripten toolchain.
0 commit comments