-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmcpp.toml
More file actions
48 lines (48 loc) · 2.41 KB
/
Copy pathmcpp.toml
File metadata and controls
48 lines (48 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
# wayland — Wayland with mcpp build support.
#
# LAYOUT: upstream/ is wayland 1.26.0 verbatim and is never touched — updating it
# is replacing that one directory. Everything this fork adds is under mcpp/,
# including the two headers upstream's meson would generate (config.h and
# include/wayland-version.h), so `git diff` against a fresh tarball is empty
# inside upstream/ by construction.
#
# WHY A FORK RATHER THAN AN INLINE INDEX DESCRIPTOR
#
# wayland's libraries are mostly GENERATED. protocol/wayland.xml describes every
# interface, and wayland-scanner — a C program in this same tree — emits ~12,000
# lines of marshalling code and headers from it. An mcpp-index descriptor cannot
# express that: it has no build step, and the generator has to be COMPILED before
# it can run, so an install() hook cannot do it either (mcpp compiles a package's
# sources at consumer-build time, so no package binary exists during install).
#
# `build.mcpp` is exactly the mechanism for this, and it only exists for a real
# mcpp project. Same reason mcpplibs/grpc-m exists.
#
# WHY THREE MEMBERS
#
# `libwayland-client.so.0` and `libwayland-server.so.0` are distinct SONAMEs and
# Mesa's libEGL_mesa has DT_NEEDED on both, so they must be two files with
# disjoint contents. mcpp compiles a package's sources once and links every
# library target against all of them — there is no per-target source list, and a
# feature-gated target still receives the feature's sources in BOTH libraries
# (measured). mcpp's own diagnostic names the remedy: "for config that must
# affect shared code, split into a workspace member".
[workspace]
members = [
"mcpp/scanner",
"mcpp/util",
"mcpp/client",
"mcpp/server",
# The client's other half. A Wayland program that draws with the GPU needs
# `wl_egl_window_create` to turn a wl_surface into something EGL can render
# into, and it exists nowhere else — so without this member "Wayland client
# + EGL" is not expressible at all. It went missing because the first four
# cover what a COMPOSITOR needs, and a compositor renders into GBM buffers
# instead.
"mcpp/egl",
# The pointer image. Wayland has no server-side cursor, so a client that
# wants one loads a theme itself — and without this member that means
# parsing the XCursor file format by hand. Missing for the same reason
# mcpp/egl was: a compositor draws its own cursor and never asks.
"mcpp/cursor",
]