# # Copyright 2015-2016 Nest Labs Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # Description: # This file defines automake variables and macros common to all # other automake headers and files for code coverage. # # Suffixes # # Suffix for the code coverage report "bundle". # NL_COVERAGE_BUNDLE_SUFFIX = .lcov # # Suffix for the lcov "info" file inside the code coverage report bundle. # NL_COVERAGE_INFO_SUFFIX = .info # # Verbosity macros and flags # NL_V_LCOV = $(nl__v_LCOV_$(V)) nl__v_LCOV_ = $(nl__v_LCOV_$(AM_DEFAULT_VERBOSITY)) nl__v_LCOV_0 = @echo " LCOV $(@)"; nl__v_LCOV_1 = NL_V_LCOV_FLAGS = $(nl__v_LCOV_FLAGS_$(V)) nl__v_LCOV_FLAGS_ = $(nl__v_LCOV_FLAGS_$(AM_DEFAULT_VERBOSITY)) nl__v_LCOV_FLAGS_0 = --quiet nl__v_LCOV_FLAGS_1 = NL_V_GENHTML = $(nl__v_GENHTML_$(V)) nl__v_GENHTML_ = $(nl__v_GENHTML_$(AM_DEFAULT_VERBOSITY)) nl__v_GENHTML_0 = @echo " GENHTML $(@)"; nl__v_GENHTML_1 = NL_V_GENHTML_FLAGS = $(nl__v_GENHTML_FLAGS_$(V)) nl__v_GENHTML_FLAGS_ = $(nl__v_GENHTML_FLAGS_$(AM_DEFAULT_VERBOSITY)) nl__v_GENHTML_FLAGS_0 = --quiet nl__v_GENHTML_FLAGS_1 = # # generate-coverage-report # # Capture, using lcov, a coverage report from the specified directory 'directory' # with an final output "info" file as specified by the target variable. # # - The directory from which lcov should search for coverage data (*.gcno & *.gcda) # # - create baseline coverage data file (base.info) with '-i|--initial' option # - create test coverage data file (test.info) # - combine baseline and test coverage data to create the final "info" file # # Then, on success, generate an HTML-based coverage report using genhtml. # define generate-coverage-report $(NL_V_LCOV)$(LCOV) $(NL_V_LCOV_FLAGS) --config-file="$(abs_top_nlbuild_autotools_dir)/etc/lcov.config" --initial --capture --directory "$(1)" --output-file "base.info" $(NL_V_LCOV)$(LCOV) $(NL_V_LCOV_FLAGS) --config-file="$(abs_top_nlbuild_autotools_dir)/etc/lcov.config" --capture --directory "$(1)" --output-file "test.info" $(NL_V_LCOV)$(LCOV) $(NL_V_LCOV_FLAGS) --config-file="$(abs_top_nlbuild_autotools_dir)/etc/lcov.config" --add-tracefile "base.info" --add-tracefile "test.info" --output-file "$(@)" $(NL_V_GENHTML)$(GENHTML) $(NL_V_GENHTML_FLAGS) --config-file="$(abs_top_nlbuild_autotools_dir)/etc/lcov.config" "$(@)" --output-directory "$(@D)" endef # generate-coverage-report # # generate-coverage-report-with-filter # # Capture, using lcov, a coverage report from the specified directory 'directory' and a filter 'remove_filter' # with an final output "info" file as specified by the target variable. # # - The directory from which lcov should search for coverage data (*.gcno & *.gcda) # # - The filter is a whitespace-separated list of shell wildcard patterns. (note that they may need to be escaped accordingly to prevent # the shell from expanding them first). Every file entry in tracefile which matches at least one of those patterns will be removed. # # - create baseline coverage data file (base.info) with '-i|--initial' option # - create test coverage data file (test.info) # - combine baseline and test coverage data to create the final "info" file # - remove particular coverage data specifiled by the remove_filter (no change if remove_filter is null) # # Then, on success, generate an HTML-based coverage report using genhtml. # define generate-coverage-report-with-filter $(NL_V_LCOV)$(LCOV) $(NL_V_LCOV_FLAGS) --config-file="$(abs_top_nlbuild_autotools_dir)/etc/lcov.config" --initial --capture --directory "$(1)" --output-file "base.info" $(NL_V_LCOV)$(LCOV) $(NL_V_LCOV_FLAGS) --config-file="$(abs_top_nlbuild_autotools_dir)/etc/lcov.config" --capture --directory "$(1)" --output-file "test.info" $(NL_V_LCOV)$(LCOV) $(NL_V_LCOV_FLAGS) --config-file="$(abs_top_nlbuild_autotools_dir)/etc/lcov.config" --add-tracefile "base.info" --add-tracefile "test.info" --output-file "$(@)" $(NL_V_LCOV)$(LCOV) $(NL_V_LCOV_FLAGS) --config-file="$(abs_top_nlbuild_autotools_dir)/etc/lcov.config" --remove "$(@)" $(foreach pattern,$(2),"$(pattern)") --output-file "$(@)" $(NL_V_GENHTML)$(GENHTML) $(NL_V_GENHTML_FLAGS) --config-file="$(abs_top_nlbuild_autotools_dir)/etc/lcov.config" "$(@)" --output-directory "$(@D)" endef # generate-coverage-report-with-filter