Re: [PATCH v3 01/10] build: add optional librpmi dependency

Daniel Henrique Barboza <[email protected]>
Newsgroups org.nongnu.qemu-riscv,org.nongnu.qemu-devel
Message-ID <[email protected]>

On 7/14/2026 4:56 AM, Subrahmanya Lingappa wrote:
> Add a meson option and config probe for librpmi so RISC-V machines can
> opt into RPMI support when the library is available. Keep the dependency
> optional so default builds without librpmi continue to work.
> 
> Signed-off-by: Subrahmanya Lingappa <[email protected]>
> ---

Reviewed-by: Daniel Henrique Barboza <[email protected]>

>   Kconfig.host                  |  3 +++
>   meson.build                   | 14 ++++++++++++++
>   meson_options.txt             |  2 ++
>   scripts/meson-buildoptions.sh |  3 +++
>   4 files changed, 22 insertions(+)
> 
> diff --git a/Kconfig.host b/Kconfig.host
> index 933425c74b..6f98dadb2e 100644
> --- a/Kconfig.host
> +++ b/Kconfig.host
> @@ -8,6 +8,9 @@ config LINUX
>   config LIBCBOR
>       bool
>   
> +config LIBRPMI
> +    bool
> +
>   config GNUTLS
>       bool
>   
> diff --git a/meson.build b/meson.build
> index 19e123423b..103b4649b8 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2005,6 +2005,17 @@ if lzo.found() and not cc.links('''
>     endif
>   endif
>   
> +librpmi = not_found
> +if not get_option('librpmi').auto() or have_system
> +  librpmi = dependency('librpmi', required: get_option('librpmi'),
> +                       method: 'pkg-config')
> +  if librpmi.found() and not cc.has_header_symbol('librpmi.h',
> +                                                  'rpmi_service_group_logging_create',
> +                                                  dependencies: librpmi)
> +    error('librpmi support requires the RPMI logging service group API')
> +  endif
> +endif
> +
>   numa = not_found
>   if not get_option('numa').auto() or have_system or have_tools
>     numa = cc.find_library('numa', has_headers: ['numa.h'],
> @@ -2427,6 +2438,7 @@ config_host_data.set('CONFIG_LINUX', host_os == 'linux')
>   config_host_data.set('CONFIG_POSIX', host_os != 'windows')
>   config_host_data.set('CONFIG_WIN32', host_os == 'windows')
>   config_host_data.set('CONFIG_LZO', lzo.found())
> +config_host_data.set('CONFIG_LIBRPMI', librpmi.found())
>   config_host_data.set('CONFIG_MPATH', mpathpersist.found())
>   config_host_data.set('CONFIG_BLKIO', blkio.found())
>   if blkio.found()
> @@ -3258,6 +3270,7 @@ host_kconfig = \
>     (multiprocess_allowed ? ['CONFIG_MULTIPROCESS_ALLOWED=y'] : []) + \
>     (vfio_user_server_allowed ? ['CONFIG_VFIO_USER_SERVER_ALLOWED=y'] : []) + \
>     (hv_balloon ? ['CONFIG_HV_BALLOON_POSSIBLE=y'] : []) + \
> +  (librpmi.found() ? ['CONFIG_LIBRPMI=y'] : []) + \
>     (have_rust ? ['CONFIG_HAVE_RUST=y'] : [])
>   
>   ignored = [ 'TARGET_XML_FILES', 'TARGET_ABI_DIR' ]
> @@ -4971,6 +4984,7 @@ summary_info += {'TPM support':       have_tpm}
>   summary_info += {'IGVM support':      igvm}
>   summary_info += {'libssh support':    libssh}
>   summary_info += {'lzo support':       lzo}
> +summary_info += {'librpmi support':   librpmi}
>   summary_info += {'snappy support':    snappy}
>   summary_info += {'bzip2 support':     libbzip2}
>   summary_info += {'lzfse support':     liblzfse}
> diff --git a/meson_options.txt b/meson_options.txt
> index a07cb47d35..9f773a7886 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -204,6 +204,8 @@ option('lzfse', type : 'feature', value : 'auto',
>          description: 'lzfse support for DMG images')
>   option('lzo', type : 'feature', value : 'auto',
>          description: 'lzo compression support')
> +option('librpmi', type : 'feature', value : 'auto',
> +       description: 'RISC-V RPMI support')
>   option('pvg', type: 'feature', value: 'auto',
>          description: 'macOS paravirtualized graphics support')
>   option('rbd', type : 'feature', value : 'auto',
> diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
> index c003985047..e8a20068e7 100644
> --- a/scripts/meson-buildoptions.sh
> +++ b/scripts/meson-buildoptions.sh
> @@ -140,6 +140,7 @@ meson_options_help() {
>     printf "%s\n" '  libkeyutils     Linux keyutils support'
>     printf "%s\n" '  libnfs          libnfs block device driver'
>     printf "%s\n" '  libpmem         libpmem support'
> +  printf "%s\n" '  librpmi         RISC-V RPMI support'
>     printf "%s\n" '  libssh          ssh block device support'
>     printf "%s\n" '  libudev         Use libudev to enumerate host devices'
>     printf "%s\n" '  libusb          libusb support for USB passthrough'
> @@ -376,6 +377,8 @@ _meson_option_parse() {
>       --disable-libnfs) printf "%s" -Dlibnfs=disabled ;;
>       --enable-libpmem) printf "%s" -Dlibpmem=enabled ;;
>       --disable-libpmem) printf "%s" -Dlibpmem=disabled ;;
> +    --enable-librpmi) printf "%s" -Dlibrpmi=enabled ;;
> +    --disable-librpmi) printf "%s" -Dlibrpmi=disabled ;;
>       --enable-libssh) printf "%s" -Dlibssh=enabled ;;
>       --disable-libssh) printf "%s" -Dlibssh=disabled ;;
>       --enable-libudev) printf "%s" -Dlibudev=enabled ;;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.