qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PULL 20/33] configure: handle host compiler in probe_target_compile


From: Paolo Bonzini
Subject: Re: [PULL 20/33] configure: handle host compiler in probe_target_compiler
Date: Fri, 17 Jun 2022 12:12:12 +0200

Hi Matheus,

could you please test the tests-tcg-next branch at
https://gitlab.com/bonzini/qemu?

Thanks,

Paolo

On Thu, Jun 16, 2022 at 3:23 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
>
> Matheus Kowalczuk Ferst <matheus.ferst@eldorado.org.br> writes:
>
> > On 01/06/2022 15:05, Alex Bennée wrote:
> >> From: Paolo Bonzini <pbonzini@redhat.com>
> >>
> >> In preparation for handling more binaries than just cc, handle
> >> the case of "probe_target_compiler $cpu" directly in the function,
> >> setting the target_* variables based on the ones that are used to
> >> build QEMU.  The clang check also needs to be moved after this
> >> fallback.
> >>
> >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> >> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> >> Message-Id: <20220517092616.1272238-10-pbonzini@redhat.com>
> >> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> >> Message-Id: <20220527153603.887929-21-alex.bennee@linaro.org>
> >
> > Hi,
> >
> > After this patch, a clean build in ppc64le hosts will not build
> > ppc64{,le}-linux-user tests with "make check-tcg"
> >
> >>
> >> diff --git a/configure b/configure
> >> index fbf6d39f96..217c8b3cac 100755
> >> --- a/configure
> >> +++ b/configure
> >> @@ -954,10 +954,6 @@ case $git_submodules_action in
> >>       ;;
> >>   esac
> >>
> >> -if eval test -z "\${cross_cc_$cpu}"; then
> >> -    eval "cross_cc_${cpu}=\$cc"
> >> -fi
> >> -
> >>   default_target_list=""
> >>   mak_wilds=""
> >>
> >> @@ -2008,13 +2004,6 @@ probe_target_compiler() {
> >>     if eval test -n "\"\${cross_cc_$1}\""; then
> >>       if eval has "\"\${cross_cc_$1}\""; then
> >>         eval "target_cc=\"\${cross_cc_$1}\""
> >> -      case $1 in
> >> -        i386|x86_64)
> >> -          if $target_cc --version | grep -qi "clang"; then
> >> -            unset target_cc
> >> -          fi
> >> -          ;;
> >> -      esac
> >>       fi
> >>     fi
> >>     if eval test -n "\"\${cross_as_$1}\""; then
> >> @@ -2027,6 +2016,20 @@ probe_target_compiler() {
> >>         eval "target_ld=\"\${cross_ld_$1}\""
> >>       fi
> >>     fi
> >> +  if test "$1" = $cpu; then > +    : ${target_cc:=$cc}
> >> +    : ${target_as:=$as}
> >> +    : ${target_ld:=$ld}
> >> +  fi
> >
> > $cpu is normalized[1] to ppc64 on little-endian hosts, so
> > ppc64le-linux-user will not have $target_{cc,as,ld} set, and
> > ppc64-linux-user will have them set to a toolchain that may not support
> > -mbig-endian. I suppose we have a similar problem with MIPS targets on
> > MIPS hosts.
>
> For now you can always explicitly tell configure about the host compiler
> with:
>
>  --cross-cc-ppc64le=gcc
>
> but we should fix the broken detection. It seems the var cpu has an
> overloaded meaning so I wonder if we just need an explicit host_cpu
> setting when we normalize cpu?
>
> >
> > [1]
> > https://gitlab.com/qemu-project/qemu/-/blob/2ad60f6f8c12ca0acd8834fdd70e088361b8791f/configure#L611
>
>
> --
> Alex Bennée
>

On Wed, Jun 15, 2022 at 1:57 PM Matheus Kowalczuk Ferst
<matheus.ferst@eldorado.org.br> wrote:
>
> On 01/06/2022 15:05, Alex Bennée wrote:
> > From: Paolo Bonzini <pbonzini@redhat.com>
> >
> > In preparation for handling more binaries than just cc, handle
> > the case of "probe_target_compiler $cpu" directly in the function,
> > setting the target_* variables based on the ones that are used to
> > build QEMU.  The clang check also needs to be moved after this
> > fallback.
> >
> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> > Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> > Message-Id: <20220517092616.1272238-10-pbonzini@redhat.com>
> > Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> > Message-Id: <20220527153603.887929-21-alex.bennee@linaro.org>
>
> Hi,
>
> After this patch, a clean build in ppc64le hosts will not build
> ppc64{,le}-linux-user tests with "make check-tcg"
>
> >
> > diff --git a/configure b/configure
> > index fbf6d39f96..217c8b3cac 100755
> > --- a/configure
> > +++ b/configure
> > @@ -954,10 +954,6 @@ case $git_submodules_action in
> >       ;;
> >   esac
> >
> > -if eval test -z "\${cross_cc_$cpu}"; then
> > -    eval "cross_cc_${cpu}=\$cc"
> > -fi
> > -
> >   default_target_list=""
> >   mak_wilds=""
> >
> > @@ -2008,13 +2004,6 @@ probe_target_compiler() {
> >     if eval test -n "\"\${cross_cc_$1}\""; then
> >       if eval has "\"\${cross_cc_$1}\""; then
> >         eval "target_cc=\"\${cross_cc_$1}\""
> > -      case $1 in
> > -        i386|x86_64)
> > -          if $target_cc --version | grep -qi "clang"; then
> > -            unset target_cc
> > -          fi
> > -          ;;
> > -      esac
> >       fi
> >     fi
> >     if eval test -n "\"\${cross_as_$1}\""; then
> > @@ -2027,6 +2016,20 @@ probe_target_compiler() {
> >         eval "target_ld=\"\${cross_ld_$1}\""
> >       fi
> >     fi
> > +  if test "$1" = $cpu; then > +    : ${target_cc:=$cc}
> > +    : ${target_as:=$as}
> > +    : ${target_ld:=$ld}
> > +  fi
>
> $cpu is normalized[1] to ppc64 on little-endian hosts, so
> ppc64le-linux-user will not have $target_{cc,as,ld} set, and
> ppc64-linux-user will have them set to a toolchain that may not support
> -mbig-endian. I suppose we have a similar problem with MIPS targets on
> MIPS hosts.
>
> [1]
> https://gitlab.com/qemu-project/qemu/-/blob/2ad60f6f8c12ca0acd8834fdd70e088361b8791f/configure#L611
>
> --
> Matheus K. Ferst
> Instituto de Pesquisas ELDORADO <http://www.eldorado.org.br/>
> Analista de Software
> Aviso Legal - Disclaimer <https://www.eldorado.org.br/disclaimer.html>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]