changeset 0e466ba12a99 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=0e466ba12a99
description:
scons: Bump compiler requirement to gcc >= 4.7 and clang >= 3.1
This patch updates the compiler minimum requirement to gcc 4.7 and
clang 3.1, thus allowing:
1. Explicit virtual overrides (no need for M5_ATTR_OVERRIDE)
2. Non-static data member initializers
3. Template aliases
4. Delegating constructors
This patch also enables a transition from --std=c++0x to --std=c++11.
diffstat:
SConstruct | 22 ++++++++++------------
src/SConscript | 18 ++++--------------
2 files changed, 14 insertions(+), 26 deletions(-)
diffs (95 lines):
diff -r 73d4798871a5 -r 0e466ba12a99 SConstruct
--- a/SConstruct Thu Jun 25 11:58:30 2015 -0500
+++ b/SConstruct Fri Jul 03 10:14:15 2015 -0400
@@ -556,9 +556,8 @@
# Enable -Wall and then disable the few warnings that we
# consistently violate
main.Append(CCFLAGS=['-Wall', '-Wno-sign-compare', '-Wundef'])
- # We always compile using C++11, but only gcc >= 4.7 and clang 3.1
- # actually use that name, so we stick with c++0x
- main.Append(CXXFLAGS=['-std=c++0x'])
+ # We always compile using C++11
+ main.Append(CXXFLAGS=['-std=c++11'])
# Add selected sanity checks from -Wextra
main.Append(CXXFLAGS=['-Wmissing-field-initializers',
'-Woverloaded-virtual'])
@@ -582,13 +581,12 @@
Exit(1)
if main['GCC']:
- # Check for a supported version of gcc. >= 4.6 is chosen for its
+ # Check for a supported version of gcc. >= 4.7 is chosen for its
# level of c++11 support. See
- # http://gcc.gnu.org/projects/cxx0x.html for details. 4.6 is also
- # the first version with proper LTO support.
+ # http://gcc.gnu.org/projects/cxx0x.html for details.
gcc_version = readCommand([main['CXX'], '-dumpversion'], exception=False)
- if compareVersions(gcc_version, "4.6") < 0:
- print 'Error: gcc version 4.6 or newer required.'
+ if compareVersions(gcc_version, "4.7") < 0:
+ print 'Error: gcc version 4.7 or newer required.'
print ' Installed version:', gcc_version
Exit(1)
@@ -642,15 +640,15 @@
'-fno-builtin-realloc', '-fno-builtin-free'])
elif main['CLANG']:
- # Check for a supported version of clang, >= 3.0 is needed to
- # support similar features as gcc 4.6. See
+ # Check for a supported version of clang, >= 3.1 is needed to
+ # support similar features as gcc 4.7. 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)
if (clang_version_match):
clang_version = clang_version_match.groups()[0]
- if compareVersions(clang_version, "3.0") < 0:
- print 'Error: clang version 3.0 or newer required.'
+ if compareVersions(clang_version, "3.1") < 0:
+ print 'Error: clang version 3.1 or newer required.'
print ' Installed version:', clang_version
Exit(1)
else:
diff -r 73d4798871a5 -r 0e466ba12a99 src/SConscript
--- a/src/SConscript Thu Jun 25 11:58:30 2015 -0500
+++ b/src/SConscript Fri Jul 03 10:14:15 2015 -0400
@@ -1015,7 +1015,8 @@
# Add additional warnings here that should not be applied to
# the SWIG generated code
- new_env.Append(CXXFLAGS='-Wmissing-declarations')
+ new_env.Append(CXXFLAGS=['-Wmissing-declarations',
+ '-Wdelete-non-virtual-dtor'])
if env['GCC']:
# Depending on the SWIG version, we also need to supress
@@ -1023,15 +1024,8 @@
# initializers.
swig_env.Append(CCFLAGS=['-Wno-uninitialized',
'-Wno-missing-field-initializers',
- '-Wno-unused-but-set-variable'])
-
- # If gcc supports it, also warn for deletion of derived
- # classes with non-virtual desctructors. For gcc >= 4.7 we
- # also have to disable warnings about the SWIG code having
- # potentially uninitialized variables.
- if compareVersions(env['GCC_VERSION'], '4.7') >= 0:
- new_env.Append(CXXFLAGS='-Wdelete-non-virtual-dtor')
- swig_env.Append(CCFLAGS='-Wno-maybe-uninitialized')
+ '-Wno-unused-but-set-variable',
+ '-Wno-maybe-uninitialized'])
# Only gcc >= 4.9 supports UBSan, so check both the version
# and the command-line option before adding the compiler and
@@ -1042,10 +1036,6 @@
new_env.Append(LINKFLAGS='-fsanitize=undefined')
if env['CLANG']:
- # Always enable the warning for deletion of derived classes
- # with non-virtual destructors
- new_env.Append(CXXFLAGS=['-Wdelete-non-virtual-dtor'])
-
swig_env.Append(CCFLAGS=[
# Some versions of SWIG can return uninitialized values
'-Wno-sometimes-uninitialized',
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev