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, 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