xref: /freebsd/contrib/libucl/Makefile.am (revision d9f0ce31900a48d1a2bfc1c8c86f79d1e831451a)
197bd480fSBaptiste DaroussinACLOCAL_AMFLAGS = -I m4
28e3b1ab2SBaptiste DaroussinEXTRA_DIST = uthash klib README.md
397bd480fSBaptiste Daroussin
497bd480fSBaptiste Daroussinpkgconfigdir = $(libdir)/pkgconfig
597bd480fSBaptiste Daroussinpkgconfig_DATA = libucl.pc
697bd480fSBaptiste Daroussin
74bf54857SBaptiste Daroussinif LUA_SUB
84bf54857SBaptiste Daroussin  LUA_SUBDIR = lua
94bf54857SBaptiste Daroussinendif
104bf54857SBaptiste Daroussin
11*d9f0ce31SBaptiste DaroussinCOVERAGE_INFO_FILE = $(top_builddir)/coverage.info
12*d9f0ce31SBaptiste DaroussinCOVERAGE_REPORT_DIR = $(top_builddir)/coverage
13*d9f0ce31SBaptiste Daroussin
14*d9f0ce31SBaptiste Daroussin.PHONY = coverage-requirement-check clean-coverage-report
15*d9f0ce31SBaptiste Daroussin
16*d9f0ce31SBaptiste Daroussincoverage-requirement-check:
17*d9f0ce31SBaptiste Daroussin	@if test ! -e $(GCOV); then \
18*d9f0ce31SBaptiste Daroussin		echo "Cannot find $(GCOV). Please install gcov."; \
19*d9f0ce31SBaptiste Daroussin		exit 1; \
20*d9f0ce31SBaptiste Daroussin	fi
21*d9f0ce31SBaptiste Daroussin
22*d9f0ce31SBaptiste Daroussincoverage: coverage-requirement-check clean-coverage coverage-build coverage-check coverage-report
23*d9f0ce31SBaptiste Daroussin	@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."
24*d9f0ce31SBaptiste Daroussin
25*d9f0ce31SBaptiste Daroussincoverage-build: coverage-requirement-check
26*d9f0ce31SBaptiste Daroussin	@if test `find $(top_builddir) -name "*.gcno" | wc -l` -eq 0; then \
27*d9f0ce31SBaptiste Daroussin		echo "Start to remove old non-instrumented object files..."; \
28*d9f0ce31SBaptiste Daroussin		$(MAKE) $(AM_MAKEFLAGS) clean; \
29*d9f0ce31SBaptiste Daroussin		echo "Successfully removed old non-instrumented object files."; \
30*d9f0ce31SBaptiste Daroussin	fi
31*d9f0ce31SBaptiste Daroussin	@echo "Start to build libraries with coverage options..."
32*d9f0ce31SBaptiste Daroussin	$(MAKE) $(AM_MAKEFLAGS) \
33*d9f0ce31SBaptiste Daroussin		CFLAGS="$(CFLAGS) $(COVERAGE_CFLAGS) $(COVERAGE_OPTFLAGS)" \
34*d9f0ce31SBaptiste Daroussin		CXXFLAGS="$(CXXFLAGS) $(COVERAGE_CXXFLAGS) $(COVERAGE_OPTFLAGS)" \
35*d9f0ce31SBaptiste Daroussin		LDFLAGS="$(LDFLAGS) $(COVERAGE_LDFLAGS)" \
36*d9f0ce31SBaptiste Daroussin		LIBS="$(LIBS) $(COVERAGE_LIBS)"
37*d9f0ce31SBaptiste Daroussin	@echo "Successfully built libraries with coverage options."
38*d9f0ce31SBaptiste Daroussin
39*d9f0ce31SBaptiste Daroussincoverage-check: coverage-requirement-check
40*d9f0ce31SBaptiste Daroussin	@echo "Start to run tests with instrumented libraries..."
41*d9f0ce31SBaptiste Daroussin	$(MAKE) $(AM_MAKEFLAGS) check \
42*d9f0ce31SBaptiste Daroussin		CFLAGS="$(CFLAGS) $(COVERAGE_CFLAGS) $(COVERAGE_OPTFLAGS)" \
43*d9f0ce31SBaptiste Daroussin		CXXFLAGS="$(CXXFLAGS) $(COVERAGE_CXXFLAGS) $(COVERAGE_OPTFLAGS)" \
44*d9f0ce31SBaptiste Daroussin		LDFLAGS="$(LDFLAGS) $(COVERAGE_LDFLAGS)" \
45*d9f0ce31SBaptiste Daroussin		LIBS="$(LIBS) $(COVERAGE_LIBS)"
46*d9f0ce31SBaptiste Daroussin	@echo "Successfully run tests with instrumented libraries."
47*d9f0ce31SBaptiste Daroussin
48*d9f0ce31SBaptiste Daroussincoverage-lcov: coverage-check coverage-requirement-check
49*d9f0ce31SBaptiste Daroussin	$(LCOV) --capture \
50*d9f0ce31SBaptiste Daroussin		--directory "$(top_builddir)/" \
51*d9f0ce31SBaptiste Daroussin		--output-file $(COVERAGE_INFO_FILE) \
52*d9f0ce31SBaptiste Daroussin		--gcov-tool $(GCOV) \
53*d9f0ce31SBaptiste Daroussin		--compat-libtool --checksum
54*d9f0ce31SBaptiste Daroussin	$(LCOV) --extract $(COVERAGE_INFO_FILE) `pwd`/src/ucl_\* \
55*d9f0ce31SBaptiste Daroussin		--output-file $(COVERAGE_INFO_FILE)
56*d9f0ce31SBaptiste Daroussin
57*d9f0ce31SBaptiste Daroussincoverage-report: coverage-lcov
58*d9f0ce31SBaptiste Daroussin	@echo "Start to create coverage reports..."
59*d9f0ce31SBaptiste Daroussin	$(GENHTML) --prefix "$(top_srcdir)" \
60*d9f0ce31SBaptiste Daroussin		--output-directory $(COVERAGE_REPORT_DIR) \
61*d9f0ce31SBaptiste Daroussin		--title $(PACKAGE_NAME) \
62*d9f0ce31SBaptiste Daroussin		--legend --show-details \
63*d9f0ce31SBaptiste Daroussin		$(GENHTML_OPTIONS) \
64*d9f0ce31SBaptiste Daroussin		$(COVERAGE_INFO_FILE)
65*d9f0ce31SBaptiste Daroussin	@echo "Successfully created coverage reports into $(COVERAGE_REPORT_DIR) directory."
66*d9f0ce31SBaptiste Daroussin
67*d9f0ce31SBaptiste Daroussinclean-coverage-report:
68*d9f0ce31SBaptiste Daroussin	-rm -rf $(COVERAGE_INFO_FILE)
69*d9f0ce31SBaptiste Daroussin	-rm -rf $(COVERAGE_REPORT_DIR)
70*d9f0ce31SBaptiste Daroussin
71*d9f0ce31SBaptiste Daroussinclean-coverage: clean-coverage-report
72*d9f0ce31SBaptiste Daroussin	-$(LCOV) --gcov-tool $(GCOV) --zerocounters --directory $(top_builddir)
73*d9f0ce31SBaptiste Daroussin	@if xargs --version 2>/dev/null; then \
74*d9f0ce31SBaptiste Daroussin		find $(top_builddir) -name "*.gcno" | xargs --no-run-if-empty rm; \
75*d9f0ce31SBaptiste Daroussin	else \
76*d9f0ce31SBaptiste Daroussin		find $(top_builddir) -name "*.gcno" | xargs rm; \
77*d9f0ce31SBaptiste Daroussin	fi
78*d9f0ce31SBaptiste Daroussin
79*d9f0ce31SBaptiste Daroussinclean-local: clean-coverage
80*d9f0ce31SBaptiste Daroussin
814bf54857SBaptiste DaroussinSUBDIRS = src tests utils doc $(LUA_SUBDIR)
82