From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.5 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10C7EC49EA5 for ; Fri, 25 Jun 2021 02:10:11 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 54E0D61361 for ; Fri, 25 Jun 2021 02:10:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 54E0D61361 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:55930 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwbIH-0006gF-30 for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 22:10:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54772) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwbHS-00060O-A4 for qemu-devel@nongnu.org; Thu, 24 Jun 2021 22:09:18 -0400 Received: from mail-vs1-xe2b.google.com ([2607:f8b0:4864:20::e2b]:41494) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwbHN-0004rx-NW for qemu-devel@nongnu.org; Thu, 24 Jun 2021 22:09:17 -0400 Received: by mail-vs1-xe2b.google.com with SMTP id c26so4617747vso.8 for ; Thu, 24 Jun 2021 19:09:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:reply-to:from:date:message-id :subject:to:cc; bh=NCv1mwZXFUWzQpri131srCo+MLXsCQmjvmdgY9cvBNY=; b=nnSSJRq3PVFzvJRM56BnmEBsUlTLQp2JlAaJDif11IoPsA3FN+ppX3bJYuOBa0TUhg DpZTXf0M55yt21sxdeXCaVH+0o5o8eUJGhq3SAtzLWCW4735z7w/kBYhEvwSlfdE5qZ0 3zn8Vr2vWCiC+6wvP3kZ5bsjxuQoY1WKO7+ORlOV6YcC2ppXM6mtej4ryVrVcOziYD9W NwmaQJea5kvlwiQvX7aaxoeSXn5AzAIltv8+pOfuL5XpjQFWNmg/Mx1bKEZ8Iovd58U+ TvkwN1PQJnFpZWzE2HMx99vbsmx0mljm12qOHYUBijjV9tQ8e4G2b4q4JKxmvv9Gm9yN hnBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:reply-to :from:date:message-id:subject:to:cc; bh=NCv1mwZXFUWzQpri131srCo+MLXsCQmjvmdgY9cvBNY=; b=nTwRbD/TtxDjpbR9a+xUVWmnKfqP2rnDufY5ekWAtoZ4hOv9kc+sTU1MRdSb9oYJu4 Ii+dlq1EOIAlpn5CFCWnjINRUil+U2ZePJ/WvGP4mcRRbigPuuL4HMiXvw+nG0vvFdfH JghSUzmdwMqtlCIdX/cLK0JGUfnP+/E31UCy46M2RW/EL276shFWpBfMBBeB44+3KIAv of4TKAaPjPO94wOa5Me/bB1verpw1jD2YSZrlXYTmvOKBstlcROiQvd8KcPnXZOU8e6T LWSxsow310AZlQdslkHZl8fxRszXa+Tj6GCp7ltyFsFZ8JFosJUcrloepDVISW9sf/ex 1DXg== X-Gm-Message-State: AOAM532Ef0BbvPr/ASAETdYU8rKtvNqok8zSXWm0to05x8QZI+nU3ZhS rq8PkYI6hbwoOBncXUgkqXdUKYZc/xya/pfgtBM= X-Google-Smtp-Source: ABdhPJyEtOTPiuUnZvYDUR90m/0ZvtW7G3h8V29Bdx6sRCXPAJEGOieBmGZt05zvBB2MDSTBkOQJYtfUcdzDwMM3X7c= X-Received: by 2002:a05:6102:32c9:: with SMTP id o9mr6594539vss.11.1624586952187; Thu, 24 Jun 2021 19:09:12 -0700 (PDT) MIME-Version: 1.0 References: <20210623121424.1259496-1-pbonzini@redhat.com> <20210623121424.1259496-10-pbonzini@redhat.com> In-Reply-To: <20210623121424.1259496-10-pbonzini@redhat.com> From: =?UTF-8?B?572X5YuH5YiaKFlvbmdnYW5nIEx1byk=?= Date: Fri, 25 Jun 2021 10:09:01 +0800 Message-ID: Subject: Re: [PULL 09/12] configure, meson: convert libusb detection to meson To: Paolo Bonzini Content-Type: multipart/alternative; boundary="00000000000031255605c58da059" Received-SPF: pass client-ip=2607:f8b0:4864:20::e2b; envelope-from=luoyonggang@gmail.com; helo=mail-vs1-xe2b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: luoyonggang@gmail.com Cc: =?UTF-8?Q?Daniel_P_=2E_Berrang=C3=A9?= , qemu-level Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" --00000000000031255605c58da059 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jun 23, 2021 at 8:27 PM Paolo Bonzini wrote: > > Reviewed-by: Daniel P. Berrang=C3=A9 > Signed-off-by: Paolo Bonzini > --- > configure | 27 ++++----------------------- > hw/usb/meson.build | 2 +- > meson.build | 11 +++++++---- > meson_options.txt | 2 ++ > 4 files changed, 14 insertions(+), 28 deletions(-) > > diff --git a/configure b/configure > index 237e99c3d0..e54d06b99e 100755 > --- a/configure > +++ b/configure > @@ -374,7 +374,7 @@ spice_protocol=3D"auto" > rbd=3D"auto" > smartcard=3D"$default_feature" > u2f=3D"auto" > -libusb=3D"$default_feature" > +libusb=3D"auto" > usb_redir=3D"$default_feature" > opengl=3D"$default_feature" > cpuid_h=3D"no" > @@ -1285,9 +1285,9 @@ for opt do > ;; > --enable-u2f) u2f=3D"enabled" > ;; > - --disable-libusb) libusb=3D"no" > + --disable-libusb) libusb=3D"disabled" > ;; > - --enable-libusb) libusb=3D"yes" > + --enable-libusb) libusb=3D"enabled" > ;; > --disable-usb-redir) usb_redir=3D"no" > ;; > @@ -3994,20 +3994,6 @@ if test "$smartcard" !=3D "no"; then > fi > fi > > -# check for libusb > -if test "$libusb" !=3D "no" ; then > - if $pkg_config --atleast-version=3D1.0.13 libusb-1.0; then > - libusb=3D"yes" > - libusb_cflags=3D$($pkg_config --cflags libusb-1.0) > - libusb_libs=3D$($pkg_config --libs libusb-1.0) > - else > - if test "$libusb" =3D "yes"; then > - feature_not_found "libusb" "Install libusb devel >=3D 1.0.13= " > - fi > - libusb=3D"no" > - fi > -fi > - > # check for usbredirparser for usb network redirection support > if test "$usb_redir" !=3D "no" ; then > if $pkg_config --atleast-version=3D0.6 libusbredirparser-0.5; then > @@ -5631,12 +5617,6 @@ if test "$smartcard" =3D "yes" ; then > echo "SMARTCARD_LIBS=3D$libcacard_libs" >> $config_host_mak > fi > > -if test "$libusb" =3D "yes" ; then > - echo "CONFIG_USB_LIBUSB=3Dy" >> $config_host_mak > - echo "LIBUSB_CFLAGS=3D$libusb_cflags" >> $config_host_mak > - echo "LIBUSB_LIBS=3D$libusb_libs" >> $config_host_mak > -fi > - > if test "$usb_redir" =3D "yes" ; then > echo "CONFIG_USB_REDIR=3Dy" >> $config_host_mak > echo "USB_REDIR_CFLAGS=3D$usb_redir_cflags" >> $config_host_mak > @@ -6215,6 +6195,7 @@ if test "$skip_meson" =3D no; then > -Dkvm=3D$kvm -Dhax=3D$hax -Dwhpx=3D$whpx -Dhvf=3D$hvf -Dnvmm=3D$= nvmm \ > -Dxen=3D$xen -Dxen_pci_passthrough=3D$xen_pci_passthrough -Dtcg= =3D$tcg \ > -Dcocoa=3D$cocoa -Dgtk=3D$gtk -Dmpath=3D$mpath -Dsdl=3D$sdl -Dsdl_image=3D$sdl_image \ > + -Dlibusb=3D$libusb \ > -Dvnc=3D$vnc -Dvnc_sasl=3D$vnc_sasl -Dvnc_jpeg=3D$vnc_jpeg -Dvnc_png=3D$vnc_png \ > -Dgettext=3D$gettext -Dxkbcommon=3D$xkbcommon -Du2f=3D$u2f -Dvirtiofsd=3D$virtiofsd \ > -Dcapstone=3D$capstone -Dslirp=3D$slirp -Dfdt=3D$fdt -Dbrlapi=3D= $brlapi \ > diff --git a/hw/usb/meson.build b/hw/usb/meson.build > index f357270d0b..bd3f8735b9 100644 > --- a/hw/usb/meson.build > +++ b/hw/usb/meson.build > @@ -72,7 +72,7 @@ if config_host.has_key('CONFIG_USB_REDIR') > endif > > # usb pass-through > -softmmu_ss.add(when: ['CONFIG_USB', 'CONFIG_USB_LIBUSB', libusb], > +softmmu_ss.add(when: ['CONFIG_USB', libusb], > if_true: files('host-libusb.c'), > if_false: files('host-stub.c')) > softmmu_ss.add(when: 'CONFIG_ALL', if_true: files('host-stub.c')) > diff --git a/meson.build b/meson.build > index c9266bd3cc..58d3a3bdc9 100644 > --- a/meson.build > +++ b/meson.build > @@ -991,10 +991,12 @@ if 'CONFIG_USB_REDIR' in config_host > link_args: config_host['USB_REDIR_LIBS'].split()) > endif > libusb =3D not_found > -if 'CONFIG_USB_LIBUSB' in config_host > - libusb =3D declare_dependency(compile_args: config_host['LIBUSB_CFLAGS'].split(), > - link_args: config_host['LIBUSB_LIBS'].split()) > +if not get_option('libusb').auto() or have_system > + libusb =3D dependency('libusb-1.0', required: get_option('libusb'), > + version: '>=3D1.0.13', method: 'pkg-config', > + kwargs: static_kwargs) > endif Hi, I am not sure if it's right, but I think the dection may need convert to this: ``` if not get_option('libusb').disabled() libusb =3D dependency('libusb-1.0', required: get_option('libusb').auto()= , version: '>=3D1.0.13', method: 'pkg-config', kwargs: static_kwargs) endif ``` > + > libpmem =3D not_found > if 'CONFIG_LIBPMEM' in config_host > libpmem =3D declare_dependency(compile_args: config_host['LIBPMEM_CFLAGS'].split(), > @@ -1210,6 +1212,7 @@ config_host_data.set('CONFIG_SDL', sdl.found()) > config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found()) > config_host_data.set('CONFIG_SECCOMP', seccomp.found()) > config_host_data.set('CONFIG_SNAPPY', snappy.found()) > +config_host_data.set('CONFIG_USB_LIBUSB', libusb.found()) > config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER', have_vhost_user_blk_server) > config_host_data.set('CONFIG_VNC', vnc.found()) > config_host_data.set('CONFIG_VNC_JPEG', jpeg.found()) > @@ -2779,7 +2782,7 @@ summary_info +=3D {'rbd support': rbd.found()= } > summary_info +=3D {'xfsctl support': config_host.has_key('CONFIG_XFS'= )} > summary_info +=3D {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')} > summary_info +=3D {'U2F support': u2f.found()} > -summary_info +=3D {'libusb': config_host.has_key('CONFIG_USB_LIBUSB')} > +summary_info +=3D {'libusb': libusb.found()} > summary_info +=3D {'usb net redir': config_host.has_key('CONFIG_USB_REDIR')} > summary_info +=3D {'OpenGL support': config_host.has_key('CONFIG_OPENGL')} > summary_info +=3D {'GBM': config_host.has_key('CONFIG_GBM'= )} > diff --git a/meson_options.txt b/meson_options.txt > index ac6e90da07..02c14d4751 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -86,6 +86,8 @@ option('gcrypt', type : 'feature', value : 'auto', > description: 'libgcrypt cryptography support') > option('libudev', type : 'feature', value : 'auto', > description: 'Use libudev to enumerate host devices') > +option('libusb', type : 'feature', value : 'auto', > + description: 'libusb support for USB passthrough') > option('lzfse', type : 'feature', value : 'auto', > description: 'lzfse support for DMG images') > option('lzo', type : 'feature', value : 'auto', > -- > 2.31.1 > > > -- =E6=AD=A4=E8=87=B4 =E7=A4=BC =E7=BD=97=E5=8B=87=E5=88=9A Yours sincerely, Yonggang Luo --00000000000031255605c58da059 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Wed, Jun 23, 2021 at 8:27 PM Paolo Bonzini <= pbonzini@redhat.com> wrote:>
> Reviewed-by: Daniel P. Berrang=C3=A9 <berrange@redhat.com>
> Signed-off-by: Paol= o Bonzini <pbonzini@redhat.com>
> ---
> =C2=A0configure =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0| 27 ++++-----------------------
> =C2=A0hw/usb/meson.build | =C2= =A02 +-
> =C2=A0meson.build =C2=A0 =C2=A0 =C2=A0 =C2=A0| 11 +++++++--= --
> =C2=A0meson_options.txt =C2=A0| =C2=A02 ++
> =C2=A04 files= changed, 14 insertions(+), 28 deletions(-)
>
> diff --git a/co= nfigure b/configure
> index 237e99c3d0..e54d06b99e 100755
> ---= a/configure
> +++ b/configure
> @@ -374,7 +374,7 @@ spice_prot= ocol=3D"auto"
> =C2=A0rbd=3D"auto"
> =C2=A0= smartcard=3D"$default_feature"
> =C2=A0u2f=3D"auto&quo= t;
> -libusb=3D"$default_feature"
> +libusb=3D"a= uto"
> =C2=A0usb_redir=3D"$default_feature"
> = =C2=A0opengl=3D"$default_feature"
> =C2=A0cpuid_h=3D"n= o"
> @@ -1285,9 +1285,9 @@ for opt do
> =C2=A0 =C2=A0;;> =C2=A0 =C2=A0--enable-u2f) u2f=3D"enabled"
> =C2=A0 = =C2=A0;;
> - =C2=A0--disable-libusb) libusb=3D"no"
> = + =C2=A0--disable-libusb) libusb=3D"disabled"
> =C2=A0 =C2= =A0;;
> - =C2=A0--enable-libusb) libusb=3D"yes"
> + = =C2=A0--enable-libusb) libusb=3D"enabled"
> =C2=A0 =C2=A0;;=
> =C2=A0 =C2=A0--disable-usb-redir) usb_redir=3D"no"
&g= t; =C2=A0 =C2=A0;;
> @@ -3994,20 +3994,6 @@ if test "$smartcard&= quot; !=3D "no"; then
> =C2=A0 =C2=A0 =C2=A0fi
> =C2= =A0fi
>
> -# check for libusb
> -if test "$libusb&qu= ot; !=3D "no" ; then
> - =C2=A0 =C2=A0if $pkg_config --atle= ast-version=3D1.0.13 libusb-1.0; then
> - =C2=A0 =C2=A0 =C2=A0 =C2=A0= libusb=3D"yes"
> - =C2=A0 =C2=A0 =C2=A0 =C2=A0libusb_cflags= =3D$($pkg_config --cflags libusb-1.0)
> - =C2=A0 =C2=A0 =C2=A0 =C2=A0= libusb_libs=3D$($pkg_config --libs libusb-1.0)
> - =C2=A0 =C2=A0else<= br>> - =C2=A0 =C2=A0 =C2=A0 =C2=A0if test "$libusb" =3D "= yes"; then
> - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0feature_= not_found "libusb" "Install libusb devel >=3D 1.0.13"= ;
> - =C2=A0 =C2=A0 =C2=A0 =C2=A0fi
> - =C2=A0 =C2=A0 =C2=A0 = =C2=A0libusb=3D"no"
> - =C2=A0 =C2=A0fi
> -fi
>= -
> =C2=A0# check for usbredirparser for usb network redirection sup= port
> =C2=A0if test "$usb_redir" !=3D "no" ; the= n
> =C2=A0 =C2=A0 =C2=A0if $pkg_config --atleast-version=3D0.6 libusb= redirparser-0.5; then
> @@ -5631,12 +5617,6 @@ if test "$smartca= rd" =3D "yes" ; then
> =C2=A0 =C2=A0echo "SMARTCA= RD_LIBS=3D$libcacard_libs" >> $config_host_mak
> =C2=A0fi<= br>>
> -if test "$libusb" =3D "yes" ; then
= > - =C2=A0echo "CONFIG_USB_LIBUSB=3Dy" >> $config_host_m= ak
> - =C2=A0echo "LIBUSB_CFLAGS=3D$libusb_cflags" >>= $config_host_mak
> - =C2=A0echo "LIBUSB_LIBS=3D$libusb_libs&quo= t; >> $config_host_mak
> -fi
> -
> =C2=A0if test &q= uot;$usb_redir" =3D "yes" ; then
> =C2=A0 =C2=A0echo &= quot;CONFIG_USB_REDIR=3Dy" >> $config_host_mak
> =C2=A0 = =C2=A0echo "USB_REDIR_CFLAGS=3D$usb_redir_cflags" >> $confi= g_host_mak
> @@ -6215,6 +6195,7 @@ if test "$skip_meson" = =3D no; then
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0-Dkvm=3D$kvm -Dhax= =3D$hax -Dwhpx=3D$whpx -Dhvf=3D$hvf -Dnvmm=3D$nvmm \
> =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0-Dxen=3D$xen -Dxen_pci_passthrough=3D$xen_pci_passthrou= gh -Dtcg=3D$tcg \
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0-Dcocoa=3D$coco= a -Dgtk=3D$gtk -Dmpath=3D$mpath -Dsdl=3D$sdl -Dsdl_image=3D$sdl_image \
= > + =C2=A0 =C2=A0 =C2=A0 =C2=A0-Dlibusb=3D$libusb \
> =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0-Dvnc=3D$vnc -Dvnc_sasl=3D$vnc_sasl -Dvnc_jpeg=3D$v= nc_jpeg -Dvnc_png=3D$vnc_png \
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0-D= gettext=3D$gettext -Dxkbcommon=3D$xkbcommon -Du2f=3D$u2f -Dvirtiofsd=3D$vir= tiofsd \
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0-Dcapstone=3D$capstone -= Dslirp=3D$slirp -Dfdt=3D$fdt -Dbrlapi=3D$brlapi \
> diff --git a/hw/u= sb/meson.build b/hw/usb/meson.build
> index f357270d0b..bd3f8735b9 10= 0644
> --- a/hw/usb/meson.build
> +++ b/hw/usb/meson.build
&= gt; @@ -72,7 +72,7 @@ if config_host.has_key('CONFIG_USB_REDIR')> =C2=A0endif
>
> =C2=A0# usb pass-through
> -softmmu= _ss.add(when: ['CONFIG_USB', 'CONFIG_USB_LIBUSB', libusb],<= br>> +softmmu_ss.add(when: ['CONFIG_USB', libusb],
> =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if_true: files('ho= st-libusb.c'),
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 if_false: files('host-stub.c'))
> =C2=A0softmmu_ss.ad= d(when: 'CONFIG_ALL', if_true: files('host-stub.c'))
>= ; diff --git a/meson.build b/meson.build
> index c9266bd3cc..58d3a3bd= c9 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -9= 91,10 +991,12 @@ if 'CONFIG_USB_REDIR' in config_host
> =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0link_args: config_host['USB_RE= DIR_LIBS'].split())
> =C2=A0endif
> =C2=A0libusb =3D not_fo= und
> -if 'CONFIG_USB_LIBUSB' in config_host
> - =C2=A0= libusb =3D declare_dependency(compile_args: config_host['LIBUSB_CFLAGS&= #39;].split(),
> - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0link_args: config_ho= st['LIBUSB_LIBS'].split())
> +if not get_option('libusb&#= 39;).auto() or have_system
> + =C2=A0libusb =3D dependency('libus= b-1.0', required: get_option('libusb'),
> + =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0version: = 9;>=3D1.0.13', method: 'pkg-config',
> + =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0kwargs: stat= ic_kwargs)
> =C2=A0endif

Hi, I am not sure if it's right, = but I think the dection may need convert to this:

```
if not= get_option('libusb').disabled()
=C2=A0 libusb =3D dependency(&#= 39;libusb-1.0', required: get_option('libusb').auto(),
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 v= ersion: '>=3D1.0.13', method: 'pkg-config',
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 kwarg= s: static_kwargs)
endif
```

> +
> =C2=A0libpmem =3D n= ot_found
> =C2=A0if 'CONFIG_LIBPMEM' in config_host
> = =C2=A0 =C2=A0libpmem =3D declare_dependency(compile_args: config_host['= LIBPMEM_CFLAGS'].split(),
> @@ -1210,6 +1212,7 @@ config_host_dat= a.set('CONFIG_SDL', sdl.found())
> =C2=A0config_host_data.set= ('CONFIG_SDL_IMAGE', sdl_image.found())
> =C2=A0config_host_d= ata.set('CONFIG_SECCOMP', seccomp.found())
> =C2=A0config_hos= t_data.set('CONFIG_SNAPPY', snappy.found())
> +config_host_da= ta.set('CONFIG_USB_LIBUSB', libusb.found())
> =C2=A0config_ho= st_data.set('CONFIG_VHOST_USER_BLK_SERVER', have_vhost_user_blk_ser= ver)
> =C2=A0config_host_data.set('CONFIG_VNC', vnc.found())<= br>> =C2=A0config_host_data.set('CONFIG_VNC_JPEG', jpeg.found())=
> @@ -2779,7 +2782,7 @@ summary_info +=3D {'rbd support': = =C2=A0 =C2=A0 =C2=A0 rbd.found()}
> =C2=A0summary_info +=3D {'xfs= ctl support': =C2=A0 =C2=A0config_host.has_key('CONFIG_XFS')}> =C2=A0summary_info +=3D {'smartcard support': config_host.ha= s_key('CONFIG_SMARTCARD')}
> =C2=A0summary_info +=3D {'U2= F support': =C2=A0 =C2=A0 =C2=A0 u2f.found()}
> -summary_info += =3D {'libusb': =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0config_host= .has_key('CONFIG_USB_LIBUSB')}
> +summary_info +=3D {'lib= usb': =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0libusb.found()}
> = =C2=A0summary_info +=3D {'usb net redir': =C2=A0 =C2=A0 config_host= .has_key('CONFIG_USB_REDIR')}
> =C2=A0summary_info +=3D {'= ;OpenGL support': =C2=A0 =C2=A0config_host.has_key('CONFIG_OPENGL&#= 39;)}
> =C2=A0summary_info +=3D {'GBM': =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 config_host.has_key('CONFIG_GBM')}
&= gt; diff --git a/meson_options.txt b/meson_options.txt
> index ac6e90= da07..02c14d4751 100644
> --- a/meson_options.txt
> +++ b/meson= _options.txt
> @@ -86,6 +86,8 @@ option('gcrypt', type : '= ;feature', value : 'auto',
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 = description: 'libgcrypt cryptography support')
> =C2=A0option= ('libudev', type : 'feature', value : 'auto',
&g= t; =C2=A0 =C2=A0 =C2=A0 =C2=A0 description: 'Use libudev to enumerate h= ost devices')
> +option('libusb', type : 'feature'= ;, value : 'auto',
> + =C2=A0 =C2=A0 =C2=A0 description: '= ;libusb support for USB passthrough')
> =C2=A0option('lzfse&#= 39;, type : 'feature', value : 'auto',
> =C2=A0 =C2= =A0 =C2=A0 =C2=A0 description: 'lzfse support for DMG images')
&= gt; =C2=A0option('lzo', type : 'feature', value : 'auto= ',
> --
> 2.31.1
>
>
>


--
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD= =97=E5=8B=87=E5=88=9A
Yours
=C2=A0 =C2=A0 sincerely,
Yonggang Luo<= br>
--00000000000031255605c58da059--