IOT-2539 Enable the -Werror build flag 11/22811/16
authorGeorge Nash <george.nash@intel.com>
Thu, 12 Oct 2017 23:08:53 +0000 (16:08 -0700)
committerRick Bell <richard.s.bell@intel.com>
Wed, 25 Oct 2017 17:27:25 +0000 (17:27 +0000)
The coding standard states:
Code must compile with no warnings. Without flags
forcing warnings off.
see:
https://wiki.iotivity.org/iotivity_c_coding_standards

Its possible that using an untested version of gcc could
result in build warings that are not yet fixed. For this
reason the build option ERROR_ON_WARN was added to make
it possible to turn off the -Werror flag. This should
only be used locally an not changed on the CI build.

Due to some bugs in older version of gcc some warnings
are forced off when using an older version of gcc.

This change will force code to follow the coding
standard of building with no warnings.

The coapHttpParser code produces a build warning
that currently is not solved. When building the
coap_http_proxy library the -Werror build flag is
removed.

Don't use the -Werror build option for extlib yaml
code.

Don't use the -Werror build option for coap library

Change-Id: Ifcc25ed7e5b8637ac4383a7bfa51ace105ed9458
Signed-off-by: George Nash <george.nash@intel.com>
build_common/SConscript
build_common/linux/SConscript
extlibs/libcoap/SConscript
extlibs/yaml/SConscript
service/coap-http-proxy/SConscript

index 95726d0..b46c773 100755 (executable)
@@ -238,6 +238,15 @@ else:
                      default='1',
                      allowed_values=('0', '1')))
 
+if target_os in ['linux']:
+    # This build option is provided for temporary use when upgrading to newer
+    # compilers or to temporarily bypass build warnings. It should default to True
+    # for all code submitted to upstream.
+    help_vars.Add(
+        BoolVariable('ERROR_ON_WARN',
+                     'Make all compiler warnings into errors.',
+                      default=True))
+
 if target_os == 'windows':
     # Builds differ based on Visual Studio version
     #   For VS2013, MSVC_VERSION is '12.0'.
index 0806539..5b8beb2 100644 (file)
@@ -43,8 +43,9 @@ gcc_ver = subprocess.check_output([env['CC'], '-dumpversion'], stderr=subprocess
 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'])
+
+if env.get('ERROR_ON_WARN'):
+    env.AppendUnique(CFLAGS=['-Werror'])
 
 # Set arch flags that match best TARGET_ARCH variable
 if not env.get('WITH_ENV'):
index 547b67c..302174b 100644 (file)
@@ -146,6 +146,10 @@ if target_os in ['linux', 'tizen', 'android', 'arduino']:
 if target_os == 'arduino':
     libcoap_env.AppendUnique(CPPDEFINES=['NDEBUG', 'WITH_ARDUINO'])
 
+# Remove -Werror build flag when building the 'coap' library  it
+# is external code. see IOT-2539
+while '-Werror' in libcoap_env['CFLAGS']: libcoap_env['CFLAGS'].remove('-Werror')
+
 ######################################################################
 # Source files and Target(s)
 ######################################################################
index 6ea4b60..86f5ae3 100644 (file)
@@ -43,6 +43,11 @@ yaml_env.AppendUnique(CXXFLAGS=['-std=c++0x', '-Wall', '-pthread'])
 yaml_env.AppendUnique(CPPDEFINES=['LINUX'])
 yaml_env.AppendUnique(LIBS=['pthread'])
 
+# Remove -Werror build flag when building the 'YamlParser' library  it
+# is external code. see IOT-2539
+while '-Werror' in yaml_env['CFLAGS']: yaml_env['CFLAGS'].remove('-Werror')
+
+
 yaml_env.AppendUnique(
     CXXFLAGS=['-O2', '-g', '-Wall', '-fmessage-length=0', '-std=c++0x'])
 
index 10259e1..8756892 100644 (file)
@@ -25,6 +25,10 @@ Import('env')
 import os
 local_env = env.Clone()
 
+# Remove -Werror build flag when building the 'coap_http_proxy' library  it
+# currently has a build warning that still needs to be solved. see IOT-2539
+while '-Werror' in local_env['CFLAGS']: local_env['CFLAGS'].remove('-Werror')
+
 if env.get('RELEASE'):
     local_env.AppendUnique(CCFLAGS=['-Os'])
 else: