blob: ee1827885dc35bf24134f88dc295e58262d3a25d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
Use when a unit needs a Wayland protocol whose codegen is not yet wired into this repo.
---
# /add-protocol — wayland-scanner codegen checklist
1. **Source the XML.** Prefer the system `wayland-protocols` package
(`pkg-config --variable=pkgdatadir wayland-protocols`). Vendor XML into
`protocol/` ONLY for protocols not shipped there (e.g. wlr-protocols
extras like wlr-layer-shell).
2. **Codegen in Meson.** Add the `wayland-scanner` `custom_target` pair —
`private-code` + `server-header` — following the existing pattern in the
kernel's `meson.build`. One pair per protocol, named consistently.
3. **Containment.** Generated headers are C: include them ONLY inside the
owning unit's glue, wrapped the same way as wlroots includes (see
`.unbox/rules/wlroots-include.md`). Protocol types NEVER cross a unit
boundary — expose the capability through a typed contract in the owning
unit's public header instead.
4. **Prove ordering.** One clean full build (`rm -rf build && meson setup
build && ninja -C build`) to verify codegen dependency ordering, then
back to per-unit targets.
5. **Glossary.** If the protocol introduces a user-visible concept, its
canonical name goes through the glossary flow (user sign-off).
|