Skip to content

[tmp] 0.0.90 MSVC native build + dialect flags — Windows CI iteration#212

Closed
Sunrisepeak wants to merge 5 commits into
mainfrom
tmp/090-ci
Closed

[tmp] 0.0.90 MSVC native build + dialect flags — Windows CI iteration#212
Sunrisepeak wants to merge 5 commits into
mainfrom
tmp/090-ci

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Temp iteration PR for 0.0.90 (MSVC native cl.exe backend + #210 dialect flags + polish). Only ci-windows.yml (+release.yml for e2e 45) kept. Do not merge.

…ole module graph (#210)

[build].cxxflags like -freflection change what libstdc++ headers DECLARE
(<meta> is gated on __cpp_impl_reflection) — they are module-graph dialect,
same nature as -std=. They now ride -std='s channels: the global $cxxflags
(every TU incl. dependency modules — fixes the fmt.gcm-class secondary
failure), the std/std.compat prebuild command, and scans. Known-list
auto-promotion (reflection/contracts/char8_t/_GLIBCXX_USE_CXX11_ABI) +
explicit [build] dialect_cxxflags escape hatch. The fingerprint already
keyed these flags — only the command construction was missing them.

Also: cppStandardFlag is now spelled per-dialect (std_flag_for — msvc
/std:c++20 | /std:c++latest), groundwork for the native MSVC backend.

Verified: issue #210's exact repro prints 'x 2 / y 3' via import std on
gcc@16.1.0; e2e 98 covers both variants + std-module.json assertion.
- C1 env model: find_windows_sdk() + build_env_for_cl() synthesize
  INCLUDE/LIB/PATH/VSLANG=1033 from the detected VC tools + SDK (no
  vcvarsall run); enrich_toolchain_from_cl fills tc.envOverrides; missing
  SDK keeps detection working and fails the BUILD with guidance (replaces
  the 0.0.88 'not yet supported' gate — the gate is gone).
- C2 emission: SeparateLinker rules (link.exe /OUT + rspfile — cmd's 8191
  limit), lib.exe archives, /DLL+/IMPLIB shared, deps=msvc via
  /showIncludes, /interface /TP for .cppm module units, /std: mapping
  (std_flag_for), /MD|/MT CRT model, /Od, /nologo /EHsc /utf-8 baseline,
  .obj object extension end to end (plan objExt + std staging names).
- C3 std/std.compat staging: single-cl commands (/ifcOutput), ifc.cache
  layout, registry-dispatched staged paths (clang hardcoding removed),
  stdmod executes with the toolchain env (capture_with_env).
- C4 scanning: /scanDependencies as the third builtin P1689 producer
  (provider capability + ninja scan rule); dyndep ifc-parameterized as-is.
- C8 fast path: '@env' multi-var encoding in the build cache env slot so
  incremental msvc builds re-create INCLUDE/LIB for ninja.
- cd /d in std stage commands (cmd.exe won't change drive without it;
  D: workspace + C: BMI cache is the real CI layout).

Zero-diff gate re-verified for GCC and LLVM vs the 0.0.89 release binary.
…rsion/docs

- e2e 99 (requires: msvc): default msvc → modules build/run → import std →
  incremental; 95's build-gate assertion flips to a real build+run; the
  ci-windows MSVC step now drives 99.
- mingw: windows-only guard with a clear message (was 'invalid xpkg target
  xim:mingw-gcc@'); e2e 97 objdump path unhardcoded; doctor gains Windows
  SDK + mingw sections.
- release.yml publish-ecosystem timeout 20→30 (backstop for the fixed
  mirror script's worst case).
- version 0.0.90 + CHANGELOG + docs/03 MSVC build section.
@Sunrisepeak

Copy link
Copy Markdown
Member Author

Green in one round (run 29245851464): e2e 53/0 incl. 99 native MSVC build (modules/import std/incremental), 95 flipped to real build, 97 mingw unchanged. Superseded by the real PR.

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