aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure102
-rw-r--r--meson.build48
-rw-r--r--meson_options.txt2
3 files changed, 50 insertions, 102 deletions
diff --git a/configure b/configure
index eb87adb1c4..9900f61f15 100755
--- a/configure
+++ b/configure
@@ -414,13 +414,7 @@ crypto_afalg="no"
cfi="false"
cfi_debug="false"
seccomp="$default_feature"
-glusterfs="$default_feature"
-glusterfs_xlator_opt="no"
-glusterfs_discard="no"
-glusterfs_fallocate="no"
-glusterfs_zerofill="no"
-glusterfs_ftruncate_has_stat="no"
-glusterfs_iocb_has_stat="no"
+glusterfs="auto"
gtk="$default_feature"
gtk_gl="no"
tls_priority="NORMAL"
@@ -1365,7 +1359,7 @@ for opt do
;;
--disable-seccomp) seccomp="no"
;;
- --disable-glusterfs) glusterfs="no"
+ --disable-glusterfs) glusterfs="disabled"
;;
--disable-avx2) avx2_opt="no"
;;
@@ -1376,7 +1370,7 @@ for opt do
--enable-avx512f) avx512f_opt="yes"
;;
- --enable-glusterfs) glusterfs="yes"
+ --enable-glusterfs) glusterfs="enabled"
;;
--disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
@@ -3870,64 +3864,6 @@ if test "$libxml2" != "no" ; then
fi
fi
-##########################################
-# glusterfs probe
-if test "$glusterfs" != "no" ; then
- if $pkg_config --atleast-version=3 glusterfs-api; then
- glusterfs="yes"
- glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
- glusterfs_libs=$($pkg_config --libs glusterfs-api)
- if $pkg_config --atleast-version=4 glusterfs-api; then
- glusterfs_xlator_opt="yes"
- fi
- if $pkg_config --atleast-version=5 glusterfs-api; then
- glusterfs_discard="yes"
- fi
- if $pkg_config --atleast-version=6 glusterfs-api; then
- glusterfs_fallocate="yes"
- glusterfs_zerofill="yes"
- fi
- cat > $TMPC << EOF
-#include <glusterfs/api/glfs.h>
-
-int
-main(void)
-{
- /* new glfs_ftruncate() passes two additional args */
- return glfs_ftruncate(NULL, 0, NULL, NULL);
-}
-EOF
- if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
- glusterfs_ftruncate_has_stat="yes"
- fi
- cat > $TMPC << EOF
-#include <glusterfs/api/glfs.h>
-
-/* new glfs_io_cbk() passes two additional glfs_stat structs */
-static void
-glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data)
-{}
-
-int
-main(void)
-{
- glfs_io_cbk iocb = &glusterfs_iocb;
- iocb(NULL, 0 , NULL, NULL, NULL);
- return 0;
-}
-EOF
- if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
- glusterfs_iocb_has_stat="yes"
- fi
- else
- if test "$glusterfs" = "yes" ; then
- feature_not_found "GlusterFS backend support" \
- "Install glusterfs-api devel >= 3"
- fi
- glusterfs="no"
- fi
-fi
-
# Check for inotify functions when we are building linux-user
# emulator. This is done because older glibc versions don't
# have syscall stubs for these implemented. In that case we
@@ -6414,36 +6350,6 @@ if test "$getauxval" = "yes" ; then
echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
fi
-if test "$glusterfs" = "yes" ; then
- echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
- echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
- echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
-fi
-
-if test "$glusterfs_xlator_opt" = "yes" ; then
- echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
-fi
-
-if test "$glusterfs_discard" = "yes" ; then
- echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
-fi
-
-if test "$glusterfs_fallocate" = "yes" ; then
- echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
-fi
-
-if test "$glusterfs_zerofill" = "yes" ; then
- echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
-fi
-
-if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
- echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
-fi
-
-if test "$glusterfs_iocb_has_stat" = "yes" ; then
- echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak
-fi
-
if test "$libssh" = "yes" ; then
echo "CONFIG_LIBSSH=y" >> $config_host_mak
echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak
@@ -6923,7 +6829,7 @@ NINJA=$ninja $meson setup \
-Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
-Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f -Dvirtiofsd=$virtiofsd \
-Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
- -Dcurl=$curl \
+ -Dcurl=$curl -Dglusterfs=$glusterfs \
-Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
-Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
-Dvhost_user_blk_server=$vhost_user_blk_server \
diff --git a/meson.build b/meson.build
index 8bf77acc8d..b3810251c3 100644
--- a/meson.build
+++ b/meson.build
@@ -617,9 +617,40 @@ if 'CONFIG_RBD' in config_host
rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
endif
glusterfs = not_found
-if 'CONFIG_GLUSTERFS' in config_host
- glusterfs = declare_dependency(compile_args: config_host['GLUSTERFS_CFLAGS'].split(),
- link_args: config_host['GLUSTERFS_LIBS'].split())
+glusterfs_ftruncate_has_stat = false
+glusterfs_iocb_has_stat = false
+if not get_option('glusterfs').auto() or have_block
+ glusterfs = dependency('glusterfs-api', version: '>=3',
+ required: get_option('glusterfs'),
+ method: 'pkg-config', static: enable_static)
+ if glusterfs.found()
+ glusterfs_ftruncate_has_stat = cc.links('''
+ #include <glusterfs/api/glfs.h>
+
+ int
+ main(void)
+ {
+ /* new glfs_ftruncate() passes two additional args */
+ return glfs_ftruncate(NULL, 0, NULL, NULL);
+ }
+ ''', dependencies: glusterfs)
+ glusterfs_iocb_has_stat = cc.links('''
+ #include <glusterfs/api/glfs.h>
+
+ /* new glfs_io_cbk() passes two additional glfs_stat structs */
+ static void
+ glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data)
+ {}
+
+ int
+ main(void)
+ {
+ glfs_io_cbk iocb = &glusterfs_iocb;
+ iocb(NULL, 0 , NULL, NULL, NULL);
+ return 0;
+ }
+ ''', dependencies: glusterfs)
+ endif
endif
libssh = not_found
if 'CONFIG_LIBSSH' in config_host
@@ -880,6 +911,15 @@ config_host_data.set('CONFIG_MPATH', mpathpersist.found())
config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
config_host_data.set('CONFIG_CURL', curl.found())
config_host_data.set('CONFIG_CURSES', curses.found())
+config_host_data.set('CONFIG_GLUSTERFS', glusterfs.found())
+if glusterfs.found()
+ config_host_data.set('CONFIG_GLUSTERFS_XLATOR_OPT', glusterfs.version().version_compare('>=4'))
+ config_host_data.set('CONFIG_GLUSTERFS_DISCARD', glusterfs.version().version_compare('>=5'))
+ config_host_data.set('CONFIG_GLUSTERFS_FALLOCATE', glusterfs.version().version_compare('>=6'))
+ config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL', glusterfs.version().version_compare('>=6'))
+ config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT', glusterfs_ftruncate_has_stat)
+ config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT', glusterfs_iocb_has_stat)
+endif
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)
@@ -2257,7 +2297,7 @@ summary_info += {'coroutine pool': config_host['CONFIG_COROUTINE_POOL'] == '1
summary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
summary_info += {'mutex debugging': config_host.has_key('CONFIG_DEBUG_MUTEX')}
summary_info += {'crypto afalg': config_host.has_key('CONFIG_AF_ALG')}
-summary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')}
+summary_info += {'GlusterFS support': glusterfs.found()}
summary_info += {'gcov': get_option('b_coverage')}
summary_info += {'TPM support': config_host.has_key('CONFIG_TPM')}
summary_info += {'libssh support': config_host.has_key('CONFIG_LIBSSH')}
diff --git a/meson_options.txt b/meson_options.txt
index 2b845ac62b..b5d84bb88b 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -46,6 +46,8 @@ option('cocoa', type : 'feature', value : 'auto',
description: 'Cocoa user interface (macOS only)')
option('curl', type : 'feature', value : 'auto',
description: 'CURL block device driver')
+option('glusterfs', type : 'feature', value : 'auto',
+ description: 'Glusterfs block device driver')
option('mpath', type : 'feature', value : 'auto',
description: 'Multipath persistent reservation passthrough')
option('iconv', type : 'feature', value : 'auto',