Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
block/meson.build | 2 +-
configure | 29 ++++-------------------------
contrib/vhost-user-scsi/meson.build | 2 +-
meson.build | 10 ++++++----
meson_options.txt | 2 ++
5 files changed, 14 insertions(+), 31 deletions(-)
diff --git a/block/meson.build b/block/meson.build
index b02cb14aad..134034abb4 100644
--- a/block/meson.build
+++ b/block/meson.build
@@ -59,7 +59,7 @@ block_ss.add(when: 'CONFIG_QED', if_true: files(
block_ss.add(when: [libxml2, 'CONFIG_PARALLELS'], if_true: files('parallels.c'))
block_ss.add(when: 'CONFIG_WIN32', if_true: files('file-win32.c', 'win32-aio.c'))
block_ss.add(when: 'CONFIG_POSIX', if_true: [files('file-posix.c'), coref, iokit])
-block_ss.add(when: 'CONFIG_LIBISCSI', if_true: files('iscsi-opts.c'))
+block_ss.add(when: libiscsi, if_true: files('iscsi-opts.c'))
block_ss.add(when: 'CONFIG_LINUX', if_true: files('nvme.c'))
block_ss.add(when: 'CONFIG_REPLICATION', if_true: files('replication.c'))
block_ss.add(when: 'CONFIG_SHEEPDOG', if_true: files('sheepdog.c'))
diff --git a/configure b/configure
index 082ac3bf35..e22c56e8f6 100755
--- a/configure
+++ b/configure
@@ -406,7 +406,7 @@ guest_agent_msi="$default_feature"
vss_win32_sdk="$default_feature"
win_sdk="no"
want_tools="$default_feature"
-libiscsi="$default_feature"
+libiscsi="auto"
libnfs="$default_feature"
coroutine=""
coroutine_pool="$default_feature"
@@ -1139,9 +1139,9 @@ for opt do
;;
--enable-spice) spice="yes"
;;
- --disable-libiscsi) libiscsi="no"
+ --disable-libiscsi) libiscsi="disabled"
;;
- --enable-libiscsi) libiscsi="yes"
+ --enable-libiscsi) libiscsi="enabled"
;;
--disable-libnfs) libnfs="no"
;;
@@ -4315,21 +4315,6 @@ if compile_prog "" "" ; then
bswap_h=yes
fi
-##########################################
-# Do we have libiscsi >= 1.9.0
-if test "$libiscsi" != "no" ; then
- if $pkg_config --atleast-version=1.9.0 libiscsi; then
- libiscsi="yes"
- libiscsi_cflags=$($pkg_config --cflags libiscsi)
- libiscsi_libs=$($pkg_config --libs libiscsi)
- else
- if test "$libiscsi" = "yes" ; then
- feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
- fi
- libiscsi="no"
- fi
-fi
-
##########################################
# Do we need librt
# uClibc provides 2 versions of clock_gettime(), one with realtime
@@ -6231,12 +6216,6 @@ if test "$zstd" = "yes" ; then
echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak
fi
-if test "$libiscsi" = "yes" ; then
- echo "CONFIG_LIBISCSI=y" >> $config_host_mak
- echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
- echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
-fi
-
if test "$libnfs" = "yes" ; then
echo "CONFIG_LIBNFS=y" >> $config_host_mak
echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
@@ -6802,7 +6781,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 -Dglusterfs=$glusterfs -Dbzip2=$bzip2 \
+ -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
-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/contrib/vhost-user-scsi/meson.build b/contrib/vhost-user-scsi/meson.build
index 044c50bf43..cc893f6f20 100644
--- a/contrib/vhost-user-scsi/meson.build
+++ b/contrib/vhost-user-scsi/meson.build
@@ -1,4 +1,4 @@
-if 'CONFIG_LIBISCSI' in config_host
+if libiscsi.found()
executable('vhost-user-scsi', files('vhost-user-scsi.c'),
dependencies: [qemuutil, libiscsi, vhost_user],
build_by_default: targetos == 'linux',
diff --git a/meson.build b/meson.build
index 9ba8eecf37..3f53a7f1b2 100644
--- a/meson.build
+++ b/meson.build
@@ -372,9 +372,10 @@ if 'CONFIG_PLUGIN' in config_host
libdl = cc.find_library('dl', required: true)
endif
libiscsi = not_found
-if 'CONFIG_LIBISCSI' in config_host
- libiscsi = declare_dependency(compile_args: config_host['LIBISCSI_CFLAGS'].split(),
- link_args: config_host['LIBISCSI_LIBS'].split())
+if not get_option('libiscsi').auto() or have_block
+ libiscsi = dependency('libiscsi', version: '>=1.9.0',
+ required: get_option('libiscsi'),
+ method: 'pkg-config', static: enable_static)
endif
zstd = not_found
if 'CONFIG_ZSTD' in config_host
@@ -926,6 +927,7 @@ config_host_data.set('CONFIG_GLUSTERFS_FALLOCATE', glusterfs.version().version_c
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)
+config_host_data.set('CONFIG_LIBISCSI', libiscsi.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)
@@ -2283,7 +2285,7 @@ summary_info += {'libusb': config_host.has_key('CONFIG_USB_LIBUSB')}
summary_info += {'usb net redir': config_host.has_key('CONFIG_USB_REDIR')}
summary_info += {'OpenGL support': config_host.has_key('CONFIG_OPENGL')}
summary_info += {'OpenGL dmabufs': config_host.has_key('CONFIG_OPENGL_DMABUF')}
-summary_info += {'libiscsi support': config_host.has_key('CONFIG_LIBISCSI')}
+summary_info += {'libiscsi support': libiscsi.found()}
summary_info += {'libnfs support': config_host.has_key('CONFIG_LIBNFS')}
summary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')}
if targetos == 'windows'
diff --git a/meson_options.txt b/meson_options.txt
index fd16f3b399..b562d4f1a6 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -50,6 +50,8 @@ option('curl', type : 'feature', value : 'auto',
description: 'CURL block device driver')
option('glusterfs', type : 'feature', value : 'auto',
description: 'Glusterfs block device driver')
+option('libiscsi', type : 'feature', value : 'auto',
+ description: 'libiscsi userspace initiator')
option('mpath', type : 'feature', value : 'auto',
description: 'Multipath persistent reservation passthrough')
option('iconv', type : 'feature', value : 'auto',
--
2.29.2