0f90908026
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
45 lines
1.6 KiB
Makefile
45 lines
1.6 KiB
Makefile
###########################################################
|
|
## Standard rules for building a static library.
|
|
##
|
|
## Additional inputs from base_rules.make:
|
|
## None.
|
|
##
|
|
## LOCAL_MODULE_SUFFIX will be set for you.
|
|
###########################################################
|
|
|
|
ifeq ($(strip $(LOCAL_MODULE_CLASS)),)
|
|
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
|
|
endif
|
|
ifeq ($(strip $(LOCAL_MODULE_SUFFIX)),)
|
|
LOCAL_MODULE_SUFFIX := .a
|
|
endif
|
|
LOCAL_UNINSTALLABLE_MODULE := true
|
|
ifneq ($(strip $(LOCAL_MODULE_STEM)$(LOCAL_BUILT_MODULE_STEM)),)
|
|
$(error $(LOCAL_PATH): Cannot set module stem for a library)
|
|
endif
|
|
|
|
include $(BUILD_SYSTEM)/binary.mk
|
|
|
|
$(LOCAL_BUILT_MODULE) : $(built_whole_libraries)
|
|
$(LOCAL_BUILT_MODULE) : $(all_objects)
|
|
$(transform-o-to-static-lib)
|
|
|
|
ifeq ($(NATIVE_COVERAGE),true)
|
|
gcno_suffix := .gcnodir
|
|
|
|
built_whole_gcno_libraries := \
|
|
$(foreach lib,$(my_whole_static_libraries), \
|
|
$(call intermediates-dir-for, \
|
|
STATIC_LIBRARIES,$(lib),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX), \
|
|
$(my_host_cross))/$(lib)$(gcno_suffix))
|
|
|
|
GCNO_ARCHIVE := $(LOCAL_MODULE)$(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))
|
|
$(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
|