Message ID | 20240304140028.1590649-4-yuan1.liu@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Live Migration With IAA | expand |
Yuan Liu <yuan1.liu@intel.com> writes: > add --enable-qpl and --disable-qpl options to enable and disable > the QPL compression method for multifd migration. > > the Query Processing Library (QPL) is an open-source library > that supports data compression and decompression features. > > The QPL compression is based on the deflate compression algorithm > and use Intel In-Memory Analytics Accelerator(IAA) hardware for > compression and decompression acceleration. > > Please refer to the following for more information about QPL > https://intel.github.io/qpl/documentation/introduction_docs/introduction.html > > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> > --- > meson.build | 18 ++++++++++++++++++ > meson_options.txt | 2 ++ > scripts/meson-buildoptions.sh | 3 +++ > 3 files changed, 23 insertions(+) > > diff --git a/meson.build b/meson.build > index c1dc83e4c0..2dea1e6834 100644 > --- a/meson.build > +++ b/meson.build > @@ -1197,6 +1197,22 @@ if not get_option('zstd').auto() or have_block > required: get_option('zstd'), > method: 'pkg-config') > endif > +qpl = not_found > +if not get_option('qpl').auto() > + libqpl = cc.find_library('qpl', required: false) > + if not libqpl.found() > + error('libqpl not found, please install it from ' + > + 'https://intel.github.io/qpl/documentation/get_started_docs/installation.html') > + endif > + libaccel = cc.find_library('accel-config', required: false) > + if not libaccel.found() > + error('libaccel-config not found, please install it from ' + > + 'https://github.com/intel/idxd-config') accel-config seems to be packaged by many distros, I'm not sure we need to reference the repository here. https://repology.org/project/accel-config/versions > + endif > + qpl = declare_dependency(dependencies: [libqpl, libaccel, > + cc.find_library('dl', required: get_option('qpl'))], > + link_args: ['-lstdc++']) > +endif > virgl = not_found > > have_vhost_user_gpu = have_tools and host_os == 'linux' and pixman.found() > @@ -2298,6 +2314,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM', has_malloc_trim) > config_host_data.set('CONFIG_STATX', has_statx) > config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id) > config_host_data.set('CONFIG_ZSTD', zstd.found()) > +config_host_data.set('CONFIG_QPL', qpl.found()) > config_host_data.set('CONFIG_FUSE', fuse.found()) > config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found()) > config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found()) > @@ -4438,6 +4455,7 @@ summary_info += {'snappy support': snappy} > summary_info += {'bzip2 support': libbzip2} > summary_info += {'lzfse support': liblzfse} > summary_info += {'zstd support': zstd} > +summary_info += {'Query Processing Library support': qpl} > summary_info += {'NUMA host support': numa} > summary_info += {'capstone': capstone} > summary_info += {'libpmem support': libpmem} > diff --git a/meson_options.txt b/meson_options.txt > index 0a99a059ec..06cd675572 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -259,6 +259,8 @@ option('xkbcommon', type : 'feature', value : 'auto', > description: 'xkbcommon support') > option('zstd', type : 'feature', value : 'auto', > description: 'zstd compression support') > +option('qpl', type : 'feature', value : 'auto', > + description: 'Query Processing Library support') > option('fuse', type: 'feature', value: 'auto', > description: 'FUSE block device export') > option('fuse_lseek', type : 'feature', value : 'auto', > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh > index 680fa3f581..784f74fde9 100644 > --- a/scripts/meson-buildoptions.sh > +++ b/scripts/meson-buildoptions.sh > @@ -222,6 +222,7 @@ meson_options_help() { > printf "%s\n" ' Xen PCI passthrough support' > printf "%s\n" ' xkbcommon xkbcommon support' > printf "%s\n" ' zstd zstd compression support' > + printf "%s\n" ' qpl Query Processing Library support' > } > _meson_option_parse() { > case $1 in > @@ -562,6 +563,8 @@ _meson_option_parse() { > --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;; > --enable-zstd) printf "%s" -Dzstd=enabled ;; > --disable-zstd) printf "%s" -Dzstd=disabled ;; > + --enable-qpl) printf "%s" -Dqpl=enabled ;; > + --disable-qpl) printf "%s" -Dqpl=disabled ;; > *) return 1 ;; > esac > }
> -----Original Message----- > From: Fabiano Rosas <farosas@suse.de> > Sent: Wednesday, March 6, 2024 4:32 AM > To: Liu, Yuan1 <yuan1.liu@intel.com>; peterx@redhat.com > Cc: qemu-devel@nongnu.org; hao.xiang@bytedance.com; > bryan.zhang@bytedance.com; Liu, Yuan1 <yuan1.liu@intel.com>; Zou, Nanhai > <nanhai.zou@intel.com> > Subject: Re: [PATCH v4 3/8] configure: add --enable-qpl build option > > Yuan Liu <yuan1.liu@intel.com> writes: > > > add --enable-qpl and --disable-qpl options to enable and disable > > the QPL compression method for multifd migration. > > > > the Query Processing Library (QPL) is an open-source library > > that supports data compression and decompression features. > > > > The QPL compression is based on the deflate compression algorithm > > and use Intel In-Memory Analytics Accelerator(IAA) hardware for > > compression and decompression acceleration. > > > > Please refer to the following for more information about QPL > > > https://intel.github.io/qpl/documentation/introduction_docs/introduction.h > tml > > > > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> > > --- > > meson.build | 18 ++++++++++++++++++ > > meson_options.txt | 2 ++ > > scripts/meson-buildoptions.sh | 3 +++ > > 3 files changed, 23 insertions(+) > > > > diff --git a/meson.build b/meson.build > > index c1dc83e4c0..2dea1e6834 100644 > > --- a/meson.build > > +++ b/meson.build > > @@ -1197,6 +1197,22 @@ if not get_option('zstd').auto() or have_block > > required: get_option('zstd'), > > method: 'pkg-config') > > endif > > +qpl = not_found > > +if not get_option('qpl').auto() > > + libqpl = cc.find_library('qpl', required: false) > > + if not libqpl.found() > > + error('libqpl not found, please install it from ' + > > + > 'https://intel.github.io/qpl/documentation/get_started_docs/installation.h > tml') > > + endif > > + libaccel = cc.find_library('accel-config', required: false) > > + if not libaccel.found() > > + error('libaccel-config not found, please install it from ' + > > + 'https://github.com/intel/idxd-config') > > accel-config seems to be packaged by many distros, I'm not sure we need > to reference the repository here. > > https://repology.org/project/accel-config/versions Yes, accel-config has been added to many distributions, I will use pkgconfig to detect the libaccel and the version(at least v4.0). I have a question, I didn't find accel-config installation package from https://repology.org/project/accel-config/versions. Does using this link also require the user to build an accel-config package, and then install it? It is easy to install accel-config using the installation package, but I didn't find a repo that provides accel-config installation packages for most distributions. First check accel-config is available through pktconfig, and if it is not available, prompts users to install it from https://github.com/intel/idxd-config, is it OK? > > + endif > > + qpl = declare_dependency(dependencies: [libqpl, libaccel, > > + cc.find_library('dl', required: get_option('qpl'))], > > + link_args: ['-lstdc++']) > > +endif > > virgl = not_found > > > > have_vhost_user_gpu = have_tools and host_os == 'linux' and > pixman.found() > > @@ -2298,6 +2314,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM', > has_malloc_trim) > > config_host_data.set('CONFIG_STATX', has_statx) > > config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id) > > config_host_data.set('CONFIG_ZSTD', zstd.found()) > > +config_host_data.set('CONFIG_QPL', qpl.found()) > > config_host_data.set('CONFIG_FUSE', fuse.found()) > > config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found()) > > config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found()) > > @@ -4438,6 +4455,7 @@ summary_info += {'snappy support': snappy} > > summary_info += {'bzip2 support': libbzip2} > > summary_info += {'lzfse support': liblzfse} > > summary_info += {'zstd support': zstd} > > +summary_info += {'Query Processing Library support': qpl} > > summary_info += {'NUMA host support': numa} > > summary_info += {'capstone': capstone} > > summary_info += {'libpmem support': libpmem} > > diff --git a/meson_options.txt b/meson_options.txt > > index 0a99a059ec..06cd675572 100644 > > --- a/meson_options.txt > > +++ b/meson_options.txt > > @@ -259,6 +259,8 @@ option('xkbcommon', type : 'feature', value : > 'auto', > > description: 'xkbcommon support') > > option('zstd', type : 'feature', value : 'auto', > > description: 'zstd compression support') > > +option('qpl', type : 'feature', value : 'auto', > > + description: 'Query Processing Library support') > > option('fuse', type: 'feature', value: 'auto', > > description: 'FUSE block device export') > > option('fuse_lseek', type : 'feature', value : 'auto', > > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson- > buildoptions.sh > > index 680fa3f581..784f74fde9 100644 > > --- a/scripts/meson-buildoptions.sh > > +++ b/scripts/meson-buildoptions.sh > > @@ -222,6 +222,7 @@ meson_options_help() { > > printf "%s\n" ' Xen PCI passthrough support' > > printf "%s\n" ' xkbcommon xkbcommon support' > > printf "%s\n" ' zstd zstd compression support' > > + printf "%s\n" ' qpl Query Processing Library support' > > } > > _meson_option_parse() { > > case $1 in > > @@ -562,6 +563,8 @@ _meson_option_parse() { > > --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;; > > --enable-zstd) printf "%s" -Dzstd=enabled ;; > > --disable-zstd) printf "%s" -Dzstd=disabled ;; > > + --enable-qpl) printf "%s" -Dqpl=enabled ;; > > + --disable-qpl) printf "%s" -Dqpl=disabled ;; > > *) return 1 ;; > > esac > > }
"Liu, Yuan1" <yuan1.liu@intel.com> writes: >> -----Original Message----- >> From: Fabiano Rosas <farosas@suse.de> >> Sent: Wednesday, March 6, 2024 4:32 AM >> To: Liu, Yuan1 <yuan1.liu@intel.com>; peterx@redhat.com >> Cc: qemu-devel@nongnu.org; hao.xiang@bytedance.com; >> bryan.zhang@bytedance.com; Liu, Yuan1 <yuan1.liu@intel.com>; Zou, Nanhai >> <nanhai.zou@intel.com> >> Subject: Re: [PATCH v4 3/8] configure: add --enable-qpl build option >> >> Yuan Liu <yuan1.liu@intel.com> writes: >> >> > add --enable-qpl and --disable-qpl options to enable and disable >> > the QPL compression method for multifd migration. >> > >> > the Query Processing Library (QPL) is an open-source library >> > that supports data compression and decompression features. >> > >> > The QPL compression is based on the deflate compression algorithm >> > and use Intel In-Memory Analytics Accelerator(IAA) hardware for >> > compression and decompression acceleration. >> > >> > Please refer to the following for more information about QPL >> > >> https://intel.github.io/qpl/documentation/introduction_docs/introduction.h >> tml >> > >> > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> >> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> >> > --- >> > meson.build | 18 ++++++++++++++++++ >> > meson_options.txt | 2 ++ >> > scripts/meson-buildoptions.sh | 3 +++ >> > 3 files changed, 23 insertions(+) >> > >> > diff --git a/meson.build b/meson.build >> > index c1dc83e4c0..2dea1e6834 100644 >> > --- a/meson.build >> > +++ b/meson.build >> > @@ -1197,6 +1197,22 @@ if not get_option('zstd').auto() or have_block >> > required: get_option('zstd'), >> > method: 'pkg-config') >> > endif >> > +qpl = not_found >> > +if not get_option('qpl').auto() >> > + libqpl = cc.find_library('qpl', required: false) >> > + if not libqpl.found() >> > + error('libqpl not found, please install it from ' + >> > + >> 'https://intel.github.io/qpl/documentation/get_started_docs/installation.h >> tml') >> > + endif >> > + libaccel = cc.find_library('accel-config', required: false) >> > + if not libaccel.found() >> > + error('libaccel-config not found, please install it from ' + >> > + 'https://github.com/intel/idxd-config') >> >> accel-config seems to be packaged by many distros, I'm not sure we need >> to reference the repository here. >> >> https://repology.org/project/accel-config/versions > > Yes, accel-config has been added to many distributions, I will use pkgconfig to > detect the libaccel and the version(at least v4.0). > > I have a question, I didn't find accel-config installation package from > https://repology.org/project/accel-config/versions. Does using this link also > require the user to build an accel-config package, and then install it? That is just an aggregated list of distros and the version of the package they provide in their repos. So I'm just pointing out to you that there seems to be a packaged accel-config for most distros already. Which means we just want to say "install accel-config" and users should be able to use their distro's package manager. > > It is easy to install accel-config using the installation package, but I didn't > find a repo that provides accel-config installation packages for most distributions. > > First check accel-config is available through pktconfig, and if it is not available, > prompts users to install it from https://github.com/intel/idxd-config, is it OK? There's no need, just check if its available and suggest the user to install it. We already have the link in the docs. > >> > + endif >> > + qpl = declare_dependency(dependencies: [libqpl, libaccel, >> > + cc.find_library('dl', required: get_option('qpl'))], >> > + link_args: ['-lstdc++']) >> > +endif >> > virgl = not_found >> > >> > have_vhost_user_gpu = have_tools and host_os == 'linux' and >> pixman.found() >> > @@ -2298,6 +2314,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM', >> has_malloc_trim) >> > config_host_data.set('CONFIG_STATX', has_statx) >> > config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id) >> > config_host_data.set('CONFIG_ZSTD', zstd.found()) >> > +config_host_data.set('CONFIG_QPL', qpl.found()) >> > config_host_data.set('CONFIG_FUSE', fuse.found()) >> > config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found()) >> > config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found()) >> > @@ -4438,6 +4455,7 @@ summary_info += {'snappy support': snappy} >> > summary_info += {'bzip2 support': libbzip2} >> > summary_info += {'lzfse support': liblzfse} >> > summary_info += {'zstd support': zstd} >> > +summary_info += {'Query Processing Library support': qpl} >> > summary_info += {'NUMA host support': numa} >> > summary_info += {'capstone': capstone} >> > summary_info += {'libpmem support': libpmem} >> > diff --git a/meson_options.txt b/meson_options.txt >> > index 0a99a059ec..06cd675572 100644 >> > --- a/meson_options.txt >> > +++ b/meson_options.txt >> > @@ -259,6 +259,8 @@ option('xkbcommon', type : 'feature', value : >> 'auto', >> > description: 'xkbcommon support') >> > option('zstd', type : 'feature', value : 'auto', >> > description: 'zstd compression support') >> > +option('qpl', type : 'feature', value : 'auto', >> > + description: 'Query Processing Library support') >> > option('fuse', type: 'feature', value: 'auto', >> > description: 'FUSE block device export') >> > option('fuse_lseek', type : 'feature', value : 'auto', >> > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson- >> buildoptions.sh >> > index 680fa3f581..784f74fde9 100644 >> > --- a/scripts/meson-buildoptions.sh >> > +++ b/scripts/meson-buildoptions.sh >> > @@ -222,6 +222,7 @@ meson_options_help() { >> > printf "%s\n" ' Xen PCI passthrough support' >> > printf "%s\n" ' xkbcommon xkbcommon support' >> > printf "%s\n" ' zstd zstd compression support' >> > + printf "%s\n" ' qpl Query Processing Library support' >> > } >> > _meson_option_parse() { >> > case $1 in >> > @@ -562,6 +563,8 @@ _meson_option_parse() { >> > --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;; >> > --enable-zstd) printf "%s" -Dzstd=enabled ;; >> > --disable-zstd) printf "%s" -Dzstd=disabled ;; >> > + --enable-qpl) printf "%s" -Dqpl=enabled ;; >> > + --disable-qpl) printf "%s" -Dqpl=disabled ;; >> > *) return 1 ;; >> > esac >> > }
> -----Original Message----- > From: Fabiano Rosas <farosas@suse.de> > Sent: Wednesday, March 6, 2024 7:56 PM > To: Liu, Yuan1 <yuan1.liu@intel.com>; peterx@redhat.com > Cc: qemu-devel@nongnu.org; hao.xiang@bytedance.com; > bryan.zhang@bytedance.com; Zou, Nanhai <nanhai.zou@intel.com> > Subject: RE: [PATCH v4 3/8] configure: add --enable-qpl build option > > "Liu, Yuan1" <yuan1.liu@intel.com> writes: > > >> -----Original Message----- > >> From: Fabiano Rosas <farosas@suse.de> > >> Sent: Wednesday, March 6, 2024 4:32 AM > >> To: Liu, Yuan1 <yuan1.liu@intel.com>; peterx@redhat.com > >> Cc: qemu-devel@nongnu.org; hao.xiang@bytedance.com; > >> bryan.zhang@bytedance.com; Liu, Yuan1 <yuan1.liu@intel.com>; Zou, > Nanhai > >> <nanhai.zou@intel.com> > >> Subject: Re: [PATCH v4 3/8] configure: add --enable-qpl build option > >> > >> Yuan Liu <yuan1.liu@intel.com> writes: > >> > >> > add --enable-qpl and --disable-qpl options to enable and disable > >> > the QPL compression method for multifd migration. > >> > > >> > the Query Processing Library (QPL) is an open-source library > >> > that supports data compression and decompression features. > >> > > >> > The QPL compression is based on the deflate compression algorithm > >> > and use Intel In-Memory Analytics Accelerator(IAA) hardware for > >> > compression and decompression acceleration. > >> > > >> > Please refer to the following for more information about QPL > >> > > >> > https://intel.github.io/qpl/documentation/introduction_docs/introduction.h > >> tml > >> > > >> > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > >> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com> > >> > --- > >> > meson.build | 18 ++++++++++++++++++ > >> > meson_options.txt | 2 ++ > >> > scripts/meson-buildoptions.sh | 3 +++ > >> > 3 files changed, 23 insertions(+) > >> > > >> > diff --git a/meson.build b/meson.build > >> > index c1dc83e4c0..2dea1e6834 100644 > >> > --- a/meson.build > >> > +++ b/meson.build > >> > @@ -1197,6 +1197,22 @@ if not get_option('zstd').auto() or have_block > >> > required: get_option('zstd'), > >> > method: 'pkg-config') > >> > endif > >> > +qpl = not_found > >> > +if not get_option('qpl').auto() > >> > + libqpl = cc.find_library('qpl', required: false) > >> > + if not libqpl.found() > >> > + error('libqpl not found, please install it from ' + > >> > + > >> > 'https://intel.github.io/qpl/documentation/get_started_docs/installation.h > >> tml') > >> > + endif > >> > + libaccel = cc.find_library('accel-config', required: false) > >> > + if not libaccel.found() > >> > + error('libaccel-config not found, please install it from ' + > >> > + 'https://github.com/intel/idxd-config') > >> > >> accel-config seems to be packaged by many distros, I'm not sure we need > >> to reference the repository here. > >> > >> https://repology.org/project/accel-config/versions > > > > Yes, accel-config has been added to many distributions, I will use > pkgconfig to > > detect the libaccel and the version(at least v4.0). > > > > I have a question, I didn't find accel-config installation package from > > https://repology.org/project/accel-config/versions. Does using this link > also > > require the user to build an accel-config package, and then install it? > > That is just an aggregated list of distros and the version of the > package they provide in their repos. So I'm just pointing out to you > that there seems to be a packaged accel-config for most distros > already. Which means we just want to say "install accel-config" and > users should be able to use their distro's package manager. > > > > > It is easy to install accel-config using the installation package, but I > didn't > > find a repo that provides accel-config installation packages for most > distributions. > > > > First check accel-config is available through pktconfig, and if it is > not available, > > prompts users to install it from https://github.com/intel/idxd-config, > is it OK? > > There's no need, just check if its available and suggest the user to > install it. We already have the link in the docs. Get it, thanks~ > > > >> > + endif > >> > + qpl = declare_dependency(dependencies: [libqpl, libaccel, > >> > + cc.find_library('dl', required: get_option('qpl'))], > >> > + link_args: ['-lstdc++']) > >> > +endif > >> > virgl = not_found > >> > > >> > have_vhost_user_gpu = have_tools and host_os == 'linux' and > >> pixman.found() > >> > @@ -2298,6 +2314,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM', > >> has_malloc_trim) > >> > config_host_data.set('CONFIG_STATX', has_statx) > >> > config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id) > >> > config_host_data.set('CONFIG_ZSTD', zstd.found()) > >> > +config_host_data.set('CONFIG_QPL', qpl.found()) > >> > config_host_data.set('CONFIG_FUSE', fuse.found()) > >> > config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found()) > >> > config_host_data.set('CONFIG_SPICE_PROTOCOL', > spice_protocol.found()) > >> > @@ -4438,6 +4455,7 @@ summary_info += {'snappy support': snappy} > >> > summary_info += {'bzip2 support': libbzip2} > >> > summary_info += {'lzfse support': liblzfse} > >> > summary_info += {'zstd support': zstd} > >> > +summary_info += {'Query Processing Library support': qpl} > >> > summary_info += {'NUMA host support': numa} > >> > summary_info += {'capstone': capstone} > >> > summary_info += {'libpmem support': libpmem} > >> > diff --git a/meson_options.txt b/meson_options.txt > >> > index 0a99a059ec..06cd675572 100644 > >> > --- a/meson_options.txt > >> > +++ b/meson_options.txt > >> > @@ -259,6 +259,8 @@ option('xkbcommon', type : 'feature', value : > >> 'auto', > >> > description: 'xkbcommon support') > >> > option('zstd', type : 'feature', value : 'auto', > >> > description: 'zstd compression support') > >> > +option('qpl', type : 'feature', value : 'auto', > >> > + description: 'Query Processing Library support') > >> > option('fuse', type: 'feature', value: 'auto', > >> > description: 'FUSE block device export') > >> > option('fuse_lseek', type : 'feature', value : 'auto', > >> > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson- > >> buildoptions.sh > >> > index 680fa3f581..784f74fde9 100644 > >> > --- a/scripts/meson-buildoptions.sh > >> > +++ b/scripts/meson-buildoptions.sh > >> > @@ -222,6 +222,7 @@ meson_options_help() { > >> > printf "%s\n" ' Xen PCI passthrough support' > >> > printf "%s\n" ' xkbcommon xkbcommon support' > >> > printf "%s\n" ' zstd zstd compression support' > >> > + printf "%s\n" ' qpl Query Processing Library support' > >> > } > >> > _meson_option_parse() { > >> > case $1 in > >> > @@ -562,6 +563,8 @@ _meson_option_parse() { > >> > --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;; > >> > --enable-zstd) printf "%s" -Dzstd=enabled ;; > >> > --disable-zstd) printf "%s" -Dzstd=disabled ;; > >> > + --enable-qpl) printf "%s" -Dqpl=enabled ;; > >> > + --disable-qpl) printf "%s" -Dqpl=disabled ;; > >> > *) return 1 ;; > >> > esac > >> > }
diff --git a/meson.build b/meson.build index c1dc83e4c0..2dea1e6834 100644 --- a/meson.build +++ b/meson.build @@ -1197,6 +1197,22 @@ if not get_option('zstd').auto() or have_block required: get_option('zstd'), method: 'pkg-config') endif +qpl = not_found +if not get_option('qpl').auto() + libqpl = cc.find_library('qpl', required: false) + if not libqpl.found() + error('libqpl not found, please install it from ' + + 'https://intel.github.io/qpl/documentation/get_started_docs/installation.html') + endif + libaccel = cc.find_library('accel-config', required: false) + if not libaccel.found() + error('libaccel-config not found, please install it from ' + + 'https://github.com/intel/idxd-config') + endif + qpl = declare_dependency(dependencies: [libqpl, libaccel, + cc.find_library('dl', required: get_option('qpl'))], + link_args: ['-lstdc++']) +endif virgl = not_found have_vhost_user_gpu = have_tools and host_os == 'linux' and pixman.found() @@ -2298,6 +2314,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM', has_malloc_trim) config_host_data.set('CONFIG_STATX', has_statx) config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id) config_host_data.set('CONFIG_ZSTD', zstd.found()) +config_host_data.set('CONFIG_QPL', qpl.found()) config_host_data.set('CONFIG_FUSE', fuse.found()) config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found()) config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found()) @@ -4438,6 +4455,7 @@ summary_info += {'snappy support': snappy} summary_info += {'bzip2 support': libbzip2} summary_info += {'lzfse support': liblzfse} summary_info += {'zstd support': zstd} +summary_info += {'Query Processing Library support': qpl} summary_info += {'NUMA host support': numa} summary_info += {'capstone': capstone} summary_info += {'libpmem support': libpmem} diff --git a/meson_options.txt b/meson_options.txt index 0a99a059ec..06cd675572 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -259,6 +259,8 @@ option('xkbcommon', type : 'feature', value : 'auto', description: 'xkbcommon support') option('zstd', type : 'feature', value : 'auto', description: 'zstd compression support') +option('qpl', type : 'feature', value : 'auto', + description: 'Query Processing Library support') option('fuse', type: 'feature', value: 'auto', description: 'FUSE block device export') option('fuse_lseek', type : 'feature', value : 'auto', diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index 680fa3f581..784f74fde9 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -222,6 +222,7 @@ meson_options_help() { printf "%s\n" ' Xen PCI passthrough support' printf "%s\n" ' xkbcommon xkbcommon support' printf "%s\n" ' zstd zstd compression support' + printf "%s\n" ' qpl Query Processing Library support' } _meson_option_parse() { case $1 in @@ -562,6 +563,8 @@ _meson_option_parse() { --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;; --enable-zstd) printf "%s" -Dzstd=enabled ;; --disable-zstd) printf "%s" -Dzstd=disabled ;; + --enable-qpl) printf "%s" -Dqpl=enabled ;; + --disable-qpl) printf "%s" -Dqpl=disabled ;; *) return 1 ;; esac }