aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2016-11-26 06:05:34 -0500
committerJack Lloyd <[email protected]>2016-11-26 06:08:05 -0500
commitd695dfadc0daf8290d344f82697d456fd011d153 (patch)
tree9cb0b623f8ecfa8076ab5a8c04622a161e5bdbfc
parentf397471782357aa57b55cf8d3ec5c3018e9b0aaf (diff)
Add script for running lcov report
Add configure.py option --with-coverage-info which enables coverage but does not disable optimizations. Changes the scripts to use --with-coverage-info --no-optimization which is the same behavior as --with-coverage except explicit about what is happening. [ci skip]
-rwxr-xr-xconfigure.py12
-rwxr-xr-xsrc/scripts/ci/travis/build.sh2
-rwxr-xr-xsrc/scripts/lcov.sh10
3 files changed, 19 insertions, 5 deletions
diff --git a/configure.py b/configure.py
index e98d0e41f..0fabeed3e 100755
--- a/configure.py
+++ b/configure.py
@@ -272,12 +272,15 @@ def process_command_line(args):
build_group = optparse.OptionGroup(parser, 'Build options')
build_group.add_option('--with-debug-info', action='store_true', default=False, dest='with_debug_info',
- help='enable debug info')
+ help='include debug symbols')
build_group.add_option('--with-sanitizers', action='store_true', default=False, dest='with_sanitizers',
- help='enable runtime checks')
+ help='enable ASan/UBSan checks')
build_group.add_option('--with-coverage', action='store_true', default=False, dest='with_coverage',
+ help='enable coverage checking and disable opts')
+
+ build_group.add_option('--with-coverage-info', action='store_true', default=False, dest='with_coverage_info',
help='enable coverage checking')
build_group.add_option('--enable-shared-library', dest='build_shared_lib',
@@ -483,6 +486,7 @@ def process_command_line(args):
options.with_debug_info = True
if options.with_coverage:
+ options.with_coverage_info = True
options.no_optimizations = True
def parse_multiple_enable(modules):
@@ -939,7 +943,7 @@ class CompilerInfo(object):
if flag != None and flag != '' and flag not in abi_link:
abi_link.append(flag)
- if options.with_coverage:
+ if options.with_coverage_info:
if self.coverage_flags == '':
raise Exception('No coverage handling for %s' % (self.basename))
abi_link.append(self.coverage_flags)
@@ -1572,7 +1576,7 @@ def create_template_vars(build_config, options, modules, cc, arch, osinfo):
vars["gmake_dso_in"] = process_template(os.path.join(options.makefile_dir, 'gmake_dso.in'), vars) \
if options.build_shared_lib else ''
vars["gmake_coverage_in"] = process_template(os.path.join(options.makefile_dir, 'gmake_coverage.in'), vars) \
- if options.with_coverage else ''
+ if options.with_coverage_info else ''
return vars
diff --git a/src/scripts/ci/travis/build.sh b/src/scripts/ci/travis/build.sh
index 336d2c629..5fb6bec2d 100755
--- a/src/scripts/ci/travis/build.sh
+++ b/src/scripts/ci/travis/build.sh
@@ -32,7 +32,7 @@ elif [ "$BUILD_MODE" = "parallel" ]; then
fi
elif [ "$BUILD_MODE" = "coverage" ]; then
- CFG_FLAGS+=(--with-coverage)
+ CFG_FLAGS+=(--with-coverage --no-optimizations)
elif [ "$BUILD_MODE" = "sanitizer" ]; then
export ASAN_OPTIONS=detect_leaks=0
CFG_FLAGS+=(--with-sanitizers --disable-modules=locking_allocator)
diff --git a/src/scripts/lcov.sh b/src/scripts/lcov.sh
new file mode 100755
index 000000000..f1340c787
--- /dev/null
+++ b/src/scripts/lcov.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+./configure.py --with-debug-info --with-coverage-info --no-optimizations --with-bzip2 --with-lzma --with-sqlite --with-zlib --with-pkcs11 --with-openssl --with-sqlite3
+
+make -l4 -j8 -k
+./botan-test --pkcs11-lib=/usr/lib/libsofthsm2.so
+
+lcov --rc lcov_branch_coverage=1 --capture --directory . --output-file coverage.info.raw
+lcov --remove coverage.info.raw '/usr/*' --output-file coverage.info
+genhtml --rc lcov_branch_coverage=1 coverage.info --output-directory lcov-out