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: Alex Bennée
Subject: Re: [PULL 20/33] configure: handle host compiler in probe_target_compiler
Date: Thu, 16 Jun 2022 02:20:56 +0100
User-agent: mu4e 1.7.27; emacs 28.1.50

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



reply via email to

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