[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 00/67] include path cleanup
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 00/67] include path cleanup |
Date: |
Wed, 9 May 2018 12:39:25 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
On 03/05/2018 21:50, Michael S. Tsirkin wrote:
> At the moment during build we have multiple subdirectories of the source
> tree on the search path for include files. This includes source
> directory itself, tcg and accel/tcg subdirectories, target-specific
> source subdirectory and the include subdirectory.
>
> The result is that there are many ways to include each
> specific file, e.g. for a file in the include directory:
>
> #include "dir/foo.h"
> #include "include/dir/foo.h"
>
> (We actually do both).
>
> OTOH local headers can be included with
> #include "foo.h"
> #include "dir/foo.h"
>
> There are also target-specific headers and they are even
> trickier - e.g. try to guess which file does
> #include "cpu.h"
> pull in? The answer actually depends on which target is built.
>
> It is also quite easy to place an external header outside of
> include/ as nothing will catch this misuse.
>
> In an attempt to simplify this situation, this changes the build to look
> for headers in a single directory under the source tree: include/
> (generated files are still spread around a bit, this is left for another
> patchset - and RFC of that I posted earlier).
>
> This way, one can always find any header under include/
> (and sometimes follow from there to another directory).
>
> A nice side effect of this refactoring is that it makes it easy to
> identify external headers which are not under include/.
Yes, this was always the intended usage.
> I decided not to actually move any headers around -
> instead I created small stub files using include_next
> which pull in the original files.
For the RFC is okay, but I think we should at least see which headers
can just get a home in include/ before applying the series. Perhaps we
can add an include-from-topsrcdir/ directory with the #include_next
directives so that the todo list is clear.
> This way we can move the headers gradually - in particular it is often
> benefitial to split a header up with external parts under include and
> internal ones with the source.
I agree.
> Note that it's already benefitial even in this form, since
> - it's now easy to see there is an external header outside include
> that requires work
> - reader can simply look at the header and immediately know
> where to look for it
>
> Target specific files are pulled in using preprocessor which is still
> tricky but arguably easier to understand than makefile tricks.
Another possibility is to directories like include/target/<XXX>, or
target/<XXX>/include/.
Paolo
- Re: [Qemu-devel] [PATCH 64/67] target/s390x: add include directory header, (continued)
- [Qemu-devel] [PATCH 65/67] tcg: use include "translate-all.h" consistently, Michael S. Tsirkin, 2018/05/03
- [Qemu-devel] [PATCH 66/67] linux-user: add include directory header, Michael S. Tsirkin, 2018/05/03
- [Qemu-devel] [PATCH 67/67] make: simplify source include path, Michael S. Tsirkin, 2018/05/03
- Re: [Qemu-devel] [PATCH 00/67] include path cleanup, no-reply, 2018/05/03
- Re: [Qemu-devel] [PATCH 00/67] include path cleanup, no-reply, 2018/05/03
- Re: [Qemu-devel] [PATCH 00/67] include path cleanup, no-reply, 2018/05/03
- Re: [Qemu-devel] [PATCH 00/67] include path cleanup, no-reply, 2018/05/03
- Re: [Qemu-devel] [PATCH 00/67] include path cleanup,
Paolo Bonzini <=