From bdb1b4c79afea29d8708afeb09771eaaa6753350 Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Tue, 9 Jun 2020 12:39:36 +0100 Subject: [PATCH 1/3] Rename native code coverage paths product variables in Make. Rename `CoveragePath` and `CoverageExcludePaths` as `NativeCoveragePath` and `NativeCoverageExcludePaths` (resp.). Also, populate `NativeCoveragePath` and `NativeCoverageExcludePaths` from environment variables `NATIVE_COVERAGE_PATHS` and `NATIVE_COVERAGE_EXCLUDE_PATHS` (resp.). Test: m nothing Bug: 158212027 Merged-In: I409dbb04b09744a7bd95a4b69361e858b9f89e23 Change-Id: I409dbb04b09744a7bd95a4b69361e858b9f89e23 (cherry picked from commit bad8b386e6dcf0302e1ebe855017390038bee11d) --- core/binary.mk | 8 ++++++-- core/line_coverage.mk | 2 +- core/soong_config.mk | 8 ++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/core/binary.mk b/core/binary.mk index 7ee8c5c7e0..23a201c4ef 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -71,8 +71,12 @@ ifeq (,$(strip $(my_cc))$(strip $(my_cxx))) my_pool := $(GOMA_OR_RBE_POOL) endif -ifneq (,$(strip $(foreach dir,$(COVERAGE_PATHS),$(filter $(dir)%,$(LOCAL_PATH))))) -ifeq (,$(strip $(foreach dir,$(COVERAGE_EXCLUDE_PATHS),$(filter $(dir)%,$(LOCAL_PATH))))) +# TODO(b/158212027): Remove `$(COVERAGE_PATHS)` from this condition when all users have been moved +# to `NATIVE_COVERAGE_PATHS`. +ifneq (,$(strip $(foreach dir,$(COVERAGE_PATHS) $(NATIVE_COVERAGE_PATHS),$(filter $(dir)%,$(LOCAL_PATH))))) +# TODO(b/158212027): Remove `$(COVERAGE_EXCLUDE_PATHS)` from this condition when all users have been +# moved to `NATIVE_COVERAGE_EXCLUDE_PATHS`. +ifeq (,$(strip $(foreach dir,$(COVERAGE_EXCLUDE_PATHS) $(NATIVE_COVERAGE_EXCLUDE_PATHS),$(filter $(dir)%,$(LOCAL_PATH))))) my_native_coverage := true else my_native_coverage := false diff --git a/core/line_coverage.mk b/core/line_coverage.mk index 9b0b528600..b920e285d4 100644 --- a/core/line_coverage.mk +++ b/core/line_coverage.mk @@ -9,7 +9,7 @@ # # To run the make target set the coverage related envvars first: # NATIVE_LINE_COVERAGE=true NATIVE_COVERAGE=true \ -# COVERAGE_PATHS=* make haiku-line-coverage +# NATIVE_COVERAGE_PATHS=* make haiku-line-coverage # ----------------------------------------------------------------- # TODO(b/148306195): Due this issue some fuzz targets cannot be built with diff --git a/core/soong_config.mk b/core/soong_config.mk index 3f4ba24bc3..b69052adb5 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -113,8 +113,12 @@ $(call add_json_str, TidyChecks, $(WITH_TIDY_CHECKS)) $(call add_json_bool, NativeLineCoverage, $(filter true,$(NATIVE_LINE_COVERAGE))) $(call add_json_bool, Native_coverage, $(filter true,$(NATIVE_COVERAGE))) $(call add_json_bool, ClangCoverage, $(filter true,$(CLANG_COVERAGE))) -$(call add_json_list, CoveragePaths, $(COVERAGE_PATHS)) -$(call add_json_list, CoverageExcludePaths, $(COVERAGE_EXCLUDE_PATHS)) +# TODO(b/158212027): Remove `$(COVERAGE_PATHS)` from this list when all users have been moved to +# `NATIVE_COVERAGE_PATHS`. +$(call add_json_list, NativeCoveragePaths, $(COVERAGE_PATHS) $(NATIVE_COVERAGE_PATHS)) +# TODO(b/158212027): Remove `$(COVERAGE_EXCLUDE_PATHS)` from this list when all users have been +# moved to `NATIVE_COVERAGE_EXCLUDE_PATHS`. +$(call add_json_list, NativeCoverageExcludePaths, $(COVERAGE_EXCLUDE_PATHS) $(NATIVE_COVERAGE_EXCLUDE_PATHS)) $(call add_json_bool, SamplingPGO, $(filter true,$(SAMPLING_PGO))) From 14323e5cf0f7cebdd70633cf48cb01eb749e1ada Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Tue, 9 Jun 2020 13:04:27 +0100 Subject: [PATCH 2/3] Introduce product variables to select Java code coverage paths in Make. Introduce product variables `JavaCoveragePaths` and `JavaCoverageExcludePaths` (resp. populated from environment variables `JAVA_COVERAGE_PATHS` and `JAVA_COVERAGE_EXCLUDE_PATHS`). Use them to control which Java modules are candidate for instrumentation based on their source path. By default (when `JavaCoveragePaths` is empty), have all Java modules be candidate for instrumentation, to preserve the existing behavior. Test: export EMMA_INSTRUMENT=true \ && export EMMA_INSTRUMENT_FRAMEWORK=true \ && export JAVA_COVERAGE_PATHS=art \ && m Bug: 158212027 Bug: 156284897 Merged-In: I5de6eb460709d7d66d81e3432e11f94ff14dd1c9 Change-Id: I5de6eb460709d7d66d81e3432e11f94ff14dd1c9 --- core/soong_config.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/soong_config.mk b/core/soong_config.mk index b69052adb5..e6d5f54410 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -110,6 +110,9 @@ $(call add_json_bool, DisableScudo, $(filter true,$(PRODUCT $(call add_json_bool, ClangTidy, $(filter 1 true,$(WITH_TIDY))) $(call add_json_str, TidyChecks, $(WITH_TIDY_CHECKS)) +$(call add_json_list, JavaCoveragePaths, $(JAVA_COVERAGE_PATHS)) +$(call add_json_list, JavaCoverageExcludePaths, $(JAVA_COVERAGE_EXCLUDE_PATHS)) + $(call add_json_bool, NativeLineCoverage, $(filter true,$(NATIVE_LINE_COVERAGE))) $(call add_json_bool, Native_coverage, $(filter true,$(NATIVE_COVERAGE))) $(call add_json_bool, ClangCoverage, $(filter true,$(CLANG_COVERAGE))) From b6ff8225b152bca74b31cf388c7b6142f9f79bf0 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 16 Jun 2020 17:49:08 -0700 Subject: [PATCH 3/3] Rename Native_coverage to GcovCoverage in Soong Pass the NATIVE_COVERAGE Make variable to Soong as the more accurate GcovCoverage. Also remove NATIVE_LINE_COVERAGE, it doesn't do anything different from NATIVE_COVERAGE, and NATIVE_COVERAGE is always set when NATIVE_LINE_COVERAGE is set. Bug: 159059537 Test: m checkbuild Merged-In: Ib26a0e29f09b87400fd8bc41d2c06a4a8a397a19 Change-Id: Ib26a0e29f09b87400fd8bc41d2c06a4a8a397a19 --- core/line_coverage.mk | 5 ++--- core/soong_config.mk | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core/line_coverage.mk b/core/line_coverage.mk index b920e285d4..c89642e630 100644 --- a/core/line_coverage.mk +++ b/core/line_coverage.mk @@ -8,8 +8,7 @@ # 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 \ -# NATIVE_COVERAGE_PATHS=* make haiku-line-coverage +# NATIVE_COVERAGE=true NATIVE_COVERAGE_PATHS=* make haiku-line-coverage # ----------------------------------------------------------------- # TODO(b/148306195): Due this issue some fuzz targets cannot be built with @@ -68,7 +67,7 @@ critical_components_shared_inputs := $(foreach lib,$(critical_components_shared) 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 +# When coverage is enabled (NATIVE_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) diff --git a/core/soong_config.mk b/core/soong_config.mk index e6d5f54410..51b7e384a4 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -113,8 +113,7 @@ $(call add_json_str, TidyChecks, $(WITH_TIDY_CHECKS)) $(call add_json_list, JavaCoveragePaths, $(JAVA_COVERAGE_PATHS)) $(call add_json_list, JavaCoverageExcludePaths, $(JAVA_COVERAGE_EXCLUDE_PATHS)) -$(call add_json_bool, NativeLineCoverage, $(filter true,$(NATIVE_LINE_COVERAGE))) -$(call add_json_bool, Native_coverage, $(filter true,$(NATIVE_COVERAGE))) +$(call add_json_bool, GcovCoverage, $(filter true,$(NATIVE_COVERAGE))) $(call add_json_bool, ClangCoverage, $(filter true,$(CLANG_COVERAGE))) # TODO(b/158212027): Remove `$(COVERAGE_PATHS)` from this list when all users have been moved to # `NATIVE_COVERAGE_PATHS`.