From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Thomas Huth <thuth@redhat.com>
Cc: qemu-devel@nongnu.org, Richard Henderson <rth@twiddle.net>,
pbonzini@redhat.com, peter.maydell@linaro.org
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 [thread overview]
Message-ID: <20181203141611.GG8870@redhat.com> (raw)
In-Reply-To: <1543845937-300-2-git-send-email-thuth@redhat.com>
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 <thuth@redhat.com>
> ---
> 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 :|
next prev parent reply other threads:[~2018-12-03 14:16 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-03 14:05 [Qemu-devel] [PATCH for-4.0 0/7] Assume GCC v4.8 and Clang v3.4 as minimum compiler versions Thomas Huth
2018-12-03 14:05 ` [Qemu-devel] [PATCH for-4.0 1/7] configure: Add a test for the minimum compiler version Thomas Huth
2018-12-03 14:16 ` Daniel P. Berrangé [this message]
2018-12-03 14:18 ` Peter Maydell
2018-12-03 14:27 ` Thomas Huth
2018-12-03 15:33 ` Daniel P. Berrangé
2018-12-05 17:30 ` Philippe Mathieu-Daudé
2018-12-06 5:34 ` Thomas Huth
2018-12-06 9:53 ` Daniel P. Berrangé
2018-12-03 14:05 ` [Qemu-devel] [PATCH for-4.0 2/7] Remove support for compilers that can not do 128-bit arithmetics Thomas Huth
2018-12-03 14:11 ` Richard Henderson
2018-12-03 14:16 ` Thomas Huth
2018-12-03 14:05 ` [Qemu-devel] [PATCH for-4.0 3/7] configure: Remove old -fno-gcse workaround for GCC 4.6.x and 4.7.[012] Thomas Huth
2018-12-03 16:11 ` Richard Henderson
2018-12-03 14:05 ` [Qemu-devel] [PATCH for-4.0 4/7] Remove QEMU_ARTIFICIAL macro Thomas Huth
2018-12-03 16:13 ` Richard Henderson
2018-12-03 14:05 ` [Qemu-devel] [PATCH for-4.0 5/7] tcg/tcg.h: Remove GCC check for tcg_debug_assert() macro Thomas Huth
2018-12-03 16:13 ` Richard Henderson
2018-12-03 14:05 ` [Qemu-devel] [PATCH for-4.0 6/7] audio/alsaaudio: Remove compiler check around pragma Thomas Huth
2018-12-03 14:05 ` [Qemu-devel] [PATCH for-4.0 7/7] includes: Replace QEMU_GNUC_PREREQ with "__has_builtin || !defined(__clang__)" Thomas Huth
2018-12-03 16:20 ` Richard Henderson
2018-12-03 17:36 ` [Qemu-devel] [PATCH for-4.0 0/7] Assume GCC v4.8 and Clang v3.4 as minimum compiler versions no-reply
2018-12-04 2:36 ` no-reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181203141611.GG8870@redhat.com \
--to=berrange@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).