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