[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: |
Daniel P . Berrangé |
Subject: |
Re: [Qemu-devel] [PATCH for-4.0 1/7] configure: Add a test for the minimum compiler version |
Date: |
Mon, 3 Dec 2018 14:16:11 +0000 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
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.
Compare clang on Ubuntu:
https://travis-ci.org/qemu/qemu/jobs/460892603
$ clang --version
clang version 5.0.0 (tags/RELEASE_500/final)
with clang on macOS:
https://travis-ci.org/qemu/qemu/jobs/460892611
$ clang --version
Apple LLVM version 9.1.0 (clang-902.0.39.2)
Fortunately there's a mapping recorded here:
https://en.wikipedia.org/wiki/Xcode#Latest_versions
See "LLVM" and "CLang version string" columns.
IOW, to require clang >= 3.4 on macOS, we would need to require
their version >= 5.1
> +#elif defined(__GNUC__) && defined(__GNUC_MINOR__)
> +# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
> +# error You need at least GCC v4.8 to compile QEMU
> +# endif
> +#else
> +# error You either need GCC or Clang to compiler QEMU
> +#endif
> +int main (void) { return 0; }
> +EOF
> +if ! compile_prog "" "" ; then
> + error_exit "You need at least GCC v4.8 or Clang v3.4 to compiler QEMU"
> +fi
> +
> gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
> gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers
> $gcc_flags"
> gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs
> $gcc_flags"
> --
> 1.8.3.1
>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
[Qemu-devel] [PATCH for-4.0 6/7] audio/alsaaudio: Remove compiler check around pragma, Thomas Huth, 2018/12/03
[Qemu-devel] [PATCH for-4.0 2/7] Remove support for compilers that can not do 128-bit arithmetics, Thomas Huth, 2018/12/03