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 <th...@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 :|