From be014d433860b88e35a4e6cf9e1710c7afab6192 Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Mon, 30 May 2016 02:10:48 -0400 Subject: [PATCH] scons: Bump minimum gcc version to 4.8 After reaching consensus on the mailing list, this patch officially makes gcc 4.8 the minimum. A few checks in the SConstruct are cleaned up as a result. This patch also adds "-fno-omit-frame-pointer" when using ASAN (which is part of the gcc/clang recommended flags). --- SConstruct | 40 +++++++++++++++++++--------------------- src/SConscript | 9 +++++---- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/SConstruct b/SConstruct index 53dd6d352..f8eac47e6 100755 --- a/SConstruct +++ b/SConstruct @@ -675,12 +675,12 @@ else: Exit(1) if main['GCC']: - # Check for a supported version of gcc. >= 4.7 is chosen for its + # Check for a supported version of gcc. >= 4.8 is chosen for its # level of c++11 support. See # http://gcc.gnu.org/projects/cxx0x.html for details. gcc_version = readCommand([main['CXX'], '-dumpversion'], exception=False) - if compareVersions(gcc_version, "4.7") < 0: - print 'Error: gcc version 4.7 or newer required.' + if compareVersions(gcc_version, "4.8") < 0: + print 'Error: gcc version 4.8 or newer required.' print ' Installed version:', gcc_version Exit(1) @@ -690,23 +690,21 @@ if main['GCC']: # to avoid performance penalties on certain AMD chips. Older # assemblers detect this as an error, "Error: expecting string # instruction after `rep'" - if compareVersions(gcc_version, "4.8") > 0: - as_version_raw = readCommand([main['AS'], '-v', '/dev/null'], - exception=False).split() - - # version strings may contain extra distro-specific - # qualifiers, so play it safe and keep only what comes before - # the first hyphen - as_version = as_version_raw[-1].split('-')[0] if as_version_raw \ - else None - - if not as_version or compareVersions(as_version, "2.23") < 0: - print termcap.Yellow + termcap.Bold + \ - 'Warning: This combination of gcc and binutils have' + \ - ' known incompatibilities.\n' + \ - ' If you encounter build problems, please update ' + \ - 'binutils to 2.23.' + \ - termcap.Normal + as_version_raw = readCommand([main['AS'], '-v', '/dev/null'], + exception=False).split() + + # version strings may contain extra distro-specific + # qualifiers, so play it safe and keep only what comes before + # the first hyphen + as_version = as_version_raw[-1].split('-')[0] if as_version_raw else None + + if not as_version or compareVersions(as_version, "2.23") < 0: + print termcap.Yellow + termcap.Bold + \ + 'Warning: This combination of gcc and binutils have' + \ + ' known incompatibilities.\n' + \ + ' If you encounter build problems, please update ' + \ + 'binutils to 2.23.' + \ + termcap.Normal # Make sure we warn if the user has requested to compile with the # Undefined Benahvior Sanitizer and this version of gcc does not @@ -739,7 +737,7 @@ if main['GCC']: elif main['CLANG']: # Check for a supported version of clang, >= 3.1 is needed to - # support similar features as gcc 4.7. See + # support similar features as gcc 4.8. See # http://clang.llvm.org/cxx_status.html for details clang_version_re = re.compile(".* version (\d+\.\d+)") clang_version_match = clang_version_re.search(CXX_version) diff --git a/src/SConscript b/src/SConscript index d0835bda3..bb6f26fc1 100755 --- a/src/SConscript +++ b/src/SConscript @@ -1084,9 +1084,9 @@ def makeEnv(env, label, objsfx, strip = False, **kwargs): new_env.Append(LINKFLAGS='-fsanitize=undefined') # The address sanitizer is available for gcc >= 4.8 - if GetOption('with_asan') and \ - compareVersions(env['GCC_VERSION'], '4.8') >= 0: - new_env.Append(CCFLAGS='-fsanitize=address') + if GetOption('with_asan'): + new_env.Append(CCFLAGS=['-fsanitize=address', + '-fno-omit-frame-pointer']) new_env.Append(LINKFLAGS='-fsanitize=address') if env['CLANG']: @@ -1101,7 +1101,8 @@ def makeEnv(env, label, objsfx, strip = False, **kwargs): new_env.Append(LINKFLAGS='-fsanitize=undefined') if GetOption('with_asan'): - new_env.Append(CCFLAGS='-fsanitize=address') + new_env.Append(CCFLAGS=['-fsanitize=address', + '-fno-omit-frame-pointer']) new_env.Append(LINKFLAGS='-fsanitize=address') werror_env = new_env.Clone() -- 2.30.2