Commit 5f10035
feat: add compat.eui-neo 0.5.3 with selectable render and window backends
EUI-NEO as a Form B compat package: the core TUs compiled into one lib, public
headers exposed via include_dirs, so consumers write `#include <eui_neo.h>`.
The C++23 module surface is out of scope — upstream ships no module interface
units.
Depends on #134 for compat.vulkan, compat.sdl2 and compat.curl; the `vulkan`,
`sdl2` and `network` features resolve against them.
Sourced from upstream's v0.5.3 release tag with a real sha256, mirrored to
gitcode mcpp-res. Upstream vendors freetype/glfw/libpng/zlib/glad/tray/yyjson/
md4c under 3rd/; none are built here — each is already in this index at the
same version, which is what the six packages from #131 were for.
Backend selection is the interesting part. Upstream compiles exactly one render
backend and one window backend, dispatching on
`#if OPENGL ... #elif VULKAN` and `#if SDL2` / else-GLFW, so defining both
halves of either pair silently picks the first and ignores the caller —
invisible in CI, since neither backend runs headless. mcpp features are
additive with no `default-features = false` (mcpp#242), and all three obvious
encodings fail silently: a `default` feature carrying defines/sources/deps is
inert, `default = { implies = ... }` is the opposite and always applies, and a
package-level define cannot be unset by a feature. Verified with probes on both
0.0.109 and 2026.7.29.1 — a version bump does not change it. What works is
resolving the choice in the preprocessor from the -DMCPP_FEATURE_<NAME> flags
mcpp already passes, via a force-included header; that also means naming an
unrelated feature no longer drops the backends.
Doing so exposed a second problem: mcpp routes `cflags` to C translation units
and `cxxflags` to C++ ones. The first revision of this descriptor carried
`cflags = { "-DEUI_RENDER_BACKEND_OPENGL=1" }` and nothing else, so
render_backend.cpp never saw it — the package built, linked, passed its tests,
and had no render backend at all.
Four members cover the matrix: default (opengl+glfw), markdown, vulkan, and
sdl2+network. Backend selection is verified structurally rather than by
trusting a green test — render_backend.o and window_backend.o are checked for
which backend they actually reference, including for the member that names only
an unrelated feature.
Verified cold on all three platforms with mcpp 0.0.109. compat.vulkan has no
windows build, so the vulkan member gates with [target.'cfg(...)'] and asserts
the default OpenGL configuration there instead.
Design: .agents/docs/2026-07-29-add-eui-neo-plan.md
Co-authored-by: SPeak Agent <248744407+speak-agent@users.noreply.github.com>1 parent 6da8452 commit 5f10035
14 files changed
Lines changed: 1235 additions & 23 deletions
File tree
- .agents/docs
- pkgs
- c
- e
- tests/examples
- eui-neo-markdown
- tests
- eui-neo-sdl2
- tests
- eui-neo-vulkan
- tests
- eui-neo
- tests
- vulkan
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| 41 | + | |
| 42 | + | |
41 | 43 | | |
42 | 44 | | |
43 | 45 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
22 | 26 | | |
23 | 27 | | |
24 | 28 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
32 | 49 | | |
33 | 50 | | |
34 | 51 | | |
| |||
65 | 82 | | |
66 | 83 | | |
67 | 84 | | |
68 | | - | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
69 | 94 | | |
70 | 95 | | |
71 | 96 | | |
72 | 97 | | |
73 | 98 | | |
74 | 99 | | |
75 | 100 | | |
| 101 | + | |
| 102 | + | |
76 | 103 | | |
77 | 104 | | |
78 | 105 | | |
| |||
83 | 110 | | |
84 | 111 | | |
85 | 112 | | |
| 113 | + | |
| 114 | + | |
86 | 115 | | |
87 | 116 | | |
88 | 117 | | |
| |||
184 | 213 | | |
185 | 214 | | |
186 | 215 | | |
187 | | - | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
188 | 228 | | |
189 | 229 | | |
0 commit comments