From a7ae7aab597a874cb0087e8e333e8f7765ded88c Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Mon, 6 Apr 2020 14:17:57 +0200 Subject: [PATCH] build: add --error-on-warn configure flag This commit adds a configuration time flag named error-on-warn: $ ./configure --help | grep -A1 error-on-warn --error-on-warn Turn compiler warnings into errors for node core sources. The motivation for this is that CI jobs can use this flag to turn warnings into errors. PR-URL: https://github.com/nodejs/node/pull/32685 Reviewed-By: Richard Lau Reviewed-By: Anna Henningsen Reviewed-By: Matheus Marchini --- common.gypi | 10 +++++++++- configure.py | 6 ++++++ node.gyp | 6 ++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/common.gypi b/common.gypi index 4dfbdfac061..bfa9fc5cb3d 100644 --- a/common.gypi +++ b/common.gypi @@ -26,6 +26,7 @@ 'uv_library%': 'static_library', 'clang%': 0, + 'error_on_warn%': 'false', 'openssl_fips%': '', 'openssl_no_asm%': 0, @@ -218,7 +219,14 @@ # Forcibly disable -Werror. We support a wide range of compilers, it's # simply not feasible to squelch all warnings, never mind that the # libraries in deps/ are not under our control. - 'cflags!': ['-Werror'], + 'conditions': [ + [ 'error_on_warn=="false"', { + 'cflags!': ['-Werror'], + }, '(_target_name!="<(node_lib_target_name)" or ' + '_target_name!="<(node_core_target_name)")', { + 'cflags!': ['-Werror'], + }], + ], 'msvs_settings': { 'VCCLCompilerTool': { 'BufferSecurityCheck': 'true', diff --git a/configure.py b/configure.py index 2e7deb5a15e..ac26f62916c 100755 --- a/configure.py +++ b/configure.py @@ -117,6 +117,11 @@ parser.add_option('--dest-os', choices=valid_os, help='operating system to build for ({0})'.format(', '.join(valid_os))) +parser.add_option('--error-on-warn', + action='store_true', + dest='error_on_warn', + help='Turn compiler warnings into errors for node core sources.') + parser.add_option('--gdb', action='store_true', dest='gdb', @@ -1018,6 +1023,7 @@ def configure_node(o): o['variables']['node_install_npm'] = b(not options.without_npm) o['variables']['debug_node'] = b(options.debug_node) o['default_configuration'] = 'Debug' if options.debug else 'Release' + o['variables']['error_on_warn'] = b(options.error_on_warn) host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc() target_arch = options.dest_cpu or host_arch diff --git a/node.gyp b/node.gyp index 2f0f0f152ba..3dadad15c9e 100644 --- a/node.gyp +++ b/node.gyp @@ -376,6 +376,9 @@ 'msvs_disabled_warnings!': [4244], 'conditions': [ + [ 'error_on_warn=="true"', { + 'cflags': ['-Werror'], + }], [ 'node_intermediate_lib_type=="static_library" and ' 'node_shared=="true" and OS=="aix"', { # For AIX, shared lib is linked by static lib and .exp. In the @@ -750,6 +753,9 @@ 'msvs_disabled_warnings!': [4244], 'conditions': [ + [ 'error_on_warn=="true"', { + 'cflags': ['-Werror'], + }], [ 'node_builtin_modules_path!=""', { 'defines': [ 'NODE_BUILTIN_MODULES_PATH="<(node_builtin_modules_path)"' ] }],