On Fri, Dec 23, 2022 at 06:27:07AM +0100, Markus Armbruster wrote: > "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.
Yes and it's annoying for developers too. Do we want to come up with a scheme for target-dependent files? Name them target-X or put in a target/ directory? We could also write checkpatch rules to disallow including target specific headers in target independent files then. > The other problem, of course, is coding it up in Meson. I haven't even > tried.