mcpp:plugins 0.1.0: the official rule collection, selected by features - #1
Merged
Conversation
clang's own CUDA wrapper includes curand_mtgp32_kernel.h unconditionally. On a developer machine the header was found in the host's /usr/include and the dependency went unnoticed; the CI runner, with no host CUDA, refused it. The rule now adds xim:libcurand's include directory to the device compile and refuses the clang route without it, naming the [xlings.workspace] entry to add. The consumer fixture declares it.
curand_mtgp32_kernel.h includes <nv/target> from CCCL, which the 12.x toolkits ship as the separate cuda-cccl package and which the host's /usr/include had supplied silently as well. The rule adds the payload's include directory (and include/cccl for the 13.x layout) and refuses the clang route without it, naming both entries; the fixture declares it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
One package,
mcpp:plugins, carrying the build plugins the mcpp project maintains. A consumer selects the members it needs through features and imports each under the module name the member declares:Members in 0.1.0:
mcpp.rules.cuda(featurerules-cuda, mcpp >= 2026.9.5.2) andmcpp.rules.spirv(featurerules-spirv, mcpp >= 2026.9.5.3). Both were previously rule packages underexamples/in the mcpp repository; that placement is withdrawn.Naming
mcpp.rules.<x>for rule packages,mcpp.tools.<x>for build-time utilities,mcpp.pluginsfor the lib root.mcpp.build.*is the engine's own module family and is not used.Engine dependency
A host-module package contributes every module interface unit among its feature-resolved sources (mcpp 2026.9.5.3, e2e 610 in mcpp-community/mcpp). The CI pin
MCPP_VERSION: 2026.9.5.3therefore goes green once that release is published; until then the workflow's download step fails by construction.Verification on the author's machine
tests/spirv-consumer:magic=07230203 words=370tests/cuda-consumer:12 24 36 48on the CPU variant and on the RTX 4080 through the clang route