# -----------------------------------------------------------------
# Make target for line coverage. This target generates a zip file
# called `line_coverage_profiles.zip` that contains a large set of
# zip files one for each fuzz target/critical component. Each zip
# file contains a set of profile files (*.gcno) that we will use
# to generate line coverage reports. Furthermore, target compiles
# all fuzz targets with line coverage instrumentation enabled and
# packs them into another zip file called `line_coverage_profiles.zip`.
#
# To run the make target set the coverage related envvars first:
# 	NATIVE_LINE_COVERAGE=true NATIVE_COVERAGE=true \
#	COVERAGE_PATHS=* make haiku-line-coverage
# -----------------------------------------------------------------

# TODO(b/148306195): Due this issue some fuzz targets cannot be built with
# line coverage instrumentation. For now we just blacklist them.
blacklisted_fuzz_targets := libneuralnetworks_fuzzer

fuzz_targets := $(ALL_FUZZ_TARGETS)
fuzz_targets := $(filter-out $(blacklisted_fuzz_targets),$(fuzz_targets))


# Android components that considered critical.
# Please note that adding/Removing critical components is very rare.
critical_components_static := \
	lib-bt-packets \
	libbt-stack \
	libffi \
	libhevcdec \
	libhevcenc \
	libmpeg2dec \
	libosi \
	libpdx \
	libselinux \
	libvold \
	libyuv

critical_components_shared := \
	libaudioprocessing \
	libbinder \
	libbluetooth_gd \
	libbrillo \
	libcameraservice \
	libcurl \
	libhardware \
	libinputflinger \
	libopus \
	libstagefright \
	libunwind \
	libvixl

# Use the intermediates directory to avoid installing libraries to the device.
intermediates := $(call intermediates-dir-for,PACKAGING,haiku-line-coverage)


# We want the profile files for all fuzz targets + critical components.
line_coverage_profiles := $(intermediates)/line_coverage_profiles.zip

critical_components_static_inputs := $(foreach lib,$(critical_components_static), \
	$(call intermediates-dir-for,STATIC_LIBRARIES,$(lib))/$(lib).a)

critical_components_shared_inputs := $(foreach lib,$(critical_components_shared), \
	$(call intermediates-dir-for,SHARED_LIBRARIES,$(lib))/$(lib).so)

fuzz_target_inputs := $(foreach fuzz,$(fuzz_targets), \
	$(call intermediates-dir-for,EXECUTABLES,$(fuzz))/$(fuzz))

# When line coverage is enabled (NATIVE_LINE_COVERAGE is set), make creates
# a "coverage" directory and stores all profile (*.gcno) files in inside.
# We need everything that is stored inside this directory.
$(line_coverage_profiles): $(fuzz_target_inputs)
$(line_coverage_profiles): $(critical_components_static_inputs)
$(line_coverage_profiles): $(critical_components_shared_inputs)
$(line_coverage_profiles): $(SOONG_ZIP)
	$(SOONG_ZIP) -o $@ -D $(PRODUCT_OUT)/coverage


# Zip all fuzz targets compiled with line coverage.
line_coverage_fuzz_targets := $(intermediates)/line_coverage_fuzz_targets.zip

$(line_coverage_fuzz_targets): $(fuzz_target_inputs)
$(line_coverage_fuzz_targets): $(SOONG_ZIP)
	$(SOONG_ZIP) -o $@ -j $(addprefix -f ,$(fuzz_target_inputs))


.PHONY: haiku-line-coverage
haiku-line-coverage: $(line_coverage_profiles) $(line_coverage_fuzz_targets)
$(call dist-for-goals, haiku-line-coverage, \
	$(line_coverage_profiles):line_coverage_profiles.zip \
	$(line_coverage_fuzz_targets):line_coverage_fuzz_targets.zip)

line_coverage_profiles :=
line_coverage_fuzz_targets :=
