aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2020-11-17 13:11:25 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2021-01-06 10:21:19 +0100
commitfabd1e93d93ef90ddf8574a42aee406314cc47c4 (patch)
treeaf665b45e4ce8267a3ae988ab56e0a14e57f7f0f
parent30045c054ff896103a37c54aa473ca80f4ab1b67 (diff)
rbd: convert to meson
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rwxr-xr-xconfigure34
-rw-r--r--meson.build22
-rw-r--r--meson_options.txt2
3 files changed, 25 insertions, 33 deletions
diff --git a/configure b/configure
index 1d31121402..1904734259 100755
--- a/configure
+++ b/configure
@@ -383,7 +383,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"
@@ -1285,9 +1285,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
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
-
-##########################################
# libssh probe
if test "$libssh" != "no" ; then
if $pkg_config --exists libssh; then
@@ -6215,10 +6192,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
@@ -6768,6 +6741,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\
+ -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 e1f922f073..f844fc51ab 100644
--- a/meson.build
+++ b/meson.build
@@ -616,9 +616,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
@@ -937,6 +952,7 @@ if glusterfs.found()
endif
config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
config_host_data.set('CONFIG_LIBNFS', libnfs.found())
+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)
@@ -2287,7 +2303,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 4535bc4dc2..7c8d70a7e2 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -62,6 +62,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',