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



reply via email to

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