qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: QEMU System and User targets


From: Kenneth Adam Miller
Subject: Re: QEMU System and User targets
Date: Fri, 16 Jul 2021 10:16:44 -0500

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 <kennethadammiller@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.maydell@linaro.org> wrote:
On Thu, 15 Jul 2021 at 17:25, Kenneth Adam Miller
<kennethadammiller@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

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