summaryrefslogtreecommitdiffstats
path: root/core/binary.mk
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2015-01-24 15:14:35 -0800
committerDan Albert <danalbert@google.com>2015-01-24 15:18:01 -0800
commit2c03e0448098a82ad47029eb885db4d5e5ca42dc (patch)
treeceb8824cc27122527de8b3cae01c89f29781cc80 /core/binary.mk
parent43e128acfc7ad6cbcf8d21e3e2300ce1d43ef5bd (diff)
downloadbuild-2c03e0448098a82ad47029eb885db4d5e5ca42dc.tar.gz
build-2c03e0448098a82ad47029eb885db4d5e5ca42dc.tar.bz2
build-2c03e0448098a82ad47029eb885db4d5e5ca42dc.zip
Allow coverage with clang.
Note that this doesn't play nicely with acov out of the box. Clang apparently generates .gcno files that aren't compatible with gcov-4.8. This can be solved by installing gcc-4.6 and invoking lcov with `--gcov-tool /usr/bin/gcov-4.6`. http://stackoverflow.com/questions/17758126/clang-code-coverage-invalid-output Change-Id: I79547e1c579fa79db47ff07d5e90c42cedbd5cbb
Diffstat (limited to 'core/binary.mk')
-rw-r--r--core/binary.mk30
1 files changed, 16 insertions, 14 deletions
diff --git a/core/binary.mk b/core/binary.mk
index 172cb6f62..02b72b607 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -287,20 +287,22 @@ endif # LOCAL_IS_HOST_MODULE
# clean build of your module after toggling it.
ifeq ($(NATIVE_COVERAGE),true)
ifeq ($(my_native_coverage),true)
- # We can't currently generate coverage for clang binaries for two
- # reasons:
- #
- # 1) b/17574078 We currently don't have a prebuilt
- # libclang_rt.profile-<ARCH>.a, which clang is hardcoded to link if
- # --coverage is passed in the link stage. For now we manually link
- # libprofile_rt (which is the name it is built as from
- # external/compiler-rt).
- #
- # 2) b/17583330 Clang doesn't generate .gcno files when using
- # -no-integrated-as. Since most of the assembly in our tree is
- # incompatible with clang's assembler, we can't turn off this flag.
- ifneq ($(my_clang),true)
- my_cflags += --coverage -O0
+ my_cflags += --coverage -O0
+ ifeq ($(my_clang),true)
+ # b/17574078
+ # We currently don't have a prebuilt libclang_rt.profile-<ARCH>.a,
+ # which clang is hardcoded to link if --coverage is passed in the
+ # link stage. For now we manually link libprofile_rt (which is the
+ # name it is built as from external/compiler-rt).
+ #
+ # Note that clang coverage doesn't play nicely with acov out of the
+ # box. Clang apparently generates .gcno files that aren't compatible
+ # with gcov-4.8. This can be solved by installing gcc-4.6 and
+ # invoking lcov with `--gcov-tool /usr/bin/gcov-4.6`.
+ #
+ # http://stackoverflow.com/questions/17758126/clang-code-coverage-invalid-output
+ my_static_libraries += libprofile_rt
+ else
my_ldflags += --coverage
endif
endif