On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonz...@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com>

---
>  configure         | 35 ++++-------------------------------
>  meson.build       | 22 +++++++++++++++++++---
>  meson_options.txt |  2 ++
>  3 files changed, 25 insertions(+), 34 deletions(-)
>
> diff --git a/configure b/configure
> index f3271381f1..e34885d505 100755
> --- a/configure
> +++ b/configure
> @@ -384,7 +384,7 @@ qom_cast_debug="yes"
>  trace_backends="log"
>  trace_file="trace"
>  spice="$default_feature"
> -rbd="$default_feature"
> +rbd="auto"
>  smartcard="$default_feature"
>  u2f="auto"
>  libusb="$default_feature"
> @@ -1286,9 +1286,9 @@ for opt do
>    ;;
>    --enable-opengl) opengl="yes"
>    ;;
> -  --disable-rbd) rbd="no"
> +  --disable-rbd) rbd="disabled"
>    ;;
> -  --enable-rbd) rbd="yes"
> +  --enable-rbd) rbd="enabled"
>    ;;
>    --disable-xfsctl) xfs="no"
>    ;;
> @@ -3607,29 +3607,6 @@ if compile_prog "" "$pthread_lib" ; then
>    pthread_setname_np_wo_tid=yes
>  fi
>
> -##########################################
> -# rbd probe
> -if test "$rbd" != "no" ; then
> -  cat > $TMPC <<EOF
> -#include <stdio.h>
> -#include <rbd/librbd.h>
> -int main(void) {
> -    rados_t cluster;
> -    rados_create(&cluster, NULL);
> -    return 0;
> -}
> -EOF
> -  rbd_libs="-lrbd -lrados"
> -  if compile_prog "" "$rbd_libs" ; then
> -    rbd=yes
> -  else
> -    if test "$rbd" = "yes" ; then
> -      feature_not_found "rados block device" "Install librbd/ceph devel"
> -    fi
> -    rbd=no
> -  fi
> -fi
> -
>  ##########################################
>  # linux-aio probe
>
> @@ -6184,10 +6161,6 @@ fi
>  if test "$qom_cast_debug" = "yes" ; then
>    echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
>  fi
> -if test "$rbd" = "yes" ; then
> -  echo "CONFIG_RBD=y" >> $config_host_mak
> -  echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
> -fi
>
>  echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
>  if test "$coroutine_pool" = "yes" ; then
> @@ -6726,7 +6699,7 @@ NINJA=$ninja $meson setup \
>          -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
> -        -Dlibssh=$libssh \
> +        -Dlibssh=$libssh -Drbd=$rbd \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 2d6660aa46..6fa80e2d7e 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -612,9 +612,24 @@ else
>  endif
>
>  rbd = not_found
> -if 'CONFIG_RBD' in config_host
> -  rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
> +if not get_option('rbd').auto() or have_block
> +  librados = cc.find_library('rados', required: get_option('rbd'),
> +                             static: enable_static)
> +  librbd = cc.find_library('rbd', has_headers: ['rbd/librbd.h'],
> +                           required: get_option('rbd'),
> +                           static: enable_static)
> +  if librados.found() and librbd.found() and cc.links('''
> +    #include <stdio.h>
> +    #include <rbd/librbd.h>
> +    int main(void) {
> +      rados_t cluster;
> +      rados_create(&cluster, NULL);
> +      return 0;
> +    }''', dependencies: [librbd, librados])
> +    rbd = declare_dependency(dependencies: [librbd, librados])
> +  endif
>  endif
> +
>  glusterfs = not_found
>  glusterfs_ftruncate_has_stat = false
>  glusterfs_iocb_has_stat = false
> @@ -941,6 +956,7 @@ config_host_data.set('CONFIG_LIBISCSI',
> libiscsi.found())
>  config_host_data.set('CONFIG_LIBNFS', libnfs.found())
>  config_host_data.set('CONFIG_LIBSSH', libssh.found())
>  config_host_data.set('HAVE_LIBSSH_0_8', have_libssh_0_8)
> +config_host_data.set('CONFIG_RBD', rbd.found())
>  config_host_data.set('CONFIG_SDL', sdl.found())
>  config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
>  config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER',
> have_vhost_user_blk_server)
> @@ -2290,7 +2306,7 @@ if
> config_host['TRACE_BACKENDS'].split().contains('simple')
>  endif
>  # TODO: add back protocol and server version
>  summary_info += {'spice support':     config_host.has_key('CONFIG_SPICE')}
> -summary_info += {'rbd support':       config_host.has_key('CONFIG_RBD')}
> +summary_info += {'rbd support':       rbd.found()}
>  summary_info += {'xfsctl support':    config_host.has_key('CONFIG_XFS')}
>  summary_info += {'smartcard support':
> config_host.has_key('CONFIG_SMARTCARD')}
>  summary_info += {'U2F support':       u2f.found()}
> diff --git a/meson_options.txt b/meson_options.txt
> index 6466dc67f6..630c9dceb7 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -64,6 +64,8 @@ option('curses', type : 'feature', value : 'auto',
>         description: 'curses UI')
>  option('libudev', type : 'feature', value : 'auto',
>         description: 'Use libudev to enumerate host devices')
> +option('rbd', type : 'feature', value : 'auto',
> +       description: 'Ceph block device driver')
>  option('sdl', type : 'feature', value : 'auto',
>         description: 'SDL user interface')
>  option('sdl_image', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

Reply via email to