On 12/4/18 9:32 AM, Marc-André Lureau wrote:
>>> +++ b/scripts/qapi/types.py
>>> @@ -201,6 +201,7 @@ class QAPISchemaGenTypeVisitor(QAPISchemaModularCVisitor):
>>> ''',
>>> types=types, visit=visit))
>>> self._genh.preamble_add(mcgen('''
>>> +#include "qemu/osdep.h"
>>> #include "qapi/qapi-builtin-types.h"
>>> '''))
>>
>> No. Every .c must include qemu/osdep.h first. No .h may include it.
>> We clean this up periodically. scripts/clean-includes can help with
>> that. We currently have a few offenders in the tree.
>
> Ok, I don't know the reason an internal header couldn't include osdep,
> could you explain?
Per HACKING:
>> Do not include "qemu/osdep.h" from header files since the .c file will have
>> already included it.
That is, if we follow the rule that every .c file included osdep.h
before anything else, then by the time any other internal .h is included
(necessarily second or later) from a .c, then osdep.h is already active,
so no .h needs to reproduce the effort that has already occurred.
>
> I think we can replace osdep.h by config-host.h for the same result,
> I'd have to check.
osdep.h includes config-host.h, so you don't need that either.
What are you really trying to accomplish by including a header from
another header? And why isn't it already happening by our coding rule
that all .c files include osdep.h first?
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org