"Michael S. Tsirkin" <m...@redhat.com> writes: > On Thu, Dec 22, 2022 at 11:48:25AM +0100, Markus Armbruster wrote: >> Bernhard Beschow <shen...@gmail.com> writes: >> >> > Am 22. Dezember 2022 10:03:23 UTC schrieb Markus Armbruster >> > <arm...@redhat.com>: >> >>Back in 2016, we discussed[1] rules for headers, and these were >> >>generally liked: >> >> >> >>1. Have a carefully curated header that's included everywhere first. We >> >> got that already thanks to Peter: osdep.h. >> >> >> >>2. Headers should normally include everything they need beyond osdep.h. >> >> If exceptions are needed for some reason, they must be documented in >> >> the header. If all that's needed from a header is typedefs, put >> >> those into qemu/typedefs.h instead of including the header. >> >> >> >>3. Cyclic inclusion is forbidden. >> > >> > Sounds like these -- useful and sane -- rules belong in QEMU's coding >> > style. What about putting them there for easy reference? >> >> Makes sense. I'll see what I can do. Thanks! > > It would be even better if there was e.g. a make target > pulling in each header and making sure it's self consistent and > no circularity. We could run it e.g. in CI.
Yes, that would be nice, but the problem I've been unable to crack is deciding whether a header is supposed to compile target-independently or not. In my manual testing, I use trial and error: if it fails to compile target-independently, compile for all targets. This is s-l-o-w. The other problem, of course, is coding it up in Meson. I haven't even tried.