1111-- libpng, zlib, glad, tray, yyjson, md4c). NONE of those are built here: each
1212-- one already exists in this index as its own `compat.*` package at the same
1313-- upstream version, and building them once for the whole ecosystem is the
14- -- point of having them. `3rd/` is still on the include path because three
14+ -- point of having them. `3rd/` is still on the include path because four
1515-- genuinely vendored single-file headers live at its root (stb_image,
16- -- nanosvg, nanosvgrast) and the sources include them as `"3rd/stb_image.h"`.
16+ -- nanosvg, nanosvgrast, and since 0.6.0 miniaudio) and the sources include
17+ -- them as `"3rd/stb_image.h"` — except miniaudio, which audio.cpp includes
18+ -- BARE; see the 0.6.0 note below.
1719--
18- -- The build recipe below tracks upstream `CMakeLists.txt` (v0.5.9 ): CORE_SOURCES
20+ -- The build recipe below tracks upstream `CMakeLists.txt` (v0.6.0 ): CORE_SOURCES
1921-- plus the OpenGL backend and, for the glfw window backend, `ime_bridge.c`.
2022-- 0.5.5 grew a Shadertoy subsystem: render_backend.h and include/eui/types.h now
2123-- include core/render/shadertoy.h unconditionally, and opengl_backend.cpp calls
5658-- via global properties. 3rd/, dependencies, features, and flags carry over
5759-- unchanged.
5860--
61+ -- 0.6.0: CORE_SOURCES gains one TU — `core/audio/audio.cpp`, a streaming
62+ -- audio Player behind the new `include/eui/audio.h`. Its only third-party
63+ -- need is miniaudio 0.11.21, vendored as the single header `3rd/miniaudio.h`
64+ -- (same category as stb_image/nanosvg — genuinely vendored, not mirrored as
65+ -- an index package), and the TU carries `#define MINIAUDIO_IMPLEMENTATION`
66+ -- itself, so NOTHING else in the lib touches it. Two things follow:
67+ -- * audio.cpp includes it as a BARE `"miniaudio.h"` (upstream adds
68+ -- `EUI_MINIAUDIO_DIR` = `3rd/` as a PRIVATE include dir), so `*/3rd` must
69+ -- be on this package's include path — see private_include_dirs below.
70+ -- PUBLISHED headers stay clean: `core/audio/audio.h` hides miniaudio
71+ -- behind a pimpl, so consumers must not inherit the raw `3rd/` path
72+ -- (it would expose bare stb_image.h/nanosvg.h and shadow real index
73+ -- packages for every consumer TU).
74+ -- * miniaudio links something on every platform (upstream: `${CMAKE_DL_LIBS}
75+ -- m` PUBLIC on Linux, CoreAudio+AudioToolbox+CoreFoundation on macOS,
76+ -- nothing on Windows — the WASAPI backend is dlopen-bound at runtime).
77+ -- Everything else this release moves is app- or CMake-level: the
78+ -- EUI_ENABLE_MODULES default, an INTERFACE `EUI_DEBUG_BUILD=1` tied to the
79+ -- Debug CONFIG, promo/vcd_viewer example targets, and Chinese re-commenting
80+ -- of tray_bridge.c (diff vs 0.5.9: comments + EOF newline only). `3rd/`,
81+ -- deps and the backend/app-main source lists are unchanged.
82+ --
5983-- All `mcpp` paths are GLOBS relative to the verdir; the leading `*/` absorbs
60- -- the GitHub tarball's `EUI-NEO-0.5.9 /` wrap layer.
84+ -- the GitHub tarball's `EUI-NEO-0.6.0 /` wrap layer.
6185package = {
6286 spec = " 1" ,
6387 namespace = " compat" ,
@@ -155,6 +179,14 @@ package = {
155179 url = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.5.9.tar.gz" ,
156180 sha256 = " 370d1da706d94bbbb144fa1634e1d9796a8a1ffd58b696fbb801296aef15703d" ,
157181 },
182+ -- 0.6.0 has no CN mirror yet (never published to mcpp-res), so it
183+ -- is a plain-string GLOBAL url — check_mirror_urls.lua exempts
184+ -- plain strings, and the maintainer flips it to { GLOBAL, CN }
185+ -- when the mirror lands.
186+ [" 0.6.0" ] = {
187+ url = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.6.0.tar.gz" ,
188+ sha256 = " 11d0725bcc6f16abbbea6052b58c6949008cf78ceaa1645002ba1b3abf9772a1" ,
189+ },
158190 },
159191 macosx = {
160192 [" 0.5.3" ] = {
@@ -197,6 +229,11 @@ package = {
197229 url = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.5.9.tar.gz" ,
198230 sha256 = " 370d1da706d94bbbb144fa1634e1d9796a8a1ffd58b696fbb801296aef15703d" ,
199231 },
232+ -- 0.6.0: see the linux block — plain-string GLOBAL, no CN mirror.
233+ [" 0.6.0" ] = {
234+ url = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.6.0.tar.gz" ,
235+ sha256 = " 11d0725bcc6f16abbbea6052b58c6949008cf78ceaa1645002ba1b3abf9772a1" ,
236+ },
200237 },
201238 windows = {
202239 [" 0.5.3" ] = {
@@ -239,6 +276,11 @@ package = {
239276 url = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.5.9.tar.gz" ,
240277 sha256 = " 370d1da706d94bbbb144fa1634e1d9796a8a1ffd58b696fbb801296aef15703d" ,
241278 },
279+ -- 0.6.0: see the linux block — plain-string GLOBAL, no CN mirror.
280+ [" 0.6.0" ] = {
281+ url = " https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.6.0.tar.gz" ,
282+ sha256 = " 11d0725bcc6f16abbbea6052b58c6949008cf78ceaa1645002ba1b3abf9772a1" ,
283+ },
242284 },
243285 },
244286
@@ -250,6 +292,21 @@ package = {
250292 -- `*/include` carries the umbrella `eui_neo.h` and `eui/*.h`; `*` is the
251293 -- verdir root, which is what makes the `"components/…"`, `"core/…"` and
252294 -- `"3rd/stb_image.h"` quoted includes resolve. Upstream marks both PUBLIC.
295+ -- `*/3rd` is added to the PRIVATE include set of every platform block
296+ -- below (0.6.0: audio.cpp includes the vendored `3rd/miniaudio.h` by
297+ -- BARE name — see the header comment). Not here: a BASE-level
298+ -- `private_include_dirs` is inert — measured, not assumed. The first
299+ -- revision of this 0.6.0 change carried it and audio.cpp's dependency
300+ -- scan failed with `'miniaudio.h' file not found` while every base
301+ -- `include_dirs` entry took effect normally. The proven shape is the
302+ -- glib pair below: `include_dirs` + `private_include_dirs` in the
303+ -- PLATFORM block, which yields the -I on this package's own TUs and
304+ -- NOT on consumers' (verified in emitted compile_commands), matching
305+ -- upstream's `target_include_directories(eui_neo PRIVATE …)`.
306+ -- Publishing `*/3rd` would hand every consumer a search path holding
307+ -- bare stb_image.h/nanosvg.h/miniaudio.h and shadowed copies of the
308+ -- index packages vendored under 3rd/; `core/audio/audio.h` is a pimpl
309+ -- header that never mentions miniaudio, so nothing needs it publicly.
253310 include_dirs = { " */include" , " *" , " mcpp_generated" },
254311
255312 -- mcpp#233/#240: every package in a link emits its objects into ONE
@@ -332,6 +389,11 @@ package = {
332389 -- its own TU (upstream CORE_SOURCES). GLFW branch rides on ime_bridge.h
333390 -- (ime_bridge.c, already compiled) + glfw; SDL2 branch needs only SDL.
334391 " */core/window/window_input_backend.cpp" ,
392+ -- 0.6.0: streaming audio via the vendored single-header miniaudio
393+ -- (MINIAUDIO_IMPLEMENTATION lives in this TU). Needs `*/3rd` on the
394+ -- include path — see private_include_dirs — and per-platform link
395+ -- additions — see the platform blocks.
396+ " */core/audio/audio.cpp" ,
335397 },
336398
337399 targets = { [" eui-neo" ] = { kind = " lib" } },
@@ -538,6 +600,12 @@ package = {
538600 -- upstream; until then this keeps us on a real upstream release
539601 -- tag rather than a fork carrying the patch.
540602 cxxflags = { " -DEUI_TRAY_WINAPI=1" , " -DNOMINMAX" , " -D_WIN32_WINNT=0x0A00" },
603+ -- 0.6.0: audio.cpp's bare `#include "miniaudio.h"` — the same
604+ -- platform-level pair the linux leg proves (see the note above
605+ -- the base include_dirs). No link addition is needed on Windows:
606+ -- miniaudio's WASAPI backend binds its APIs at runtime.
607+ include_dirs = { " */3rd" },
608+ private_include_dirs = { " */3rd" },
541609 -- Upstream lists winmm/urlmon/shell32/user32/imm32/pdh and stops
542610 -- there, because CMake's MSVC default `CMAKE_C_STANDARD_LIBRARIES`
543611 -- already drags in kernel32/user32/gdi32/shell32/ole32/comdlg32/…
@@ -570,7 +638,17 @@ package = {
570638 -- bridge files; the AppKit tray path is Cocoa-native and never
571639 -- includes tray.h.
572640 cflags = { " -DEUI_TRAY_APPKIT=1" },
573- ldflags = { " -framework" , " Cocoa" , " -lobjc" },
641+ -- 0.6.0: audio.cpp's bare `#include "miniaudio.h"` — the same
642+ -- platform-level pair the linux leg proves. See the note above
643+ -- the base include_dirs for why BASE-level private_include_dirs
644+ -- does not work.
645+ include_dirs = { " */3rd" },
646+ private_include_dirs = { " */3rd" },
647+ -- 0.6.0: the three audio frameworks upstream links PUBLIC for
648+ -- miniaudio's CoreAudio backend.
649+ ldflags = { " -framework" , " Cocoa" , " -lobjc" ,
650+ " -framework" , " CoreAudio" , " -framework" , " AudioToolbox" ,
651+ " -framework" , " CoreFoundation" },
574652 flags = {
575653 { glob = " */core/platform/native_bridge.c" , cflags = { " -x" , " objective-c" } },
576654 { glob = " */core/platform/tray_bridge.c" , cflags = { " -x" , " objective-c" } },
@@ -631,16 +709,22 @@ package = {
631709 -- Where install() put glib. PRIVATE: `<gio/gio.h>` is included by
632710 -- tray_bridge.c and by nothing this package publishes, so a
633711 -- consumer must not inherit a glib header search path.
634- include_dirs = { " mcpp_generated/glib/include/glib-2.0" },
635- private_include_dirs = { " mcpp_generated/glib/include/glib-2.0" },
712+ -- `*/3rd` joins for 0.6.0 (audio.cpp's bare `"miniaudio.h"` — see
713+ -- the note above the base include_dirs): package-side only, same
714+ -- proven pairing as the glib path.
715+ include_dirs = { " mcpp_generated/glib/include/glib-2.0" , " */3rd" },
716+ private_include_dirs = { " mcpp_generated/glib/include/glib-2.0" , " */3rd" },
636717 -- ⚠️ THE EXPLICIT `-L` IS NOT REDUNDANT WITH `runtime.library_dirs`
637718 -- BELOW. That key becomes `-Wl,-rpath` only — it tells the LOADER
638719 -- where to look, not the LINKER. lld happens to search rpath and
639720 -- would hide this; GNU ld does not, and `-lglib-2.0` then falls
640721 -- through to whatever the host has (or to nothing).
641722 --
642- -- `-ldl` is glad's CMAKE_DL_LIBS.
643- ldflags = { " -lpthread" , " -ldl" ,
723+ -- `-ldl` is glad's CMAKE_DL_LIBS; `-lm` joins for 0.6.0, where
724+ -- upstream adds `${CMAKE_DL_LIBS} m` PUBLIC for miniaudio's ALSA
725+ -- backend. (Linking libm is not staging it — the forbidden list
726+ -- below is about payload RUNPATH contents.)
727+ ldflags = { " -lpthread" , " -ldl" , " -lm" ,
644728 " -Lmcpp_generated/glib/lib" ,
645729 " -lgio-2.0" , " -lgobject-2.0" , " -lglib-2.0" },
646730 runtime = {
0 commit comments