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: Mon, 20 Jun 2022 16:41:41 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1

On 17/06/2022 07:12, Paolo Bonzini wrote:
> Hi Matheus,
> 
> could you please test the tests-tcg-next branch at
> https://gitlab.com/bonzini/qemu?

At be6090bcac10, it works if no BE toolchain is present. Otherwise, the 
script probes powerpc64-linux-gnu-gcc instead of the native tools for 
ppc64le-linux-user, and then do_compiler fails because the 
$target_cflags contains -mlittle-endian.

> 
> 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.

With this workaround we can run the tests on master. However, it works 
because linux-user tests only use CC. I wonder if the --cross-cc-* 
options will remain useful in the future; it seems that only 
--cross-prefix-* should be used now that more tools are exported in the 
config-<target>.mak

>> 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?
>>

AFAICT, $cpu is always host-related, but after the normalization it 
seems more like the architecture than the CPU name... Maybe we should 
call them $host_cpu and $host_arch?

>>>
>>> [1]
>>> https://gitlab.com/qemu-project/qemu/-/blob/2ad60f6f8c12ca0acd8834fdd70e088361b8791f/configure#L611
>>
>>
>> --
>> Alex Bennée
>>

Thanks,
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]