scons: Silence clang 3.4 warnings on Ubuntu 12.04

This changeset fixes three types of warnings that occur in clang 3.4
on Ubuntu 12.04:

 * Certain versions of libstdc++ (primarily 4.8) use struct and class
   interchangeably. This triggers a warning in clang.

 * Swig has a tendency to generate code with the register class which
   was deprecated in C++11. This triggers a deprecation warning in
   clang.

 * Swig sometimes generates Python wrapper code which returns
   uninitialized values. It's unclear if this is actually a problem
   (the cases might be limited to failure paths). We'll silence these
   warnings for now since there is little we can do about the
   generated code.
This commit is contained in:
Andreas Sandberg 2014-08-13 06:57:28 -04:00
parent eb9226317d
commit 6b908211e6
2 changed files with 14 additions and 1 deletions

View file

@ -638,7 +638,12 @@ elif main['CLANG']:
# is relying on this
main.Append(CCFLAGS=['-Wno-tautological-compare',
'-Wno-parentheses',
'-Wno-self-assign'])
'-Wno-self-assign',
# Some versions of libstdc++ (4.8?) seem to
# use struct hash and class hash
# interchangeably.
'-Wno-mismatched-tags',
])
main.Append(TCMALLOC_CCFLAGS=['-fno-builtin'])

View file

@ -940,6 +940,14 @@ def makeEnv(env, label, objsfx, strip = False, **kwargs):
# 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',
# Register storage is requested in a lot of places in
# SWIG-generated code.
'-Wno-deprecated-register',
])
werror_env = new_env.Clone()
werror_env.Append(CCFLAGS='-Werror')