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: Matheus Kowalczuk Ferst
Subject: Re: [PULL 20/33] configure: handle host compiler in probe_target_compiler
Date: Wed, 15 Jun 2022 11:57:36 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1

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]