|
| 1 | +-- freedesktop.glesv1 — libGLESv1_CM.so.1, plus `import khronos.glesv1;`. |
| 2 | +-- |
| 3 | +-- OpenGL ES 1.x (common profile) dispatched through GLVND. This is the half that was missing: with |
| 4 | +-- `freedesktop.egl` a project could reach `eglInitialize` and then had no GL |
| 5 | +-- to call. A Wayland compositor takes its context through EGL and draws with |
| 6 | +-- GLES2, so without this the render chain stopped one step short. |
| 7 | +-- |
| 8 | +-- ───────────────────────────────────────────────────────────────────────── |
| 9 | +-- SHAPE: a source build, out of the same fork as freedesktop.egl |
| 10 | +-- |
| 11 | +-- Same criterion, same fork, same reasoning as that package: libglvnd is a |
| 12 | +-- separable project, so it is built rather than bound. `libGLdispatch.so.0` |
| 13 | +-- comes from a sibling workspace member by PATH — being the ONE dispatch point |
| 14 | +-- in a process is what GLVND exists for, and every GL entry point in this |
| 15 | +-- library routes through it, so the two must be one build. |
| 16 | +-- |
| 17 | +-- The ecosystem payload `xim:libglvnd` ships the same soname, and binding it |
| 18 | +-- instead would work by soname reuse — measured. It is still a source build, |
| 19 | +-- because a payload library carries a DT_NEEDED on `libGLdispatch.so.0` and |
| 20 | +-- would then be dispatching through a DIFFERENT build of GLVND than the one |
| 21 | +-- this index provides, with only `__glDispatchGetABIVersion` between that and |
| 22 | +-- a runtime failure. |
| 23 | +-- |
| 24 | +-- For this library the payload is not even an option: `xim:libglvnd` ships |
| 25 | +-- libEGL, libGLdispatch, libGLESv2, libGL, libGLX and libOpenGL — and no |
| 26 | +-- libGLESv1_CM. This package is new capability, not a re-packaging. |
| 27 | +-- |
| 28 | +-- ───────────────────────────────────────────────────────────────────────── |
| 29 | +-- THE MODULE IS NAMED FOR THE SPECIFICATION |
| 30 | +-- |
| 31 | +-- `khronos.glesv1`, not `freedesktop.glesv1`, and the package/module mismatch is |
| 32 | +-- deliberate: freedesktop hosts libglvnd, but OpenGL ES 1.x (common profile) is a **Khronos** |
| 33 | +-- specification with several implementations. A module name is global and |
| 34 | +-- permanent in a way a package name is not, so it names the INTERFACE's owner. |
| 35 | +-- Same rule as `khronos.egl`; `mcpplibs.openkal` paid for it (its 0.1.0 was |
| 36 | +-- withdrawn for putting the imported module under the implementation's |
| 37 | +-- control). |
| 38 | +-- |
| 39 | +-- THE EXPORT LIST IS THE HEADER INTERSECTED WITH THE LIBRARY, generated by the |
| 40 | +-- fork's `mcpp/tools/genglmod.sh` and diffed by its CI. A header can declare |
| 41 | +-- more than its library dispatches, so exporting the header wholesale would |
| 42 | +-- put names in the module that do not link. |
| 43 | +-- |
| 44 | +-- The `GL_*` CONSTANTS are macros and no module can export a macro: include |
| 45 | +-- the same header beside the import when you need `GL_COLOR_BUFFER_BIT`. |
| 46 | +package = { |
| 47 | + spec = "1", |
| 48 | + namespace = "freedesktop", |
| 49 | + name = "glesv1", |
| 50 | + description = "libGLESv1_CM.so.1 — OpenGL ES 1.x (common profile) through GLVND, built from source, with a C++23 module", |
| 51 | + licenses = {"MIT"}, |
| 52 | + repo = "https://github.com/mcpplibs/libglvnd", |
| 53 | + type = "package", |
| 54 | + |
| 55 | + xpm = { |
| 56 | + linux = { |
| 57 | + -- libglvnd's version, as with freedesktop.egl: what a consumer |
| 58 | + -- pins is which libglvnd it links, not which GL spec level. |
| 59 | + ["1.7.0"] = { |
| 60 | + url = { |
| 61 | + GLOBAL = "https://github.com/mcpplibs/libglvnd/archive/refs/tags/v1.7.0.tar.gz", |
| 62 | + CN = "https://gitcode.com/mcpp-res/libglvnd/releases/download/1.7.0/libglvnd-1.7.0.tar.gz", |
| 63 | + }, |
| 64 | + sha256 = "11347b0ffffbcb9ca51cd3941dff9ef923b21bb1e9469f3e5cff42ed487bf77d", |
| 65 | + }, |
| 66 | + }, |
| 67 | + }, |
| 68 | + |
| 69 | + mcpp = "*/mcpp/glesv1/mcpp.toml", |
| 70 | +} |
0 commit comments