[Qemu-devel] [PULL 24/42] configure: add --disable-tcg configure option

Paolo Bonzini posted 42 patches 8 years, 7 months ago
[Qemu-devel] [PULL 24/42] configure: add --disable-tcg configure option
Posted by Paolo Bonzini 8 years, 7 months ago
This lets you build without TCG (hardware accelerationor qtest only).  When
this flag is passed to configure, it will automatically filter out the target
list to only those that support KVM or Xen or HAX.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/configure b/configure
index ae69e96..806658c 100755
--- a/configure
+++ b/configure
@@ -232,7 +232,12 @@ supported_target() {
             return 1
             ;;
     esac
-    return 0
+    test "$tcg" = "yes" && return 0
+    supported_kvm_target "$1" && return 0
+    supported_xen_target "$1" && return 0
+    supported_hax_target "$1" && return 0
+    print_error "TCG disabled, but hardware accelerator not available for '$target'"
+    return 1
 }
 
 # default parameters
@@ -296,6 +301,7 @@ cap_ng=""
 attr=""
 libattr=""
 xfs=""
+tcg="yes"
 
 vhost_net="no"
 vhost_scsi="no"
@@ -1033,6 +1039,10 @@ for opt do
   ;;
   --enable-cap-ng) cap_ng="yes"
   ;;
+  --disable-tcg) tcg="no"
+  ;;
+  --enable-tcg) tcg="yes"
+  ;;
   --disable-spice) spice="no"
   ;;
   --enable-spice) spice="yes"
@@ -5195,7 +5205,6 @@ echo "module support    $modules"
 echo "host CPU          $cpu"
 echo "host big endian   $bigendian"
 echo "target list       $target_list"
-echo "tcg debug enabled $debug_tcg"
 echo "gprof enabled     $gprof"
 echo "sparse enabled    $sparse"
 echo "strip binaries    $strip_opt"
@@ -5250,8 +5259,12 @@ echo "ATTR/XATTR support $attr"
 echo "Install blobs     $blobs"
 echo "KVM support       $kvm"
 echo "HAX support       $hax"
+echo "TCG support       $tcg"
+if test "$tcg" = "yes" ; then
+    echo "TCG debug enabled $debug_tcg"
+    echo "TCG interpreter   $tcg_interpreter"
+fi
 echo "RDMA support      $rdma"
-echo "TCG interpreter   $tcg_interpreter"
 echo "fdt support       $fdt"
 echo "preadv support    $preadv"
 echo "fdatasync         $fdatasync"
@@ -5694,8 +5707,11 @@ fi
 if test "$signalfd" = "yes" ; then
   echo "CONFIG_SIGNALFD=y" >> $config_host_mak
 fi
-if test "$tcg_interpreter" = "yes" ; then
-  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
+if test "$tcg" = "yes"; then
+  echo "CONFIG_TCG=y" >> $config_host_mak
+  if test "$tcg_interpreter" = "yes" ; then
+    echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
+  fi
 fi
 if test "$fdatasync" = "yes" ; then
   echo "CONFIG_FDATASYNC=y" >> $config_host_mak
-- 
1.8.3.1



Re: [Qemu-devel] [PULL 24/42] configure: add --disable-tcg configure option
Posted by Philippe Mathieu-Daudé 8 years, 7 months ago
Hi Paolo,

trying "./configure --disable-docs --disable-tcg" I get:

   CC      x86_64-softmmu/exec.o
