* [RFC v2 BlueZ] build: Add coverage support
@ 2013-12-12 18:57 Luiz Augusto von Dentz
2013-12-13 12:34 ` Marcel Holtmann
2013-12-13 13:23 ` Anderson Lizardo
0 siblings, 2 replies; 3+ messages in thread
From: Luiz Augusto von Dentz @ 2013-12-12 18:57 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Coverage is disabled by default but it is automatically enabled by
bootstrap-configure using --enable-coverage, it creates a new make target
'coverage' that can be run after make check or any tester that produces
.gdca files.
The build time using --enable-coverage is considerable bigger so if
that is a problem just disable it, also this is the reason why it is not
added directly under --enable-maintainer-mode so it is possible to
turn off coverage without having to turn off maintainer mode.
Since lcov apparently cannot detect changes to .gcda there is another
make target 'clean-coverage' so after that make coverage can be
run again.
---
Makefile.am | 17 +++++++++++++++++
acinclude.m4 | 8 ++++++++
bootstrap-configure | 1 +
configure.ac | 5 +++++
4 files changed, 31 insertions(+)
diff --git a/Makefile.am b/Makefile.am
index 15cc149..4b3351a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -331,5 +331,22 @@ lib/bluetooth/%.h: lib/%.h
$(AM_V_at)$(MKDIR_P) lib/bluetooth
$(AM_V_GEN)$(LN_S) -f "$(abs_top_builddir)"/$< $@
+if COVERAGE
+clean-coverage:
+ $(RM) -r coverage
+
+coverage:
+ $(AM_V_at)$(MKDIR_P) -p coverage
+ @lcov --compat-libtool --directory $(top_builddir) --capture \
+ --output-file coverage/check.info
+ @genhtml -o coverage/ coverage/check.info
+
+clean-local: clean-coverage
+ @find $(top_builddir) -name "*.gcda" -exec $(RM) {} \;
+ @find $(top_builddir) -name "*.gcno" -exec $(RM) {} \;
+ @lcov --directory . --zerocounters
+ $(RM) -r lib/bluetooth
+else
clean-local:
$(RM) -r lib/bluetooth
+endif
diff --git a/acinclude.m4 b/acinclude.m4
index 2065852..4bb8bde 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -51,6 +51,14 @@ AC_DEFUN([MISC_FLAGS], [
misc_ldflags="$misc_ldflags -pie"
fi
])
+ AC_ARG_ENABLE(coverage, AC_HELP_STRING([--enable-coverage],
+ [enable coverage flags]), [
+ enable_coverage=${enableval}
+ if (test "${enable_coverage}" = "yes"); then
+ misc_cflags="$misc_cflags --coverage"
+ misc_ldflags="$misc_ldflags --coverage"
+ fi
+ ])
AC_SUBST([MISC_CFLAGS], $misc_cflags)
AC_SUBST([MISC_LDFLAGS], $misc_ldflags)
])
diff --git a/bootstrap-configure b/bootstrap-configure
index c7f08ed..35aa98b 100755
--- a/bootstrap-configure
+++ b/bootstrap-configure
@@ -14,4 +14,5 @@ fi
--enable-experimental \
--enable-android \
--enable-sixaxis \
+ --enable-coverage \
--disable-datafiles $*
diff --git a/configure.ac b/configure.ac
index 18d0b55..5e684a3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -252,4 +252,9 @@ AC_ARG_ENABLE(android, AC_HELP_STRING([--enable-android],
[enable_android=${enableval}])
AM_CONDITIONAL(ANDROID, test "${enable_android}" = "yes")
+if (test "${enable_coverage}" = "yes"); then
+ AC_CHECK_PROG([LCOV], [lcov], [yes], AC_MSG_ERROR(lcov is required))
+fi
+AM_CONDITIONAL([COVERAGE], [test "${enable_coverage}" = "yes"])
+
AC_OUTPUT(Makefile src/bluetoothd.8 lib/bluez.pc)
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [RFC v2 BlueZ] build: Add coverage support
2013-12-12 18:57 [RFC v2 BlueZ] build: Add coverage support Luiz Augusto von Dentz
@ 2013-12-13 12:34 ` Marcel Holtmann
2013-12-13 13:23 ` Anderson Lizardo
1 sibling, 0 replies; 3+ messages in thread
From: Marcel Holtmann @ 2013-12-13 12:34 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: linux-bluetooth@vger.kernel.org development
Hi Luiz,
> Coverage is disabled by default but it is automatically enabled by
> bootstrap-configure using --enable-coverage, it creates a new make target
> 'coverage' that can be run after make check or any tester that produces
> .gdca files.
>
> The build time using --enable-coverage is considerable bigger so if
> that is a problem just disable it, also this is the reason why it is not
> added directly under --enable-maintainer-mode so it is possible to
> turn off coverage without having to turn off maintainer mode.
>
> Since lcov apparently cannot detect changes to .gcda there is another
> make target 'clean-coverage' so after that make coverage can be
> run again.
> ---
> Makefile.am | 17 +++++++++++++++++
> acinclude.m4 | 8 ++++++++
> bootstrap-configure | 1 +
> configure.ac | 5 +++++
> 4 files changed, 31 insertions(+)
>
> diff --git a/Makefile.am b/Makefile.am
> index 15cc149..4b3351a 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -331,5 +331,22 @@ lib/bluetooth/%.h: lib/%.h
> $(AM_V_at)$(MKDIR_P) lib/bluetooth
> $(AM_V_GEN)$(LN_S) -f "$(abs_top_builddir)"/$< $@
>
> +if COVERAGE
> +clean-coverage:
> + $(RM) -r coverage
> +
> +coverage:
> + $(AM_V_at)$(MKDIR_P) -p coverage
> + @lcov --compat-libtool --directory $(top_builddir) --capture \
> + --output-file coverage/check.info
> + @genhtml -o coverage/ coverage/check.info
I would actually prefer if we can have some sort AM_V_GEN thing working here. So that make V=1 will end up showing the exact command.
> +
> +clean-local: clean-coverage
> + @find $(top_builddir) -name "*.gcda" -exec $(RM) {} \;
> + @find $(top_builddir) -name "*.gcno" -exec $(RM) {} \;
> + @lcov --directory . --zerocounters
> + $(RM) -r lib/bluetooth
> +else
> clean-local:
> $(RM) -r lib/bluetooth
> +endif
This if for clean-local is not something I like that much. Can we not come up with a better way and leave clean-local as it is. Just make clean-coverage a null-op.
> diff --git a/acinclude.m4 b/acinclude.m4
> index 2065852..4bb8bde 100644
> --- a/acinclude.m4
> +++ b/acinclude.m4
> @@ -51,6 +51,14 @@ AC_DEFUN([MISC_FLAGS], [
> misc_ldflags="$misc_ldflags -pie"
> fi
> ])
> + AC_ARG_ENABLE(coverage, AC_HELP_STRING([--enable-coverage],
> + [enable coverage flags]), [
> + enable_coverage=${enableval}
> + if (test "${enable_coverage}" = "yes"); then
> + misc_cflags="$misc_cflags --coverage"
> + misc_ldflags="$misc_ldflags --coverage"
> + fi
> + ])
> AC_SUBST([MISC_CFLAGS], $misc_cflags)
> AC_SUBST([MISC_LDFLAGS], $misc_ldflags)
> ])
> diff --git a/bootstrap-configure b/bootstrap-configure
> index c7f08ed..35aa98b 100755
> --- a/bootstrap-configure
> +++ b/bootstrap-configure
> @@ -14,4 +14,5 @@ fi
> --enable-experimental \
> --enable-android \
> --enable-sixaxis \
> + --enable-coverage \
> --disable-datafiles $*
> diff --git a/configure.ac b/configure.ac
> index 18d0b55..5e684a3 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -252,4 +252,9 @@ AC_ARG_ENABLE(android, AC_HELP_STRING([--enable-android],
> [enable_android=${enableval}])
> AM_CONDITIONAL(ANDROID, test "${enable_android}" = "yes")
>
> +if (test "${enable_coverage}" = "yes"); then
> + AC_CHECK_PROG([LCOV], [lcov], [yes], AC_MSG_ERROR(lcov is required))
> +fi
> +AM_CONDITIONAL([COVERAGE], [test "${enable_coverage}" = "yes"])
> +
Still not 100% convinced that we really want this. I get the feeling that maintainer-mode would be just fine.
Regards
Marcel
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [RFC v2 BlueZ] build: Add coverage support
2013-12-12 18:57 [RFC v2 BlueZ] build: Add coverage support Luiz Augusto von Dentz
2013-12-13 12:34 ` Marcel Holtmann
@ 2013-12-13 13:23 ` Anderson Lizardo
1 sibling, 0 replies; 3+ messages in thread
From: Anderson Lizardo @ 2013-12-13 13:23 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: BlueZ development
Hi Luiz,
On Thu, Dec 12, 2013 at 4:57 PM, Luiz Augusto von Dentz
<luiz.dentz@gmail.com> wrote:
> +clean-local: clean-coverage
> + @find $(top_builddir) -name "*.gcda" -exec $(RM) {} \;
> + @find $(top_builddir) -name "*.gcno" -exec $(RM) {} \;
Another simplification suggestion: Replace " -exec $(RM) {} \;" with
"-delete", e.g.:
@find $(top_builddir) -name "*.gcda" -delete
BTW if the deletion fails (e.g. file was created as root but cleanup
is done as non-root), the find command will fail. If it is desirable
that the cleanup never fail, you may need to add a "-" before the
command (or use "|| true", whatever is the convention in BlueZ).
Best Regards,
--
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-12-13 13:23 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-12 18:57 [RFC v2 BlueZ] build: Add coverage support Luiz Augusto von Dentz
2013-12-13 12:34 ` Marcel Holtmann
2013-12-13 13:23 ` Anderson Lizardo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox