@@ -819,10 +819,23 @@ pub struct TargetOptions {
819
819
/// Only useful for compiling against Illumos/Solaris,
820
820
/// as they have a different set of linker flags. Defaults to false.
821
821
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.
825
829
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.
826
839
pub is_like_msvc : bool ,
827
840
/// Whether the target toolchain is like Emscripten's. Only useful for compiling with
828
841
/// Emscripten toolchain.
0 commit comments