Support Soong native coverage
Soong (or any other prebuilt) can provide a .gcnodir file using LOCAL_PREBUILT_COVERAGE_ARCHIVE. Just like today, if one isn't provided for static libraries, an empty one will be created for Make modules to use. Also fixes a problem I noticed including whole static libs having coverage into static libs. It was trying to write to /WHOLE since PRIVATE_INTERMEDIATES_DIR was not set. Bug: 32749731 Test: See build/soong change for soong-side tests Test: Enabled coverage of a soong static lib, then include it in a make static lib with LOCAL_WHOLE_STATIC_LIBRARIES and ensure that the any shared libraries using the make static lib get the embedded coverage information. Change-Id: I32762f099c9757074fec922ee4822f819c9ceaf5
This commit is contained in:
parent
af055f207a
commit
0f90908026
5 changed files with 20 additions and 0 deletions
|
@ -164,6 +164,7 @@ LOCAL_PACK_MODULE_RELOCATIONS:=
|
|||
LOCAL_PICKUP_FILES:=
|
||||
LOCAL_POST_INSTALL_CMD:=
|
||||
LOCAL_POST_LINK_CMD:=
|
||||
LOCAL_PREBUILT_COVERAGE_ARCHIVE:=
|
||||
LOCAL_PREBUILT_EXECUTABLES:=
|
||||
LOCAL_PREBUILT_JAVA_LIBRARIES:=
|
||||
LOCAL_PREBUILT_JNI_LIBS:=
|
||||
|
|
|
@ -174,6 +174,19 @@ endif
|
|||
endif # my_strip_module not true
|
||||
|
||||
ifeq ($(NATIVE_COVERAGE),true)
|
||||
ifneq (,$(strip $(LOCAL_PREBUILT_COVERAGE_ARCHIVE)))
|
||||
$(eval $(call copy-one-file,$(LOCAL_PREBUILT_COVERAGE_ARCHIVE),$(intermediates)/$(LOCAL_MODULE).gcnodir))
|
||||
ifneq ($(LOCAL_UNINSTALLABLE_MODULE),true)
|
||||
ifdef LOCAL_IS_HOST_MODULE
|
||||
my_coverage_path := $($(my_prefix)OUT_COVERAGE)/$(patsubst $($(my_prefix)OUT)/%,%,$(my_module_path))
|
||||
else
|
||||
my_coverage_path := $(TARGET_OUT_COVERAGE)/$(patsubst $(PRODUCT_OUT)/%,%,$(my_module_path))
|
||||
endif
|
||||
my_coverage_path := $(my_coverage_path)/$(basename $(my_installed_module_stem)).gcnodir
|
||||
$(eval $(call copy-one-file,$(LOCAL_PREBUILT_COVERAGE_ARCHIVE),$(my_coverage_path)))
|
||||
$(LOCAL_BUILT_MODULE): $(my_coverage_path)
|
||||
endif
|
||||
else
|
||||
# Coverage information is needed when static lib is a dependency of another
|
||||
# coverage-enabled module.
|
||||
ifeq (STATIC_LIBRARIES, $(LOCAL_MODULE_CLASS))
|
||||
|
@ -186,6 +199,7 @@ $(intermediates)/$(GCNO_ARCHIVE) :
|
|||
$(transform-o-to-static-lib)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(LOCAL_MODULE_CLASS),APPS)
|
||||
PACKAGES.$(LOCAL_MODULE).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES))
|
||||
|
|
|
@ -96,6 +96,7 @@ GCNO_ARCHIVE := $(basename $(my_installed_module_stem))$(gcno_suffix)
|
|||
|
||||
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_ALL_OBJECTS := $(strip $(LOCAL_GCNO_FILES))
|
||||
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_ALL_WHOLE_STATIC_LIBRARIES := $(strip $(built_whole_gcno_libraries)) $(strip $(built_static_gcno_libraries))
|
||||
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_INTERMEDIATES_DIR := $(intermediates)
|
||||
$(intermediates)/$(GCNO_ARCHIVE) : $(LOCAL_GCNO_FILES) $(built_whole_gcno_libraries) $(built_static_gcno_libraries)
|
||||
$(transform-o-to-static-lib)
|
||||
|
||||
|
|
|
@ -43,6 +43,9 @@ $(SOONG_VARIABLES): FORCE
|
|||
echo ' "ClangTidy": $(if $(filter 1 true,$(WITH_TIDY)),true,false),'; \
|
||||
echo ' "TidyChecks": "$(WITH_TIDY_CHECKS)",'; \
|
||||
echo ''; \
|
||||
echo ' "NativeCoverage": $(if $(filter true,$(NATIVE_COVERAGE)),true,false),'; \
|
||||
echo ' "CoveragePaths": [$(if $(COVERAGE_PATHS),"$(subst $(space),"$(comma)",$(subst $(comma),$(space),$(COVERAGE_PATHS)))")],'; \
|
||||
echo ''; \
|
||||
echo ' "DeviceName": "$(TARGET_DEVICE)",'; \
|
||||
echo ' "DeviceArch": "$(TARGET_ARCH)",'; \
|
||||
echo ' "DeviceArchVariant": "$(TARGET_ARCH_VARIANT)",'; \
|
||||
|
|
|
@ -39,6 +39,7 @@ $(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_ALL_OBJECTS := $(strip $(LOCAL_GCNO_F
|
|||
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_ALL_WHOLE_STATIC_LIBRARIES := $(strip $(built_whole_gcno_libraries))
|
||||
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_PREFIX := $(my_prefix)
|
||||
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_2ND_ARCH_VAR_PREFIX := $(LOCAL_2ND_ARCH_VAR_PREFIX)
|
||||
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_INTERMEDIATES_DIR := $(intermediates)
|
||||
$(intermediates)/$(GCNO_ARCHIVE) : $(LOCAL_GCNO_FILES) $(built_whole_gcno_libraries)
|
||||
$(transform-o-to-static-lib)
|
||||
endif
|
||||
|
|
Loading…
Reference in a new issue