qemu/exec.c: In function ‘breakpoint_invalidate’:
qemu/exec.c:797:9: error: implicit declaration of function 
‘tb_invalidate_phys_addr’ [-Werror=implicit-function-declaration]
          tb_invalidate_phys_addr(cpu->cpu_ases[asidx].as,
          ^~~~~~~~~~~~~~~~~~~~~~~
qemu/exec.c:797:9: error: nested extern declaration of 
‘tb_invalidate_phys_addr’ [-Werror=nested-externs]
cc1: all warnings being treated as errors
qemu/rules.mak:66: recipe for target 'exec.o' failed
make[1]: *** [exec.o] Error 1
Makefile:328: recipe for target 'subdir-x86_64-softmmu' failed
make: *** [subdir-x86_64-softmmu] Error 2

due to include/exec/exec-all.h:

#if !defined(CONFIG_USER_ONLY) && defined(CONFIG_TCG)
void tb_invalidate_phys_addr(AddressSpace *as, hwaddr addr);
#else
...

On 07/05/2017 04:14 AM, Paolo Bonzini wrote:
> This lets you build without TCG (hardware accelerationor qtest only).  When
> this flag is passed to configure, it will automatically filter out the target
> list to only those that support KVM or Xen or HAX.
> 
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>   configure | 26 +++++++++++++++++++++-----
>   1 file changed, 21 insertions(+), 5 deletions(-)
> 
> diff --git a/configure b/configure
> index ae69e96..806658c 100755
> --- a/configure
> +++ b/configure
> @@ -232,7 +232,12 @@ supported_target() {
>               return 1
>               ;;
>       esac
> -    return 0
> +    test "$tcg" = "yes" && return 0
> +    supported_kvm_target "$1" && return 0
> +    supported_xen_target "$1" && return 0
> +    supported_hax_target "$1" && return 0
> +    print_error "TCG disabled, but hardware accelerator not available for '$target'"
> +    return 1
>   }
>   
>   # default parameters
> @@ -296,6 +301,7 @@ cap_ng=""
>   attr=""
>   libattr=""
>   xfs=""
> +tcg="yes"
>   
>   vhost_net="no"
>   vhost_scsi="no"
> @@ -1033,6 +1039,10 @@ for opt do
>     ;;
>     --enable-cap-ng) cap_ng="yes"
>     ;;
> +  --disable-tcg) tcg="no"
> +  ;;
> +  --enable-tcg) tcg="yes"
> +  ;;
>     --disable-spice) spice="no"
>     ;;
>     --enable-spice) spice="yes"
> @@ -5195,7 +5205,6 @@ echo "module support    $modules"
>   echo "host CPU          $cpu"
>   echo "host big endian   $bigendian"
>   echo "target list       $target_list"
> -echo "tcg debug enabled $debug_tcg"
>   echo "gprof enabled     $gprof"
>   echo "sparse enabled    $sparse"
>   echo "strip binaries    $strip_opt"
> @@ -5250,8 +5259,12 @@ echo "ATTR/XATTR support $attr"
>   echo "Install blobs     $blobs"
>   echo "KVM support       $kvm"
>   echo "HAX support       $hax"
> +echo "TCG support       $tcg"
> +if test "$tcg" = "yes" ; then
> +    echo "TCG debug enabled $debug_tcg"
> +    echo "TCG interpreter   $tcg_interpreter"
> +fi
>   echo "RDMA support      $rdma"
> -echo "TCG interpreter   $tcg_interpreter"
>   echo "fdt support       $fdt"
>   echo "preadv support    $preadv"
>   echo "fdatasync         $fdatasync"
> @@ -5694,8 +5707,11 @@ fi
>   if test "$signalfd" = "yes" ; then
>     echo "CONFIG_SIGNALFD=y" >> $config_host_mak
>   fi
> -if test "$tcg_interpreter" = "yes" ; then
> -  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
> +if test "$tcg" = "yes"; then
> +  echo "CONFIG_TCG=y" >> $config_host_mak
> +  if test "$tcg_interpreter" = "yes" ; then
> +    echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
> +  fi
>   fi
>   if test "$fdatasync" = "yes" ; then
>     echo "CONFIG_FDATASYNC=y" >> $config_host_mak
> 

Re: [Qemu-devel] [PULL 24/42] configure: add --disable-tcg configure option
Posted by Paolo Bonzini 8 years, 7 months ago

