1263646SbaptACLOCAL_AMFLAGS = -I m4
2279549SbaptEXTRA_DIST = uthash klib README.md
3263646Sbapt
4263646Sbaptpkgconfigdir = $(libdir)/pkgconfig
5263646Sbaptpkgconfig_DATA = libucl.pc
6263646Sbapt
7275223Sbaptif LUA_SUB
8275223Sbapt  LUA_SUBDIR = lua
9275223Sbaptendif
10275223Sbapt
11298166SbaptCOVERAGE_INFO_FILE = $(top_builddir)/coverage.info
12298166SbaptCOVERAGE_REPORT_DIR = $(top_builddir)/coverage
13298166Sbapt
14298166Sbapt.PHONY = coverage-requirement-check clean-coverage-report
15298166Sbapt
16298166Sbaptcoverage-requirement-check:
17298166Sbapt	@if test ! -e $(GCOV); then \
18298166Sbapt		echo "Cannot find $(GCOV). Please install gcov."; \
19298166Sbapt		exit 1; \
20298166Sbapt	fi
21298166Sbapt
22298166Sbaptcoverage: coverage-requirement-check clean-coverage coverage-build coverage-check coverage-report
23298166Sbapt	@echo "Please execute 'make clean' before 'make' or 'make check' to remove instrumented object files(compiled with -O0 etc.). Note that 'make clean' also remove coverage data."
24298166Sbapt
25298166Sbaptcoverage-build: coverage-requirement-check
26298166Sbapt	@if test `find $(top_builddir) -name "*.gcno" | wc -l` -eq 0; then \
27298166Sbapt		echo "Start to remove old non-instrumented object files..."; \
28298166Sbapt		$(MAKE) $(AM_MAKEFLAGS) clean; \
29298166Sbapt		echo "Successfully removed old non-instrumented object files."; \
30298166Sbapt	fi
31298166Sbapt	@echo "Start to build libraries with coverage options..."
32298166Sbapt	$(MAKE) $(AM_MAKEFLAGS) \
33298166Sbapt		CFLAGS="$(CFLAGS) $(COVERAGE_CFLAGS) $(COVERAGE_OPTFLAGS)" \
34298166Sbapt		CXXFLAGS="$(CXXFLAGS) $(COVERAGE_CXXFLAGS) $(COVERAGE_OPTFLAGS)" \
35298166Sbapt		LDFLAGS="$(LDFLAGS) $(COVERAGE_LDFLAGS)" \
36298166Sbapt		LIBS="$(LIBS) $(COVERAGE_LIBS)"
37298166Sbapt	@echo "Successfully built libraries with coverage options."
38298166Sbapt
39298166Sbaptcoverage-check: coverage-requirement-check
40298166Sbapt	@echo "Start to run tests with instrumented libraries..."
41298166Sbapt	$(MAKE) $(AM_MAKEFLAGS) check \
42298166Sbapt		CFLAGS="$(CFLAGS) $(COVERAGE_CFLAGS) $(COVERAGE_OPTFLAGS)" \
43298166Sbapt		CXXFLAGS="$(CXXFLAGS) $(COVERAGE_CXXFLAGS) $(COVERAGE_OPTFLAGS)" \
44298166Sbapt		LDFLAGS="$(LDFLAGS) $(COVERAGE_LDFLAGS)" \
45298166Sbapt		LIBS="$(LIBS) $(COVERAGE_LIBS)"
46298166Sbapt	@echo "Successfully run tests with instrumented libraries."
47298166Sbapt
48298166Sbaptcoverage-lcov: coverage-check coverage-requirement-check
49298166Sbapt	$(LCOV) --capture \
50298166Sbapt		--directory "$(top_builddir)/" \
51298166Sbapt		--output-file $(COVERAGE_INFO_FILE) \
52298166Sbapt		--gcov-tool $(GCOV) \
53298166Sbapt		--compat-libtool --checksum
54298166Sbapt	$(LCOV) --extract $(COVERAGE_INFO_FILE) `pwd`/src/ucl_\* \
55298166Sbapt		--output-file $(COVERAGE_INFO_FILE)
56298166Sbapt
57298166Sbaptcoverage-report: coverage-lcov
58298166Sbapt	@echo "Start to create coverage reports..."
59298166Sbapt	$(GENHTML) --prefix "$(top_srcdir)" \
60298166Sbapt		--output-directory $(COVERAGE_REPORT_DIR) \
61298166Sbapt		--title $(PACKAGE_NAME) \
62298166Sbapt		--legend --show-details \
63298166Sbapt		$(GENHTML_OPTIONS) \
64298166Sbapt		$(COVERAGE_INFO_FILE)
65298166Sbapt	@echo "Successfully created coverage reports into $(COVERAGE_REPORT_DIR) directory."
66298166Sbapt
67298166Sbaptclean-coverage-report:
68298166Sbapt	-rm -rf $(COVERAGE_INFO_FILE)
69298166Sbapt	-rm -rf $(COVERAGE_REPORT_DIR)
70298166Sbapt
71298166Sbaptclean-coverage: clean-coverage-report
72298166Sbapt	-$(LCOV) --gcov-tool $(GCOV) --zerocounters --directory $(top_builddir)
73298166Sbapt	@if xargs --version 2>/dev/null; then \
74298166Sbapt		find $(top_builddir) -name "*.gcno" | xargs --no-run-if-empty rm; \
75298166Sbapt	else \
76298166Sbapt		find $(top_builddir) -name "*.gcno" | xargs rm; \
77298166Sbapt	fi
78298166Sbapt
79298166Sbaptclean-local: clean-coverage
80298166Sbapt
81298166SbaptSUBDIRS = src tests utils doc $(LUA_SUBDIR)
82