1515-- genuinely vendored single-file headers live at its root (stb_image,
1616-- nanosvg, nanosvgrast) and the sources include them as `"3rd/stb_image.h"`.
1717--
18- -- The build recipe below tracks upstream `CMakeLists.txt` (v0.5.3 ): CORE_SOURCES
18+ -- The build recipe below tracks upstream `CMakeLists.txt` (v0.5.5 ): CORE_SOURCES
1919-- plus the OpenGL backend and, for the glfw window backend, `ime_bridge.c`.
20+ -- 0.5.5 grew a Shadertoy subsystem: render_backend.h and include/eui/types.h now
21+ -- include core/render/shadertoy.h unconditionally, and opengl_backend.cpp calls
22+ -- releaseShaderToys(), so shadertoy.cpp / shadertoy_json.cpp / shadertoy_primitive.cpp
23+ -- and opengl_shadertoy.cpp are part of the lib, not optional (vulkan_shadertoy.cpp
24+ -- joins the `vulkan` feature the same way).
2025--
2126-- All `mcpp` paths are GLOBS relative to the verdir; the leading `*/` absorbs
22- -- the GitHub tarball's `EUI-NEO-0.5.3 /` wrap layer.
27+ -- the GitHub tarball's `EUI-NEO-0.5.5 /` wrap layer.
2328package = {
2429 spec = " 1" ,
2530 namespace = " compat" ,
@@ -36,20 +41,36 @@ package = {
3641 CN = " https://gitcode.com/mcpp-res/eui-neo/releases/download/0.5.3/eui-neo-0.5.3.tar.gz" },
3742 sha256 = " 6951ac330d0307c633bafe720b7888bf32785103eb16973adb4ee05ef06e64d1" ,
3843 },
44+ -- CN mirror for 0.5.5 not published yet (no mcpp-res write access here);
45+ -- plain-string url keeps lint green and lets CN users fall back to
46+ -- upstream, per docs/cn-mirror.md. Flip to { GLOBAL, CN } once the
47+ -- gitcode release exists — sha256 stays the same.
48+ [" 0.5.5" ] = {
49+ url = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.5.5.tar.gz" ,
50+ sha256 = " cf0da91d7544fe406b704922137fd4d55ed080b3e647501e0ca5303abb00eb98" ,
51+ },
3952 },
4053 macosx = {
4154 [" 0.5.3" ] = {
4255 url = { GLOBAL = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.5.3.tar.gz" ,
4356 CN = " https://gitcode.com/mcpp-res/eui-neo/releases/download/0.5.3/eui-neo-0.5.3.tar.gz" },
4457 sha256 = " 6951ac330d0307c633bafe720b7888bf32785103eb16973adb4ee05ef06e64d1" ,
4558 },
59+ [" 0.5.5" ] = {
60+ url = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.5.5.tar.gz" ,
61+ sha256 = " cf0da91d7544fe406b704922137fd4d55ed080b3e647501e0ca5303abb00eb98" ,
62+ },
4663 },
4764 windows = {
4865 [" 0.5.3" ] = {
4966 url = { GLOBAL = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.5.3.tar.gz" ,
5067 CN = " https://gitcode.com/mcpp-res/eui-neo/releases/download/0.5.3/eui-neo-0.5.3.tar.gz" },
5168 sha256 = " 6951ac330d0307c633bafe720b7888bf32785103eb16973adb4ee05ef06e64d1" ,
5269 },
70+ [" 0.5.5" ] = {
71+ url = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.5.5.tar.gz" ,
72+ sha256 = " cf0da91d7544fe406b704922137fd4d55ed080b3e647501e0ca5303abb00eb98" ,
73+ },
5374 },
5475 },
5576
@@ -120,6 +141,9 @@ package = {
120141 " */core/render/image_source.cpp" ,
121142 " */core/render/primitive.cpp" ,
122143 " */core/render/render_backend.cpp" ,
144+ " */core/render/shadertoy.cpp" ,
145+ " */core/render/shadertoy_json.cpp" ,
146+ " */core/render/shadertoy_primitive.cpp" ,
123147 " */core/render/stb_image_impl.cpp" ,
124148 " */core/render/text.cpp" ,
125149 -- OpenGL backend and the GLFW IME bridge are UNCONDITIONAL sources.
@@ -128,6 +152,7 @@ package = {
128152 " */core/render/opengl/opengl_backend.cpp" ,
129153 " */core/render/opengl/opengl_image.cpp" ,
130154 " */core/render/opengl/opengl_primitives.cpp" ,
155+ " */core/render/opengl/opengl_shadertoy.cpp" ,
131156 " */core/render/opengl/opengl_text.cpp" ,
132157 " */core/platform/ime_bridge.c" ,
133158 -- Window layer
@@ -222,7 +247,12 @@ package = {
222247 -- `#else` branch returning a null backend. Verified by symbol
223248 -- inspection, since it links and runs cleanly either way.
224249 cflags = { " -include" , " mcpp_eui_backends.h" },
225- cxxflags = { " -include" , " mcpp_eui_backends.h" },
250+ -- `-fno-char8_t` is package-wide since 0.5.5: the Windows-only char8_t
251+ -- break of 0.5.3 (parseWindowsSelection) is no longer the only one —
252+ -- resolveResourcePath() (platform.cpp:616) and the new Shadertoy TUs
253+ -- return path::u8string() as std::string on EVERY platform. Root cause
254+ -- is char8_t, not the standard level; everything else stays at c++23.
255+ cxxflags = { " -include" , " mcpp_eui_backends.h" , " -fno-char8_t" },
226256
227257 features = {
228258 [" vulkan" ] = {
@@ -233,6 +263,7 @@ package = {
233263 " */core/render/vulkan/vulkan_image.cpp" ,
234264 " */core/render/vulkan/vulkan_polygon.cpp" ,
235265 " */core/render/vulkan/vulkan_primitives.cpp" ,
266+ " */core/render/vulkan/vulkan_shadertoy.cpp" ,
236267 " */core/render/vulkan/vulkan_text.cpp" ,
237268 },
238269 deps = { [" compat.vulkan" ] = " 1.4.357.0" },
@@ -324,23 +355,14 @@ package = {
324355 -- this never came up before.
325356 cflags = { " -DEUI_TRAY_WINAPI=1" , " -DNOMINMAX" , " -D_WIN32_WINNT=0x0A00" },
326357 -- Upstream builds at CMAKE_CXX_STANDARD 17; this index's floor is
327- -- c++23, and one Windows-only line does not survive the move:
328- -- `parseWindowsSelection()` in core/platform/platform.cpp pushes
329- -- `path::u8string()` into a std::vector<std::string>, and C++20
330- -- changed that return type to std::u8string.
331- --
332- -- The root cause is char8_t, not the standard level, so turn off
333- -- exactly that: every STL's <filesystem> selects the u8string()
334- -- return type on `__cpp_char8_t`, which -fno-char8_t undefines.
335- -- The rest of the package stays at c++23 on every platform.
336- --
337- -- Linux and macOS never see this — the code is inside
338- -- `#if defined(_WIN32)`. Worth fixing upstream (`wideToUtf8()`
339- -- already sits eight lines above and does the right thing); until
340- -- then this keeps us on a real upstream release tag rather than a
341- -- fork carrying the patch.
342- cxxflags = { " -DEUI_TRAY_WINAPI=1" , " -DNOMINMAX" , " -fno-char8_t" ,
343- " -D_WIN32_WINNT=0x0A00" },
358+ -- c++23. `-fno-char8_t` is applied PACKAGE-WIDE (base cxxflags)
359+ -- since 0.5.5, not here: 0.5.3 only tripped on char8_t inside the
360+ -- Windows-only `parseWindowsSelection()`, but 0.5.5's
361+ -- resolveResourcePath() and the Shadertoy TUs return
362+ -- path::u8string() as std::string on every platform. Worth fixing
363+ -- upstream; until then this keeps us on a real upstream release
364+ -- tag rather than a fork carrying the patch.
365+ cxxflags = { " -DEUI_TRAY_WINAPI=1" , " -DNOMINMAX" , " -D_WIN32_WINNT=0x0A00" },
344366 -- Upstream lists winmm/urlmon/shell32/user32/imm32/pdh and stops
345367 -- there, because CMake's MSVC default `CMAKE_C_STANDARD_LIBRARIES`
346368 -- already drags in kernel32/user32/gdi32/shell32/ole32/comdlg32/…
0 commit comments