Added support for Instant Messaging, fixed mem leaks, documentation.
[libgcal.git] / mk / auxdevel.am
blobb70733cf9c3106265eec20b851d0d2fa7dea6848
1 # auxdevel.am -- Makefile snippet to be included in Makefile.am for projects
2 # making use of auxdevel.m4
4 # This file appends data to many Make variables.  It would be an error to append
5 # to an undefined variable.  However, if you're using auxdevel.m4, it takes care
6 # of that by defining the variables used here with empty values.
8 # This file set some flags in AM_CFLAGS and LDADD.  Be careful that these global
9 # variables will be overwritten by target-specific _CFLAGS and _LDADD/_LIBADD.
12 # Global flags
13 AM_CFLAGS += -I$(csourcedir) $(if $(headerdir), -I$(headerdir),)
14 AM_CFLAGS += $(ac_devel_default_warnings)
16 if LCOV
17 AM_CFLAGS += -fprofile-arcs -ftest-coverage
18 MOSTLYCLEANFILES += *.bb *.bbg *.gcno
19 CLEANFILES += *.da *.gcda *.lcov
20 endif
22 # Documentation
23 docs:
24         mkdir -p docs
25 clean-docs:
26         rm -rf docs
27 clean-local: clean-docs
29 doc: doxygen lcov
30 DOXYOUT=docs/doxygen
31 doxygen: docs Doxyfile
32         mkdir -p $(DOXYOUT)
33         (cat Doxyfile; echo "OUTPUT_DIRECTORY = " \"$(DOXYOUT)\" ) \
34         | doxygen -
36 if LCOV
37 LCOVOUT=docs/lcov-reports
38 LCOVLOG=docs/lcov_log.txt
40 # TODO: the first sed regexp is due to a gcov/lcov bug which adds a
41 # trailing build/ in the path to source.  This should be better investigated.
43 # TODO: the second sed regexp removes "..".  It would be best if we could do that
44 # in auxdevel.m4.
46 # TODO: for GCOV reasons a symlink pointing to $(csourcedir) is needed when
47 # building in a directory outside of $(sourcedir) even thought we remove
48 # the trailing build/ from pathnames.
50 lcov: docs $(TESTS)
51         @[ ! -e $$(basename $(csourcedir)) ] && ln -s $(csourcedir) . || true
52         @( \
53         rm -f .lcov_test_run_error; \
54         for test in $(TESTS); do \
55                 lcov --zerocounters --directory . --quiet ;\
56                 \
57                 (./$$test 2>&1 || touch .lcov_test_run_error) \
58                 | grep -E -v '^arc profiling: Can.t open output file' \
59                 | grep -E -v '(Electric Fence.*Bruce Perens|^$$)' ;\
60                 \
61                 lcov --capture --directory . \
62                 --output-file $$test-info.lcov \
63                 --test-name "$$test (check)" --quiet ;\
64                 \
65                 for testdir in "$(abs_utestdir)" "$(abs_mytestdir)" $(lcov_ignore_dirs); do \
66                         test "$$testdir" && lcov --remove $$test-info.lcov \
67                         "$$testdir*" \
68                         --quiet -o $$test-info.lcov ;\
69                 done ;\
70                 sed --in-place  \
71                 -e "/^SF:/s;$(ac_devel_abs_builddir);$(ac_devel_abs_srcdir);" \
72                 $$test-info.lcov ;\
73         done ;\
74         genhtml *.lcov --output-directory=$(LCOVOUT) \
75         | grep 'Overall coverage rate' ) | tee $(LCOVLOG)
76         @[ -L $$(basename $(csourcedir)) ] && rm $$(basename $(csourcedir)) || true
77         @[ ! -f .lcov_test_run_error ]
78 else
79 lcov: ;
80 endif
82 .PHONY: doc doxygen lcov