From 5c0d82bae63949d6f35c35dbb9c2fd5d09f4068a Mon Sep 17 00:00:00 2001 From: Wayne Andrews Date: Fri, 14 Oct 2016 13:33:25 +0100 Subject: [PATCH] build: Add option to compile for coverage reports Add --coverage option to configure to support compiling for generation of C based coverage reports PR-URL: https://github.com/nodejs/node/pull/9463 Reviewed-By: Anna Henningsen Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Michael Dawson --- configure | 10 ++++++++++ node.gyp | 13 ++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 53fed14efccae4..377e82d095d642 100755 --- a/configure +++ b/configure @@ -59,6 +59,11 @@ parser.add_option('--prefix', default='/usr/local', help='select the install prefix [default: %default]') +parser.add_option('--coverage', + action='store_true', + dest='coverage', + help='Build node with code coverage enabled') + parser.add_option('--debug', action='store_true', dest='debug', @@ -863,6 +868,11 @@ def configure_node(o): if options.use_xcode and options.use_ninja: raise Exception('--xcode and --ninja cannot be used together.') + if options.coverage: + o['variables']['coverage'] = 'true' + else: + o['variables']['coverage'] = 'false' + def configure_library(lib, output): shared_lib = 'shared_' + lib output['variables']['node_' + shared_lib] = b(getattr(options, shared_lib)) diff --git a/node.gyp b/node.gyp index f252ad2563a0c6..23a71cc96b9311 100644 --- a/node.gyp +++ b/node.gyp @@ -547,11 +547,22 @@ 'NODE_PLATFORM="sunos"', ], }], - [ '(OS=="freebsd" or OS=="linux") and node_shared=="false"', { + [ '(OS=="freebsd" or OS=="linux") and node_shared=="false" and coverage=="false"', { 'ldflags': [ '-Wl,-z,noexecstack', '-Wl,--whole-archive <(V8_BASE)', '-Wl,--no-whole-archive' ] }], + [ '(OS=="freebsd" or OS=="linux") and node_shared=="false" and coverage=="true"', { + 'ldflags': [ '-Wl,-z,noexecstack', + '-Wl,--whole-archive <(V8_BASE)', + '-Wl,--no-whole-archive', + '--coverage', + '-g', + '-O0' ], + 'cflags': [ '--coverage', + '-g', + '-O0' ] + }], [ 'OS=="sunos"', { 'ldflags': [ '-Wl,-M,/usr/lib/ld/map.noexstk' ], }],