scons: Unify the flags shared by gcc and clang

This patch restructures and unifies the flags used by gcc and clang as
they are largely the same. The common parts are now dealt with in a
shared block of code, and the few bits and pieces that are
specifically affecting either gcc or clang are done separately.
This commit is contained in:
Andreas Hansson
2013-02-19 05:56:07 -05:00
parent 5eddb63877
commit 08a5fd328b
2 changed files with 63 additions and 29 deletions

View File

@@ -893,25 +893,34 @@ def makeEnv(label, objsfx, strip = False, **kwargs):
swig_env = new_env.Clone()
swig_env.Append(CCFLAGS='-Werror')
# Both gcc and clang have issues with unused labels and values in
# the SWIG generated code
swig_env.Append(CCFLAGS=['-Wno-unused-label', '-Wno-unused-value'])
# Add additional warnings here that should not be applied to
# the SWIG generated code
new_env.Append(CXXFLAGS='-Wmissing-declarations')
if env['GCC']:
swig_env.Append(CCFLAGS=['-Wno-uninitialized', '-Wno-sign-compare',
'-Wno-parentheses', '-Wno-unused-label',
'-Wno-unused-value'])
# Depending on the SWIG version, we also need to supress
# warnings about missing field initializers.
swig_env.Append(CCFLAGS='-Wno-missing-field-initializers')
if compareVersions(env['GCC_VERSION'], '4.6') >= 0:
swig_env.Append(CCFLAGS='-Wno-unused-but-set-variable')
# Add additional warnings here that should not be applied to
# the SWIG generated code
new_env.Append(CXXFLAGS='-Wmissing-declarations')
# 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')
if env['CLANG']:
swig_env.Append(CCFLAGS=['-Wno-unused-label', '-Wno-unused-value'])
# Add additional warnings here that should not be applied to
# the SWIG generated code
new_env.Append(CXXFLAGS=['-Wmissing-declarations',
'-Wdelete-non-virtual-dtor'])
# Always enable the warning for deletion of derived classes
# with non-virtual destructors
new_env.Append(CXXFLAGS=['-Wdelete-non-virtual-dtor'])
werror_env = new_env.Clone()
werror_env.Append(CCFLAGS='-Werror')