aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-03-20 19:16:49 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2016-03-20 19:16:49 +0200
commit0c63f75aafd664ad4d5a478cdbd9f3e8fd582736 (patch)
tree642a19afe3266e4d8e6ac93745d51c3742f0230d
parent0c9c29b6b64a05611dc66ec04747b3970e25ca5c (diff)
downloadmeson-0c63f75aafd664ad4d5a478cdbd9f3e8fd582736.zip
meson-0c63f75aafd664ad4d5a478cdbd9f3e8fd582736.tar.gz
meson-0c63f75aafd664ad4d5a478cdbd9f3e8fd582736.tar.bz2
Converted coverage into a base option.
-rw-r--r--mesonbuild/backend/backends.py2
-rw-r--r--mesonbuild/backend/ninjabackend.py12
-rw-r--r--mesonbuild/compilers.py17
-rw-r--r--mesonbuild/coredata.py1
-rw-r--r--mesonbuild/mconf.py1
-rw-r--r--mesonbuild/mesonmain.py2
-rw-r--r--mesonbuild/mgui.py13
-rw-r--r--mesonbuild/mintro.py6
8 files changed, 25 insertions, 29 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 8dad6ad..c0fec3e 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -254,7 +254,7 @@ class Backend():
commands += self.environment.coredata.external_args[compiler.get_language()]
commands += target.get_extra_args(compiler.get_language())
commands += compiler.get_buildtype_args(self.environment.coredata.get_builtin_option('buildtype'))
- if self.environment.coredata.get_builtin_option('coverage'):
+ if self.environment.coredata.base_options.get('b_coverage', False):
commands += compiler.get_coverage_args()
if self.environment.coredata.get_builtin_option('werror'):
commands += compiler.get_werror_args()
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index f8ec44f..8cd5139 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -182,7 +182,7 @@ int dummy;
self.generate_tests(outfile)
outfile.write('# Install rules\n\n')
self.generate_install(outfile)
- if self.environment.coredata.get_builtin_option('coverage'):
+ if self.environment.coredata.base_options.get('b_coverage', False):
outfile.write('# Coverage rules\n\n')
self.generate_coverage_rules(outfile)
outfile.write('# Suffix\n\n')
@@ -1431,7 +1431,8 @@ rule FORTRAN_DEP_HACK
commands = []
# The first thing is implicit include directories: source, build and private.
commands += compiler.get_include_args(self.get_target_private_dir(target), False)
- commands += compilers.get_base_compile_args(self.environment.coredata.base_options)
+ commands += compilers.get_base_compile_args(self.environment.coredata.base_options,
+ compiler)
curdir = target.get_subdir()
tmppath = os.path.normpath(os.path.join(self.build_to_src, curdir))
commands += compiler.get_include_args(tmppath, False)
@@ -1640,7 +1641,8 @@ rule FORTRAN_DEP_HACK
commands = []
commands += linker.get_linker_always_args()
if not isinstance(target, build.StaticLibrary):
- commands += compilers.get_base_link_args(self.environment.coredata.base_options)
+ commands += compilers.get_base_link_args(self.environment.coredata.base_options,
+ linker)
commands += linker.get_buildtype_linker_args(self.environment.coredata.get_builtin_option('buildtype'))
commands += linker.get_option_link_args(self.environment.coredata.compiler_options)
if not(isinstance(target, build.StaticLibrary)):
@@ -1682,7 +1684,7 @@ rule FORTRAN_DEP_HACK
commands += dep.get_link_args()
commands += linker.build_rpath_args(self.environment.get_build_dir(),\
self.determine_rpath_dirs(target), target.install_rpath)
- if self.environment.coredata.get_builtin_option('coverage'):
+ if self.environment.coredata.base_options.get('b_coverage', False):
commands += linker.get_coverage_link_args()
custom_target_libraries = self.get_custom_target_provided_libraries(target)
commands += extra_args
@@ -1797,7 +1799,7 @@ rule FORTRAN_DEP_HACK
elem = NinjaBuildElement(self.all_outputs, 'clean', 'CUSTOM_COMMAND', 'PHONY')
elem.add_item('COMMAND', [ninja_command, '-t', 'clean'])
elem.add_item('description', 'Cleaning')
- if self.environment.coredata.get_builtin_option('coverage'):
+ if self.environment.coredata.base_options.get('b_coverage', False):
self.generate_gcov_clean(outfile)
elem.add_dep('clean-gcda')
elem.add_dep('clean-gcno')
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py
index 2a9c3ab..50403ef 100644
--- a/mesonbuild/compilers.py
+++ b/mesonbuild/compilers.py
@@ -122,6 +122,9 @@ base_options = {'b_lto': coredata.UserBooleanOption('b_lto', 'Use link time opti
'b_pgo': coredata.UserComboOption('b_pgo', 'Use profile guide optimization',
['off', 'generate', 'use'],
'off'),
+ 'b_coverage': coredata.UserBooleanOption('b_coverage',
+ 'Enable coverage tracking.',
+ True),
}
def sanitizer_compile_args(value):
@@ -138,7 +141,7 @@ def sanitizer_link_args(value):
args = ['-fsanitize=' + value]
return args
-def get_base_compile_args(options):
+def get_base_compile_args(options, compiler):
args = []
# FIXME, gcc/clang specific.
try:
@@ -158,9 +161,14 @@ def get_base_compile_args(options):
args.append('-fprofile-use')
except KeyError:
pass
+ try:
+ if options['b_coverage'].value:
+ args += compiler.get_coverage_args()
+ except KeyError:
+ pass
return args
-def get_base_link_args(options):
+def get_base_link_args(options, linker):
args = []
# FIXME, gcc/clang specific.
try:
@@ -185,6 +193,11 @@ def get_base_link_args(options):
args.append('-Wl,--no-undefined')
except KeyError:
pass
+ try:
+ if options['b_coverage'].value:
+ args += linker.get_coverage_link_args()
+ except KeyError:
+ pass
return args
def build_unix_rpath_args(build_dir, rpath_paths, install_rpath):
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py
index 5dd8eb8..5f5323d 100644
--- a/mesonbuild/coredata.py
+++ b/mesonbuild/coredata.py
@@ -170,7 +170,6 @@ class CoreData():
self.builtin_options['strip'] = UserBooleanOption('strip', 'Strip on install', options.strip)
self.builtin_options['use_pch'] = UserBooleanOption('use_pch', 'Use precompiled headers', options.use_pch)
self.builtin_options['unity'] = UserBooleanOption('unity', 'Unity build', options.unity)
- self.builtin_options['coverage'] = UserBooleanOption('coverage', 'Enable coverage', options.coverage)
self.builtin_options['warning_level'] = UserComboOption('warning_level', 'Warning level', warning_levels, options.warning_level)
self.builtin_options['werror'] = UserBooleanOption('werror', 'Warnings are errors', options.werror)
self.builtin_options['layout'] = UserComboOption('layout', 'Build dir layout', layouts, options.layout)
diff --git a/mesonbuild/mconf.py b/mesonbuild/mconf.py
index 7cbfa6b..a5a4a9f 100644
--- a/mesonbuild/mconf.py
+++ b/mesonbuild/mconf.py
@@ -128,7 +128,6 @@ class Conf:
carr.append(['warning_level', 'Warning level', self.coredata.get_builtin_option('warning_level'), warning_levels])
carr.append(['werror', 'Treat warnings as errors', self.coredata.get_builtin_option('werror'), booleans])
carr.append(['strip', 'Strip on install', self.coredata.get_builtin_option('strip'), booleans])
- carr.append(['coverage', 'Coverage report', self.coredata.get_builtin_option('coverage'), booleans])
carr.append(['use_pch', 'Precompiled headers', self.coredata.get_builtin_option('use_pch'), booleans])
carr.append(['unity', 'Unity build', self.coredata.get_builtin_option('unity'), booleans])
carr.append(['default_library', 'Default library type', self.coredata.get_builtin_option('default_library'), libtypelist])
diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py
index 95e6731..9832ea8 100644
--- a/mesonbuild/mesonmain.py
+++ b/mesonbuild/mesonmain.py
@@ -55,8 +55,6 @@ parser.add_argument('--buildtype', default='debug', choices=build_types, dest='b
help='build type go use (default: %(default)s)')
parser.add_argument('--strip', action='store_true', dest='strip', default=False,\
help='strip targets on install (default: %(default)s)')
-parser.add_argument('--enable-gcov', action='store_true', dest='coverage', default=False,\
- help='measure test coverage')
parser.add_argument('--disable-pch', action='store_false', dest='use_pch', default=True,\
help='do not use precompiled headers')
parser.add_argument('--unity', action='store_true', dest='unity', default=False,\
diff --git a/mesonbuild/mgui.py b/mesonbuild/mgui.py
index 6e57ce7..d85fa54 100644
--- a/mesonbuild/mgui.py
+++ b/mesonbuild/mgui.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
-# Copyright 2013-2015 The Meson development team
+# Copyright 2013-2016 The Meson development team
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -249,10 +249,6 @@ class OptionForm:
strip.setChecked(self.coredata.get_builtin_option('strip'))
strip.stateChanged.connect(self.strip_changed)
self.form.addRow('Strip on install', strip)
- coverage = QCheckBox("")
- coverage.setChecked(self.coredata.get_builtin_option('coverage'))
- coverage.stateChanged.connect(self.coverage_changed)
- self.form.addRow('Enable coverage', coverage)
pch = QCheckBox("")
pch.setChecked(self.coredata.get_builtin_option('use_pch'))
pch.stateChanged.connect(self.pch_changed)
@@ -317,13 +313,6 @@ class OptionForm:
ns = True
self.coredata.strip = ns
- def coverage_changed(self, newState):
- if newState == 0:
- ns = False
- else:
- ns = True
- self.coredata.coverage = ns
-
def pch_changed(self, newState):
if newState == 0:
ns = False
diff --git a/mesonbuild/mintro.py b/mesonbuild/mintro.py
index 021aed1..ebc46cd 100644
--- a/mesonbuild/mintro.py
+++ b/mesonbuild/mintro.py
@@ -96,10 +96,6 @@ def list_buildoptions(coredata, builddata):
'type' : 'boolean',
'description' : 'Strip on install',
'name' : 'strip'}
- coverage = {'value': coredata.builtin_options['coverage'].value,
- 'type' : 'boolean',
- 'description' : 'Enable coverage',
- 'name' : 'coverage'}
pch = {'value' : coredata.builtin_options['use_pch'].value,
'type' : 'boolean',
'description' : 'Use precompiled headers',
@@ -108,7 +104,7 @@ def list_buildoptions(coredata, builddata):
'type' : 'boolean',
'description' : 'Unity build',
'name' : 'unity'}
- optlist = [buildtype, strip, coverage, pch, unity]
+ optlist = [buildtype, strip, pch, unity]
add_keys(optlist, coredata.user_options)
add_keys(optlist, coredata.compiler_options)
add_keys(optlist, coredata.base_options)