qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for-4.0 1/7] configure: Add a test for the minim


From: Thomas Huth
Subject: Re: [Qemu-devel] [PATCH for-4.0 1/7] configure: Add a test for the minimum compiler version
Date: Mon, 3 Dec 2018 15:27:35 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1

On 2018-12-03 15:16, Daniel P. Berrangé wrote:
> On Mon, Dec 03, 2018 at 03:05:31PM +0100, Thomas Huth wrote:
>> So far we only had implicit requirements for the minimum compiler version,
>> e.g. we require at least GCC 4.1 for the support of atomics. However,
>> such old compiler versions are not tested anymore by the developers, so
>> they are not really supported anymore. Since we recently declared explicitly
>> what platforms we intend to support, we can also get more explicit on the
>> compiler version now. The supported distributions use the following version
>> of GCC:
>>
>>       RHEL-7: 4.8.5
>>       Debian (Stretch): 6.3.0
>>       Debian (Jessie): 4.8.4
>>       OpenBSD (ports): 4.9.4
>>       FreeBSD (ports): 8.2.0
>>       OpenSUSE Leap 15: 7.3.1
>>       Ubuntu (Xenial): 5.3.1
>>       macOS (Homebrew): 8.2.0
>>
>> So we can safely assume GCC 4.8 these days. For Clang, the situation is
>> a little bit more ambiguous, since it is sometimes not available in the
>> main distros but rather third party repositories. At least Debian Jessie
>> uses version 3.5, and EPEL7 for RHEL7 uses 3.4, so let's use 3.4 as
>> minimum Clang version now - we still can adjust this later if necessary.
>>
>> Signed-off-by: Thomas Huth <address@hidden>
>> ---
>>  configure | 19 +++++++++++++++++++
>>  1 file changed, 19 insertions(+)
>>
>> diff --git a/configure b/configure
>> index 0a3c6a7..f1e305e 100755
>> --- a/configure
>> +++ b/configure
>> @@ -1840,6 +1840,25 @@ if test "$bogus_os" = "yes"; then
>>      error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')"
>>  fi
>>  
>> +# Check whether the compiler matches our minimum requirements:
>> +cat > $TMPC << EOF
>> +#if defined(__clang_major__) && defined(__clang_minor__)
>> +# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4)
>> +#  error You need at least Clang v3.4 to compile QEMU
>> +# endif
> 
> NB although this will succeed, it is not technically checking the
> right thing on macOS platforms as their clang used a completely
> different numbering scheme. It just happens to have larger numbers
> than upstream clang, so we'll always succeed.

Does that only apply to the version string that is reported by "clang
--version" or does it also apply to the __clang_major/minor__ macros?

In the latter case, I think I could add a comment to the patch here.

I'm also not sure whether the LLVM version necessarily matches the Clang
version? In older versions, you can also see "4.2 (clang-425.0.28)
(based on LLVM 3.2svn)" in the tables there...

> IOW, to require clang >= 3.4 on macOS, we would need to require
> their version >= 5.1

If they also messed up the macros, I think we likely have a problem the
other way round: What upstream Clang version corresponds to the Apple
Clang version 3.4 ? ... but if I interpret the old table right, they
just started the confusion with 5.0, so I think the check above should
still be fine.

 Thomas



reply via email to

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