IOT-2539 ignore warnings for older compilers 43/22743/11
authorGeorge Nash <george.nash@intel.com>
Thu, 27 Jul 2017 01:03:54 +0000 (18:03 -0700)
committerRick Bell <richard.s.bell@intel.com>
Fri, 13 Oct 2017 20:39:44 +0000 (20:39 +0000)
Ignore 'missing-field-initializers' warning  if gcc version
is older than 5.0. This is due to a bug in how older
versions of gcc handles C++11 code.
see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36750

Ignore 'missing-braces' waring if gcc version is older
than 5.0 this is also due to a bug in how older versions
of gcc handles C++11 code.
see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25137

This is in preperation to enable the -Werror build flag.

Bug: https://jira.iotivity.org/browse/IOT-2539
Change-Id: Ia098c273bdbcda485fd02d73941207f502ed861a
Signed-off-by: George Nash <george.nash@intel.com>
build_common/linux/SConscript

index 4837e08..d835464 100644 (file)
@@ -4,6 +4,9 @@
 #
 ##
 import os
+import subprocess
+from distutils.version import StrictVersion
+
 Import('env')
 
 # Add the default lib directory
@@ -27,6 +30,22 @@ env.AppendUnique(CFLAGS=['-std=gnu99'])
 env.AppendUnique(CCFLAGS=['-Wall', '-Wextra', '-fPIC'])
 env.AppendUnique(LIBS=['dl', 'pthread', 'uuid'])
 
+# The -Wno-error=missing-field-initializers is used due to a bug in versions
+# of gcc older than 5.0 see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36750
+# this bug causes structs initialized with {0} to generate missing-field-initializers
+# warning. This is a valid way to initialize a struct and was fixed in later versions.
+# since gcc versions older than 5.0 are still used to build the code we do not
+# want to consider the missing-field-initializer warning.
+# The -Wno-missing-braces is also due to a bug using bracket initializers
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25137
+# it was also fixed in later versions of gcc.
+gcc_ver = subprocess.check_output([env['CC'], '-dumpversion'], stderr=subprocess.STDOUT)
+if StrictVersion(gcc_ver) < StrictVersion('5.0'):
+    env.AppendUnique(CFLAGS=['-Wno-missing-field-initializers'])
+    env.AppendUnique(CCFLAGS=['-Wno-missing-braces'])
+# TODO: IOT-2539 enable -Werror once a compiler warnings are cleaned up
+# env.AppendUnique(CFLAGS=['-Werror'])
+
 # Set arch flags that match best TARGET_ARCH variable
 if not env.get('WITH_ENV'):
     target_arch = env.get('TARGET_ARCH')