Skip to content

Update Windows build guide: current NASM, simplified YASM setup, common-error reference - #1851

Open
0xDarkMatter wants to merge 1 commit into
veracrypt:masterfrom
0xDarkMatter:docs/windows-build-guide-1488
Open

Update Windows build guide: current NASM, simplified YASM setup, common-error reference#1851
0xDarkMatter wants to merge 1 commit into
veracrypt:masterfrom
0xDarkMatter:docs/windows-build-guide-1488

Conversation

@0xDarkMatter

Copy link
Copy Markdown

Follow-up to #1488. I set up a fresh Windows 11 machine with VS 2022 Community and walked through the guide as written, fixing what didn't survive contact:

  • The guide pointed at NASM 2.08 (2010). Current NASM works fine — 2.16.03 assembled all .asm sources across Crypto without errors, so the guide now links the release-builds index and notes the verified version. Also corrected the Path example for the 64-bit installer (C:\Program Files\NASM).
  • The YASM section had steps nothing consumes: the project files only invoke yasm.exe from the Path (-p gas for the .S sources). Neither vsyasm nor a YASMPATH variable is referenced anywhere in src/, so those steps are gone.
  • Added a "Common build errors" entry to Known Issues covering the three errors a default VS 2022 install actually produces (MSB8040 → Spectre-mitigated libs, C1083 atlbase.h → ATL components, MSB8066 exit 9009 → assemblers not on Path). This is the "multiple errors when trying to build on Visual Studio 2022" from the issue — each now maps to the component that fixes it.
  • The Release|Win32 step now explains that Setup/Portable/COMReg are only produced by that configuration.
  • The MSBuild step no longer asks for an administrator prompt — compiling works unelevated; elevation is only needed for the signing/cert-import steps, and the guide now says so.

Tested combination: VS 2022 Community 17.14.36908, Windows SDK 10.0.26100, NASM 2.16.03, YASM 1.3.0, on Windows 11 — Release|x64 and Release|Win32 both build with 0 errors after following the updated guide.

Deliberately untouched, since I didn't verify them: the ARM64, driver/WDK, signing, WiX/MSI, and legacy-bootloader sections. One open question: nothing in the x64/Win32 app builds appears to hit an MFC header, but I installed ATL and MFC together so I can't prove MFC is unneeded — if it's only required by some other configuration, the component list could potentially be trimmed; happy to test if you can point me at what uses it.

English guide only — ru/zh-cn copies will need the same treatment by translators.

Verified the guide end-to-end on a clean Windows 11 + VS2022 Community
17.14 machine (Release|x64 and Release|Win32 both build with 0 errors).
Fixes for the issues found along the way:

- Recommend a current NASM release instead of 2.08 (2010); NASM 2.16.03
  verified against all assembly sources. Fix the Path example for the
  64-bit installer location.
- Simplify YASM setup: the build only invokes yasm.exe from the Path.
  Drop the zip/vsyasm download and the YASMPATH system variable, which
  nothing in the build references.
- Add a "Common build errors" section to Known Issues mapping the three
  errors every default VS2022 install hits (MSB8040 Spectre libs, C1083
  atlbase.h, MSB8066 exit 9009) to the components that fix them.
- Explain why the Release|Win32 pass is needed (Setup/Portable/COMReg
  are only built by that configuration).

Addresses veracrypt#1488.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant