scons: Silence clang 3.4 warnings on Ubuntu 12.04
authorAndreas Sandberg <Andreas.Sandberg@ARM.com>
Wed, 13 Aug 2014 10:57:28 +0000 (06:57 -0400)
committerAndreas Sandberg <Andreas.Sandberg@ARM.com>
Wed, 13 Aug 2014 10:57:28 +0000 (06:57 -0400)
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.

SConstruct
src/SConscript

index d5f56b22a474a593f069c2da746039fce8401561..6250bdd2f6ec710d9f169706b4005aaefa97b5cb 100755 (executable)
@@ -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'])
 
index f5b0828190ffea23b6d8c42df09cf286b852eeab..88fedbfdcbacfe22f672a3fbafaadfc6bd56715a 100755 (executable)
@@ -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')