summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Rebillout <arnaud.rebillout@collabora.com>2018-11-28 20:43:53 +0700
committerArun Raghavan <arun@arunraghavan.net>2019-06-08 12:03:03 +0200
commit1a3ed2f430669dea3d0978ce3acbcceb443c7447 (patch)
tree176ae11e0ce1211b436cddf3fa500eb7c55bac1d
parentaa5502926fdb1d1b45f7cb0ed8570d90f84532eb (diff)
meson: Add support for gcov
Unlike autotools, we use the option --coverage, which is a synonym for -profile-arcs and -ftest-coverage (when compiling) and -lgcov (when linking). For reference, see: https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#Instrumentation-Options Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
-rw-r--r--meson.build9
-rw-r--r--meson_options.txt3
2 files changed, 11 insertions, 1 deletions
diff --git a/meson.build b/meson.build
index efe5f0f48..4b3b3e8c5 100644
--- a/meson.build
+++ b/meson.build
@@ -267,6 +267,13 @@ pa_c_args = ['-DHAVE_CONFIG_H', '-D_GNU_SOURCE']
server_c_args = ['-D__INCLUDED_FROM_PULSE_AUDIO']
cdata.set('MESON_BUILD', 1)
+# Code coverage
+
+if get_option('gcov')
+ add_project_arguments('--coverage', language: ['c', 'cpp'])
+ add_project_link_arguments('--coverage', language: ['c', 'cpp'])
+endif
+
# Core Dependencies
libm_dep = cc.find_library('m', required : true)
@@ -605,7 +612,7 @@ summary = [
'Enable Speex (resampler, AEC): @0@'.format(speex_dep.found()),
'Enable SoXR (resampler): @0@'.format(soxr_dep.found()),
'Enable WebRTC echo canceller: @0@'.format(webrtc_dep.found()),
-# 'Enable gcov coverage: @0@'.format(${ENABLE_GCOV}),
+ 'Enable Gcov coverage: @0@'.format(get_option('gcov')),
'Enable man pages: @0@'.format(get_option('man')),
'Enable unit tests: @0@'.format(get_option('tests')),
'',
diff --git a/meson_options.txt b/meson_options.txt
index 8a2663ceb..5e79ffb9a 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,3 +1,6 @@
+option('gcov',
+ type : 'boolean',
+ description : 'Enable optional gcov coverage analysis')
option('man',
type : 'boolean',
description : 'Enable building and installation of man pages')