diff options
author | Dan Albert <danalbert@google.com> | 2015-01-24 23:42:11 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-01-24 23:42:11 +0000 |
commit | f633e28168a65a0d7a59fed069c90ca54b47de9f (patch) | |
tree | b29cd845167d2b21c48e50c868ba64ab185dfb69 /core/binary.mk | |
parent | 3723af1b4e8de4941d7b9be569f209d88f565964 (diff) | |
parent | 172cd7653e4dfb628065349ea915329076e44e1d (diff) | |
download | build-f633e28168a65a0d7a59fed069c90ca54b47de9f.zip build-f633e28168a65a0d7a59fed069c90ca54b47de9f.tar.gz build-f633e28168a65a0d7a59fed069c90ca54b47de9f.tar.bz2 |
am 172cd765: Merge "Allow coverage with clang."
* commit '172cd7653e4dfb628065349ea915329076e44e1d':
Allow coverage with clang.
Diffstat (limited to 'core/binary.mk')
-rw-r--r-- | core/binary.mk | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/core/binary.mk b/core/binary.mk index 1d7b619..81513f5 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -289,20 +289,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 |