Skip to content

0.21.0: CMake cross contracts and owned accelerator targets - #52

Open
Sunrisepeak wants to merge 9 commits into
mainfrom
wip/deps-cmake-contract
Open

Sunrisepeak wants to merge 9 commits into
mainfrom
wip/deps-cmake-contract

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

CMake cross builds now consume the engine's compiler, flags, archiver and target contract when the action runs. Accelerator rules also read complete, brace-aware requests and match exact implementation names, so a comma inside a target set no longer truncates the selected architectures.

SYCL owns its code targets: sycl+{nvptx64-sm_89,nvptx64-sm_90} emits both NVIDIA images, and sycl+{spir64,nvptx64-sm_89} emits SPIR-V beside NVIDIA. The CUDA toolkit is requested only for SYCL NVIDIA targets. Explicit SYCL targets remain independent of a selected CUDA member; the older target-inheritance spelling remains accepted with a migration warning. The pure SYCL fixture retains an excluded CUDA source group. Unknown SYCL targets and unavailable AMD routes are refused. CUDA, HIP and Vulkan readers share the same syntax reader.

Validation with released mcpp 2026.11.3.1: 50 plugin-logic cases pass; actual CMake musl cross build/run passes; actual SYCL consumer builds in legacy, owned NVIDIA, multi-architecture and mixed forms. Device-link intermediates verify two NVIDIA fatbins and the mixed SPIR-V/NVIDIA images. GPU execution is unqualified on the local driver (CUDA error 803). CI now inspects actual device images and separately runs the CPU fallback. Bootstrap/editor CI pins use the published 2026.11.3.1 release; the package floor stays 2026.10.30.1.

Tracks mcpp-community/mcpp#885 and #887. This reuses the existing PR and preserves its CMake contract changes.

Optional progress: a standard-library helper probes the engine API, while the plugins-progress feature provides an atomic, rate-limited worker writer using os.fs. CMake optionally reports configure/build-install stages and continues if telemetry is unavailable or unwritable. Snapshot I/O and build results remain independent; older APIs degrade without breaking the build. Ordinary CMake consumers do not acquire the optional writer dependency. The optional worker feature is independently consumable by an ordinary executable without importing the build-program-only API; CI builds and runs this fixture on the published engine.

Incremental correctness: object-surface assembly now records payload content, so restat does not hide changes behind an unchanged .incbin path. Equal-size and unchanged-content controls pass. A real shader rebuild updates the assembler object and final program. A new dual-rule consumer verifies independent CUDA sm_90 and SYCL sm_89 image production plus both host objects running together; this does not qualify GPU execution. CI covers that consumer.

Full CI on aa2c16e38024d383c721fcf4f358be580ddcf84c passed all six jobs (41937665962). The new-core integration pin will advance only after mcpp 2026.11.5.1 is publicly installable. Multi-architecture SDK static archives remain a separate unqualified combination: isolated archive extraction mixes architecture members; no architecture is silently discarded.

Sunrisepeak and others added 5 commits October 30, 2026 01:40
…e's contract

When the build's target is not the machine, the subproject is configured with
the compilers, words and archiver of the engine's contract for the
configuration (${mcpp.contract}, mcpp 2026.10.30.1+), read when the action
runs, under Ninja; CMAKE_SYSTEM_NAME is the target's system and the
try-compile builds a static library. The package needs mcpp 2026.10.30.1.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…e whole list of an older engine

mcpp 2026.10.27.1 lists zip and single-file among the built-in formats.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…g, as CMake splits it

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
@Sunrisepeak Sunrisepeak changed the title 0.21.0: deps-cmake compiles a cross build's subproject from the engine's contract 0.21.0: CMake cross contracts and owned accelerator targets Nov 4, 2026
Read the channel through the UTF-8 environment API instead of the CRT narrow environment. Exercise disabled channels, Unicode paths and optional write failure on Linux, macOS and Windows, recording the Windows ANSI code page.
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