When I go to build the qemu softmmu target the shared files - the i386_ss
of my arch - gives problems where the build system isn't specifying the
include headers for the compiler to find the surrounding headers that
belong to different parts of the qemu library. I was able to edit my own
source only so much before recursive header dependencies had included their
own respective qemu library components subdirectories, at which point the
build fails with cannot find header. I want to know, are these shared
source set files not supposed to include those qemu subcomponents? Or
resolve a different way for each target using #ifdef guards? I would think
that this would be modularized from within the qemu subcomponent library.
And I think that configure and meson are working together to generate the
correct build commands to these shared components. So I'm unsure what to do.

On Thu, Jul 15, 2021 at 11:39 AM Kenneth Adam Miller <
kennethadammil...@gmail.com> wrote:

> Oh I didn't know that there was a i386_user_ss in order to see that it was
> intended that they were shared that way, so I initially thought that
> i386_ss was user only until I saw it in the build.
>
> On Thu, Jul 15, 2021 at 11:35 AM Peter Maydell <peter.mayd...@linaro.org>
> wrote:
>
>> On Thu, 15 Jul 2021 at 17:25, Kenneth Adam Miller
>> <kennethadammil...@gmail.com> wrote:
>> >
>> > Well certainly, I know they are different executables. I'm just trying
>> to understand how the different targets work.
>> >
>> > By subsumes, I mean that just looking at the meson.build for i386, you
>> can see that there are files added to the i386_ss, but not visibly added to
>> the softmmu target. But the softmmu target has those files built whenever
>> you configure and build it.
>>
>> In the meson.build files, i386_ss is files built for both softmmu and
>> user;
>> i386_user_ss is files built for usermode only; i386_softmmu_ss is files
>> built for softmmu only. target/i386/meson.build sets target_arch,
>> target_softmmu_arch and target_user_arch to these sourcesets.
>> The top level meson.build adds the relevant target_* sourcesets to the
>> set of sources required to build the various executables.
>>
>> Some source files also use #ifdefs: you can look for ifdefs on
>> CONFIG_USER_ONLY and CONFIG_SOFTMMU to find code that's conditionally
>> compiled in different ways for the two executables.
>>
>> -- PMM
>>
>

Reply via email to