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.
# 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'])
# 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')