----- Original Message -----
> From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
> To: "Paolo Bonzini" <pbonzini@redhat.com>, qemu-devel@nongnu.org
> Cc: "Anthony Liguori" <aliguori@us.ibm.com>
> Sent: Friday, July 14, 2017 7:24:29 AM
> Subject: Re: [Qemu-devel] [PULL 24/42] configure: add --disable-tcg configure option
> 
> Hi Paolo,
> 
> trying "./configure --disable-docs --disable-tcg" I get:
> 
>    CC      x86_64-softmmu/exec.o
> qemu/exec.c: In function ‘breakpoint_invalidate’:
> qemu/exec.c:797:9: error: implicit declaration of function
> ‘tb_invalidate_phys_addr’ [-Werror=implicit-function-declaration]
>           tb_invalidate_phys_addr(cpu->cpu_ases[asidx].as,
>           ^~~~~~~~~~~~~~~~~~~~~~~
> qemu/exec.c:797:9: error: nested extern declaration of
> ‘tb_invalidate_phys_addr’ [-Werror=nested-externs]
> cc1: all warnings being treated as errors
> qemu/rules.mak:66: recipe for target 'exec.o' failed
> make[1]: *** [exec.o] Error 1
> Makefile:328: recipe for target 'subdir-x86_64-softmmu' failed
> make: *** [subdir-x86_64-softmmu] Error 2
> 
> due to include/exec/exec-all.h:
> 
> #if !defined(CONFIG_USER_ONLY) && defined(CONFIG_TCG)
> void tb_invalidate_phys_addr(AddressSpace *as, hwaddr addr);
> #else

This is introduced by Pranith's patch.  I will respin my pull request.

Paolo

> 
> On 07/05/2017 04:14 AM, Paolo Bonzini wrote:
> > This lets you build without TCG (hardware accelerationor qtest only).  When
> > this flag is passed to configure, it will automatically filter out the
> > target
> > list to only those that support KVM or Xen or HAX.
> > 
> > Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> > ---
> >   configure | 26 +++++++++++++++++++++-----
> >   1 file changed, 21 insertions(+), 5 deletions(-)
> > 
> > diff --git a/configure b/configure
> > index ae69e96..806658c 100755
> > --- a/configure
> > +++ b/configure
> > @@ -232,7 +232,12 @@ supported_target() {
> >               return 1
> >               ;;
> >       esac
> > -    return 0
> > +    test "$tcg" = "yes" && return 0
> > +    supported_kvm_target "$1" && return 0
> > +    supported_xen_target "$1" && return 0
> > +    supported_hax_target "$1" && return 0
> > +    print_error "TCG disabled, but hardware accelerator not available for
> > '$target'"
> > +    return 1
> >   }
> >   
> >   # default parameters
> > @@ -296,6 +301,7 @@ cap_ng=""
> >   attr=""
> >   libattr=""
> >   xfs=""
> > +tcg="yes"
> >   
> >   vhost_net="no"
> >   vhost_scsi="no"
> > @@ -1033,6 +1039,10 @@ for opt do
> >     ;;
> >     --enable-cap-ng) cap_ng="yes"
> >     ;;
> > +  --disable-tcg) tcg="no"
> > +  ;;
> > +  --enable-tcg) tcg="yes"
> > +  ;;
> >     --disable-spice) spice="no"
> >     ;;
> >     --enable-spice) spice="yes"
> > @@ -5195,7 +5205,6 @@ echo "module support    $modules"
> >   echo "host CPU          $cpu"
> >   echo "host big endian   $bigendian"
> >   echo "target list       $target_list"
> > -echo "tcg debug enabled $debug_tcg"
> >   echo "gprof enabled     $gprof"
> >   echo "sparse enabled    $sparse"
> >   echo "strip binaries    $strip_opt"
> > @@ -5250,8 +5259,12 @@ echo "ATTR/XATTR support $attr"
> >   echo "Install blobs     $blobs"
> >   echo "KVM support       $kvm"
> >   echo "HAX support       $hax"
> > +echo "TCG support       $tcg"
> > +if test "$tcg" = "yes" ; then
> > +    echo "TCG debug enabled $debug_tcg"
> > +    echo "TCG interpreter   $tcg_interpreter"
> > +fi
> >   echo "RDMA support      $rdma"
> > -echo "TCG interpreter   $tcg_interpreter"
> >   echo "fdt support       $fdt"
> >   echo "preadv support    $preadv"
> >   echo "fdatasync         $fdatasync"
> > @@ -5694,8 +5707,11 @@ fi
> >   if test "$signalfd" = "yes" ; then
> >     echo "CONFIG_SIGNALFD=y" >> $config_host_mak
> >   fi
> > -if test "$tcg_interpreter" = "yes" ; then
> > -  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
> > +if test "$tcg" = "yes"; then
> > +  echo "CONFIG_TCG=y" >> $config_host_mak
> > +  if test "$tcg_interpreter" = "yes" ; then
> > +    echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
> > +  fi
> >   fi
> >   if test "$fdatasync" = "yes" ; then
> >     echo "CONFIG_FDATASYNC=y" >> $config_host_mak
> > 
> 

Re: [Qemu-devel] [PULL 24/42] configure: add --disable-tcg configure option
Posted by Philippe Mathieu-Daudé 8 years, 6 months ago
On 07/14/2017 06:02 AM, Paolo Bonzini wrote:
>> From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
>> To: "Paolo Bonzini" <pbonzini@redhat.com>, qemu-devel@nongnu.org
>> Cc: "Anthony Liguori" <aliguori@us.ibm.com>
>> Sent: Friday, July 14, 2017 7:24:29 AM
>> Subject: Re: [Qemu-devel] [PULL 24/42] configure: add --disable-tcg configure option
>>
>> Hi Paolo,
>>
>> trying "./configure --disable-docs --disable-tcg" I get:
>>
>>     CC      x86_64-softmmu/exec.o
>> qemu/exec.c: In function ‘breakpoint_invalidate’:
>> qemu/exec.c:797:9: error: implicit declaration of function
>> ‘tb_invalidate_phys_addr’ [-Werror=implicit-function-declaration]
>>            tb_invalidate_phys_addr(cpu->cpu_ases[asidx].as,
>>            ^~~~~~~~~~~~~~~~~~~~~~~
>> qemu/exec.c:797:9: error: nested extern declaration of
>> ‘tb_invalidate_phys_addr’ [-Werror=nested-externs]
>> cc1: all warnings being treated as errors
>> qemu/rules.mak:66: recipe for target 'exec.o' failed
>> make[1]: *** [exec.o] Error 1
>> Makefile:328: recipe for target 'subdir-x86_64-softmmu' failed
>> make: *** [subdir-x86_64-softmmu] Error 2
>>
>> due to include/exec/exec-all.h:
>>
>> #if !defined(CONFIG_USER_ONLY) && defined(CONFIG_TCG)
>> void tb_invalidate_phys_addr(AddressSpace *as, hwaddr addr);
>> #else
> 
> This is introduced by Pranith's patch.  I will respin my pull request.
> 
> Paolo

I pulled master with your PR merged and it now compiles fine, thank you.