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