mbox series

[0/2] rust: Kconfig: factor out Rust vs C impl choice

Message ID 20250319193110.1565578-1-peter.maydell@linaro.org
Headers show
Series rust: Kconfig: factor out Rust vs C impl choice | expand

Message

Peter Maydell March 19, 2025, 7:31 p.m. UTC
This patchset fixes a compilation failure if CONFIG_VMAPPLE is
enabled in a Rust build, which happens because hw/vmapple/Kconfig
didn't have the "pick the Rust PL011 if Rust is enabled" logic in it.
Rather than just adding that to yet another PL011-using board
model, this patchset refactors how we handle devices which have
both a Rust and C implementation in Kconfig:
 * CONFIG_PL011 is "do we have/want a PL011 of some kind"
 * CONFIG_PL011_C is the C impl
 * CONFIG_X_PL011_RUST is the rust impl
 * selecting CONFIG_PL011 pulls in one impl or the other
   depending on whether the build has Rust enabled or not

For the PL011, this lets us drop a lot of duplicate logic
in Kconfig files for boards; for HPET this simplifies
places in code that have ifdefs for "do we have an HPET?".

NB: I think this should be OK but haven't been able to do
complete testing because currently in head-of-git
"make check-functional" doesn't pass for arm with Rust
enabled due to a different issue.

thanks
-- PMM

Peter Maydell (2):
  rust: Kconfig: Factor out whether PL011 is Rust or C
  rust: Kconfig: Factor out whether HPET is Rust or C

 configs/devices/i386-softmmu/default.mak |  1 -
 hw/i386/fw_cfg.c                         |  2 +-
 hw/i386/pc.c                             |  2 +-
 hw/arm/Kconfig                           | 30 ++++++++----------------
 hw/char/Kconfig                          |  6 +++++
 hw/char/meson.build                      |  2 +-
 hw/timer/Kconfig                         |  8 ++++++-
 hw/timer/meson.build                     |  2 +-
 rust/hw/timer/Kconfig                    |  1 -
 tests/qtest/meson.build                  |  3 +--
 10 files changed, 28 insertions(+), 29 deletions(-)