qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]