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).
This commit is contained in:
parent
7c8d6e3660
commit
be014d4338
2 changed files with 22 additions and 23 deletions
12
SConstruct
12
SConstruct
|
@ -675,12 +675,12 @@ else:
|
||||||
Exit(1)
|
Exit(1)
|
||||||
|
|
||||||
if main['GCC']:
|
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
|
# level of c++11 support. See
|
||||||
# http://gcc.gnu.org/projects/cxx0x.html for details.
|
# http://gcc.gnu.org/projects/cxx0x.html for details.
|
||||||
gcc_version = readCommand([main['CXX'], '-dumpversion'], exception=False)
|
gcc_version = readCommand([main['CXX'], '-dumpversion'], exception=False)
|
||||||
if compareVersions(gcc_version, "4.7") < 0:
|
if compareVersions(gcc_version, "4.8") < 0:
|
||||||
print 'Error: gcc version 4.7 or newer required.'
|
print 'Error: gcc version 4.8 or newer required.'
|
||||||
print ' Installed version:', gcc_version
|
print ' Installed version:', gcc_version
|
||||||
Exit(1)
|
Exit(1)
|
||||||
|
|
||||||
|
@ -690,15 +690,13 @@ if main['GCC']:
|
||||||
# to avoid performance penalties on certain AMD chips. Older
|
# to avoid performance penalties on certain AMD chips. Older
|
||||||
# assemblers detect this as an error, "Error: expecting string
|
# assemblers detect this as an error, "Error: expecting string
|
||||||
# instruction after `rep'"
|
# instruction after `rep'"
|
||||||
if compareVersions(gcc_version, "4.8") > 0:
|
|
||||||
as_version_raw = readCommand([main['AS'], '-v', '/dev/null'],
|
as_version_raw = readCommand([main['AS'], '-v', '/dev/null'],
|
||||||
exception=False).split()
|
exception=False).split()
|
||||||
|
|
||||||
# version strings may contain extra distro-specific
|
# version strings may contain extra distro-specific
|
||||||
# qualifiers, so play it safe and keep only what comes before
|
# qualifiers, so play it safe and keep only what comes before
|
||||||
# the first hyphen
|
# the first hyphen
|
||||||
as_version = as_version_raw[-1].split('-')[0] if as_version_raw \
|
as_version = as_version_raw[-1].split('-')[0] if as_version_raw else None
|
||||||
else None
|
|
||||||
|
|
||||||
if not as_version or compareVersions(as_version, "2.23") < 0:
|
if not as_version or compareVersions(as_version, "2.23") < 0:
|
||||||
print termcap.Yellow + termcap.Bold + \
|
print termcap.Yellow + termcap.Bold + \
|
||||||
|
@ -739,7 +737,7 @@ if main['GCC']:
|
||||||
|
|
||||||
elif main['CLANG']:
|
elif main['CLANG']:
|
||||||
# Check for a supported version of clang, >= 3.1 is needed to
|
# 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
|
# http://clang.llvm.org/cxx_status.html for details
|
||||||
clang_version_re = re.compile(".* version (\d+\.\d+)")
|
clang_version_re = re.compile(".* version (\d+\.\d+)")
|
||||||
clang_version_match = clang_version_re.search(CXX_version)
|
clang_version_match = clang_version_re.search(CXX_version)
|
||||||
|
|
|
@ -1084,9 +1084,9 @@ def makeEnv(env, label, objsfx, strip = False, **kwargs):
|
||||||
new_env.Append(LINKFLAGS='-fsanitize=undefined')
|
new_env.Append(LINKFLAGS='-fsanitize=undefined')
|
||||||
|
|
||||||
# The address sanitizer is available for gcc >= 4.8
|
# The address sanitizer is available for gcc >= 4.8
|
||||||
if GetOption('with_asan') and \
|
if GetOption('with_asan'):
|
||||||
compareVersions(env['GCC_VERSION'], '4.8') >= 0:
|
new_env.Append(CCFLAGS=['-fsanitize=address',
|
||||||
new_env.Append(CCFLAGS='-fsanitize=address')
|
'-fno-omit-frame-pointer'])
|
||||||
new_env.Append(LINKFLAGS='-fsanitize=address')
|
new_env.Append(LINKFLAGS='-fsanitize=address')
|
||||||
|
|
||||||
if env['CLANG']:
|
if env['CLANG']:
|
||||||
|
@ -1101,7 +1101,8 @@ def makeEnv(env, label, objsfx, strip = False, **kwargs):
|
||||||
new_env.Append(LINKFLAGS='-fsanitize=undefined')
|
new_env.Append(LINKFLAGS='-fsanitize=undefined')
|
||||||
|
|
||||||
if GetOption('with_asan'):
|
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')
|
new_env.Append(LINKFLAGS='-fsanitize=address')
|
||||||
|
|
||||||
werror_env = new_env.Clone()
|
werror_env = new_env.Clone()
|
||||||
|
|
Loading…
Reference in a new issue