You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
deps: the Linux GCC row keeps vcpkg's detection; the MSBuild refusal reads the call stack
- mcpp runs its GCC payload with a sysroot, a binutils directory and a link
model that only its own command lines carry, so the driver alone is not a
complete handover: vcpkg's compiler detection failed with it on CI. On that
row the host compiler's libstdc++ is the program's C++ library, and
`resolved` answers `detected`, stating why. The clang payloads are complete
through their `.cfg` files and stay `chain`.
- The MSBuild watch matched the current file, which inside a function is the
caller's (the portfile), so it never fired; it now matches the helper in the
call stack, by its own directory and file names (measured with CMake 4.4:
the helper is refused, a CMake helper's read is not).
Copy file name to clipboardExpand all lines: docs/deps.md
+21-10Lines changed: 21 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -108,8 +108,18 @@ vcpkg follows where the toolset came from:
108
108
| mechanism | when | what vcpkg receives | port kinds that build |
109
109
|---|---|---|---|
110
110
|`instance`| an MSVC toolset from a Visual Studio instance (`msvc@system`, the default on a machine with Visual Studio) |`VCPKG_VISUAL_STUDIO_PATH` naming that instance; the standard triplet, or a derived one with `VCPKG_PLATFORM_TOOLSET_VERSION` when the resolved toolset is not the instance's default | CMake, make and MSBuild |
111
-
|`chain`| any other toolset: a managed MSVC toolset (`xim:msvc@<version>`), and the toolsets of the Linux and macOS rows | a derived triplet `<base>-mcpp-<hash>` that chain-loads a toolchain naming the tools, and the tools' environment | CMake and make; an MSBuild port is refused by name |
112
-
|`detected`|`options.toolset.toolset = detected`| nothing: vcpkg finds its own toolset, as in 0.16.0 | as vcpkg's own detection allows |
111
+
|`chain`| a managed MSVC toolset (`xim:msvc@<version>`), and the clang toolsets of the Linux and macOS rows | a derived triplet `<base>-mcpp-<hash>` that chain-loads a toolchain naming the tools, and the tools' environment | CMake and make; an MSBuild port is refused by name |
112
+
|`detected`|`options.toolset.toolset = detected`; and, under `resolved`, the Linux GCC row | nothing: vcpkg finds its own toolset, as in 0.16.0 | as vcpkg's own detection allows |
113
+
114
+
**The Linux GCC row.** mcpp runs its GCC payload with a sysroot, a binutils
115
+
directory and a link model (the payload's dynamic linker and C library) that
116
+
its own command lines add; the driver alone is not a complete toolset, and
117
+
vcpkg's compiler detection fails with it on a machine whose host compiler does
118
+
not fill the gaps (measured on the plugins' CI). The clang payloads carry their
119
+
configuration in their own `.cfg` files and are complete. On the GCC row the
120
+
host compiler's libstdc++ is the program's C++ library, so `resolved` keeps
121
+
vcpkg's detection there and the member states why in `mcpp.plugins.toolset`'s
122
+
`reason`.
113
123
114
124
**The derived triplet.** The base triplet's text is copied into it, not
115
125
included, because vcpkg hashes a triplet file's content and not the files it
@@ -145,14 +155,15 @@ a second C++ runtime into the process without a word. `crt_linkage` states the
145
155
ports' linkage explicitly and wins.
146
156
147
157
**Linux.** Linux has two C++ standard libraries that do not link with each
148
-
other. The derived triplet names the program's compiler, so the ports use the
149
-
program's library on every row: libc++ under mcpp's clang (`std::__1::`), and
150
-
the GCC payload's libstdc++ under mcpp's GCC.
151
-
152
-
**Upgrading from 0.16.0.** On Linux and macOS, and on Windows with a managed
153
-
toolset, the installation moves to a derived triplet, so each port is built once
154
-
more (or restored from a binary cache that already holds it); the prefixes of
155
-
0.16.0 (`<arch>-linux-libcxx`, `x64-linux`) are left where they are. With
158
+
other. Under mcpp's clang the derived triplet names that clang, so the ports
159
+
use libc++ (`std::__1::`) as the program does; under mcpp's GCC the host
160
+
compiler's libstdc++ is the program's library, and vcpkg's detection is kept.
161
+
162
+
**Upgrading from 0.16.0.** On the clang rows of Linux and macOS, and on Windows
163
+
with a managed toolset, the installation moves to a derived triplet, so each
164
+
port is built once more (or restored from a binary cache that already holds
165
+
it); the prefixes of 0.16.0 (`<arch>-linux-libcxx`) are left where they are. The
166
+
Linux GCC row is unchanged. With
156
167
Visual Studio and the dynamic C runtime nothing changes: the standard triplet
157
168
and the instance vcpkg selects by itself give the same ABI hash. A program that
158
169
links the C runtime statically moves to `x64-windows-static`.
0 commit comments