From bd17df1328d62590c6521d1ce916ddfc8c9b8364 Mon Sep 17 00:00:00 2001 From: "jrg@chromium.org" Date: Fri, 3 Apr 2009 04:35:18 +0000 Subject: [PATCH] Start of code coverage for Mac. Only base_unittests included for now. Linux changes added as well but untested until Linux switches to gyp. Enable coverage with the following command: src/tools/gyp/gyp_dogfood -Dcoverage=1 src/build/all.gyp Review URL: http://codereview.chromium.org/56136 git-svn-id: http://src.chromium.org/svn/trunk/src/build@13068 4ff67af0-8c30-449e-8e8b-ad334ec8d88c --- common.gypi | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/common.gypi b/common.gypi index 07b4f5ff3..2ddf44fb5 100644 --- a/common.gypi +++ b/common.gypi @@ -25,6 +25,12 @@ # Override branding to select the desired branding flavor. 'branding%': 'Chromium', + + # Set to 1 to enable code coverage. In addition to build changes + # (e.g. extra CFLAGS), also creates a new target in the src/chrome + # project file called "coverage". + # Currently ignored on Windows. + 'coverage%': 0, }, 'target_defaults': { 'conditions': [ @@ -33,6 +39,35 @@ }, { # else: branding!="Chrome" 'defines': ['CHROMIUM_BUILD'], }], + ['coverage!=0', { + 'conditions': [ + ['OS=="mac"', { + 'xcode_settings': { + 'GCC_INSTRUMENT_PROGRAM_FLOW_ARCS': 'YES', + 'GCC_GENERATE_TEST_COVERAGE_FILES': 'YES', + }, + # Add -lgcov for executables, not for static_libraries. + # This is a delayed conditional. + 'target_conditions': [ + ['_type=="executable"', { + 'xcode_settings': { 'OTHER_LDFLAGS': [ '-lgcov' ] }, + }], + ], + }], + # TODO(jrg): complete this work once Linux transitions to gyp. + # This is untested (--> likely doesn't work). + ['OS=="linux"', { + 'cflags': [ '-ftest-coverage', + '-fprofile-arcs' ], + 'target_conditions': [ + ['_type=="executable"', { + 'link_settings': { 'libraries': [ '-lgcov' ] }, + }], + ], + }], + ]}, + # TODO(jrg): options for code coverage on Windows + ], ], 'default_configuration': 'Debug', 'configurations': {