mirror of
https://github.com/Cheviiot/Vintner.git
synced 2026-08-03 15:57:24 +00:00
A single-binary Go tool for cross compiling with the real MSVC toolchain on Linux via Wine. Behaves as cl/link/lib/rc/midl/mt/dumpbin/msbuild/ nmake/ml/ml64/armasm/armasm64/cmd/findstr depending on the name it's invoked as, plus download/install/env/version management subcommands. - download: fetches the MSVC/WinSDK installer manifest, resolves package selection and dependencies, downloads and verifies payloads, unpacks VSIX/MSI packages, and applies a handful of compatibility patches so VsDevCmd.bat and MSBuild's SDK detection work without a Windows Registry (which doesn't exist under Wine). - install: locates the installed toolchain/SDK versions, normalizes header/library name casing, lays out per-architecture tool symlinks with an env.json config each, and compiles a small native launcher (toolrelay.exe) that lets mt.exe's CMake-compatibility exit code survive Wine's own exit-code truncation. - The wrapper runtime rewrites absolute unix paths in tool arguments into Wine's z:\... form, runs the real .exe under wine, and rewrites the tool's output back to plain unix paths. Verified end-to-end against a real MSVC/WinSDK download: cl, link, mt and the resulting hello.exe all work under Wine, including through the toolrelay.exe relay path and with paths containing non-ASCII characters. Offline unit tests cover the wrapper's path-rewrite/output-filter logic, install-time header lowercasing, and download package-selection/ dependency-resolution.
19 lines
643 B
Diff
19 lines
643 B
Diff
msvc-go-wine: skip VsDevCmd's telemetry upload.
|
|
|
|
There's no telemetry endpoint reachable (or wanted) under Wine. Rather than
|
|
touching the conditional logic below, just set the opt-out switch the
|
|
script already checks for on its own.
|
|
|
|
diff --git a/Common7/Tools/VsDevCmd.bat b/Common7/Tools/VsDevCmd.bat
|
|
index f925e95..f3710ad 100644
|
|
--- a/Common7/Tools/VsDevCmd.bat
|
|
+++ b/Common7/Tools/VsDevCmd.bat
|
|
@@ -247,6 +247,7 @@ exit /B 0
|
|
:end
|
|
|
|
@REM Send Telemetry if user's VS is opted-in
|
|
+set "VSCMD_SKIP_SENDTELEMETRY=1"
|
|
if "%VSCMD_SKIP_SENDTELEMETRY%"=="" (
|
|
if "%VSCMD_DEBUG%" NEQ "" (
|
|
@echo [DEBUG:%~nx0] Sending telemetry
|