diff options
-rw-r--r-- | mesonbuild/backend/backends.py | 2 | ||||
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 12 | ||||
-rw-r--r-- | mesonbuild/compilers.py | 17 | ||||
-rw-r--r-- | mesonbuild/coredata.py | 1 | ||||
-rw-r--r-- | mesonbuild/mconf.py | 1 | ||||
-rw-r--r-- | mesonbuild/mesonmain.py | 2 | ||||
-rw-r--r-- | mesonbuild/mgui.py | 13 | ||||
-rw-r--r-- | mesonbuild/mintro.py | 6 |
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) |