Skip to content

0.15.0: mechanisms in features, build.mcpp-first configuration, the runtime closure in the payload, deps without mcpp-deps, Linux C++ library alignment - #32

Open
speak-agent wants to merge 3 commits into
mainfrom
feat/deps-toolchain-stdlib
Open

speak-agent wants to merge 3 commits into
mainfrom
feat/deps-toolchain-stdlib

Conversation

@speak-agent

@speak-agent speak-agent commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

mcpp is a general engine with a framework for build plugins. Plugins come from this package, from third parties, or from the project itself, and build.mcpp is where a project uses them. 0.15.0 brings the collection in line with that design. The architecture and ecosystem plan is .agents/docs/2026-09-26-plugins-0.15-architecture-plan.md, and the conventions are docs/plugin-development.md (new).

Features state mechanisms. A feature declares only the tools its own actions run.

  • rules-qt-xim, rules-qt-xim-base and rules-qt-xim-addons are removed. They pinned Qt 6.11.1 and, on Linux, glib, zstd and zlib.
  • rules-qt finds the SDK from options::root in build.mcpp, then QT_ROOT_DIR, then a Qt payload the project declares in its own [xlings] table at the version it chooses. It records the level that decided as the fact rules-qt.sdk.
  • The runtime closure is now the payload's responsibility, on every platform (feat: qt and qt-base carry their runtime closure (Linux: libdbus, xcb, ... under the xlings loader; Windows: the VC++ runtime) openxlings/xim-pkgindex#884, #885):
    • Linux: libdbus, fontconfig, xcb and the other libraries Qt loads;
    • Windows: the VC++ runtime.
  • On Linux, rules-qt warns under a libc++ toolchain, because Qt's official build uses libstdc++.

No helper program. The deps actions run the installer directly:

  • vcpkg install, configured through its own arguments: --vcpkg-root, --disable-metrics, short build and package trees, and vcpkg's own install-root lock;
  • cmake -P over a script the member writes, which configures, builds and installs, or empties and extracts.

tools/deps_main.cpp and the mcpp-deps target are removed, so consumers drop tools = ["mcpp-deps"] from the edge.

Dependencies built with the program's C++ standard library on Linux.

  • Under a libc++ toolchain, deps-vcpkg generates <arch>-linux-libcxx and builds ports with mcpp's clang.
  • Each triplet is its own vcpkg installation, with prefix <install root>/<triplet>/<triplet>.
  • deps-cmake passes mcpp's clang.

Docs. The README is now about 100 lines, down from 1113. Per-member detail moved to docs/<member>.md, and docs/plugin-development.md is new.

Breaking changes. Each takes one or two lines to migrate:

  • rules-qt-xim* → rules-qt plus "xim:qt-base" = "<version>" in [xlings];
  • delete tools = ["mcpp-deps"] from the edge;
  • use the returned prefix instead of a hard-coded vcpkg_installed/<triplet>.

CI.

  • New criteria: qt-sdk-consumer (all three SDK levels), a Linux Widgets run and pack that checks libdbus, xkbcommon and fontconfig in the packed tree, and the VC++ runtime beside the program and in the packed tree on Windows.
  • The Linux Widgets and Windows CRT criteria need xim-pkgindex #885 and #884 published first.
  • Locally, the vcpkg-consumer, cmake-consumer, archive-consumer, vcpkg-workspace and vcpkg-libcxx criteria pass without mcpp-deps.
  • The SDK levels (options, QT_ROOT_DIR, payload) were checked locally.

…build with mcpp's clang, and each vcpkg triplet is its own installation
…-first configuration, the Qt SDK from options, QT_ROOT_DIR or the project's payload, deps actions without mcpp-deps, and docs/plugin-development.md
@speak-agent speak-agent changed the title 0.14.1: dependencies built with the program's C++ standard library on Linux, one vcpkg installation per triplet 0.15.0: mechanisms in features, build.mcpp-first configuration, the runtime closure in the payload, deps without mcpp-deps, Linux C++ library alignment Sep 26, 2026
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.

2 participants