diff options
-rw-r--r-- | makefiles/Makefile.subdir | 3 | ||||
-rw-r--r-- | makefiles/Makefile.tools | 18 | ||||
-rw-r--r-- | makefiles/Makefile.top | 35 |
3 files changed, 46 insertions, 10 deletions
diff --git a/makefiles/Makefile.subdir b/makefiles/Makefile.subdir index 4f0c149..e206a03 100644 --- a/makefiles/Makefile.subdir +++ b/makefiles/Makefile.subdir @@ -14,6 +14,7 @@ # COMPONENT The name of the component # CURDIR The location of the source tree root # EXPORTDIR The location of the export directory +# WANT_TEST Whether to build testcases # # do_include Canned command sequence to include a child makefile # @@ -47,7 +48,7 @@ INSTALL_ITEMS_$(d) := SOURCES := $(SOURCES) $(addprefix $(d), $(SRCS_$(d))) # Test sources -ifeq ($(MAKECMDGOALS),test) +ifeq ($(WANT_TEST),yes) ifneq ($(DIR_TEST_ITEMS),) # Extract the binary name from the ITEM binary = $(subst /,_,$(addprefix $(d),$(firstword $(subst :, ,$(ITEM))))) diff --git a/makefiles/Makefile.tools b/makefiles/Makefile.tools index af91036..a1e91fa 100644 --- a/makefiles/Makefile.tools +++ b/makefiles/Makefile.tools @@ -138,6 +138,24 @@ endif CFLAGS := $(CFLAGS) $(OPTCFLAGS) LDFLAGS := $(LDFLAGS) $(OPTLDFLAGS) +# Extensions for coverage target +ifeq ($(MAKECMDGOALS),coverage) + COVCFLAGS ?= -fprofile-arcs -ftest-coverage + COVLDFLAGS ?= -lgcov + + CFLAGS := $(CFLAGS) $(COVCFLAGS) + LDFLAGS := $(LDFLAGS) $(COVLDFLAGS) +endif + +# Extensions for profile target +ifeq ($(MAKECMDGOALS),profile) + PROFCFLAGS ?= -pg + PROFLDFLAGS ?= -pg + + CFLAGS := $(CFLAGS) $(PROFCFLAGS) + LDFLAGS := $(LDFLAGS) $(PROFLDFLAGS) +endif + ############################################################################### # lib-shared defaults ############################################################################### diff --git a/makefiles/Makefile.top b/makefiles/Makefile.top index 74fad73..0bc48fe 100644 --- a/makefiles/Makefile.top +++ b/makefiles/Makefile.top @@ -94,6 +94,17 @@ DOCDIR := $(BUILDDIR)/docs # Default prefix PREFIX ?= /usr/local +# Determine if we want to build testcases +ifeq ($(MAKECMDGOALS),test) + WANT_TEST := yes +else ifeq ($(MAKECMDGOALS),profile) + WANT_TEST := yes +else ifeq ($(MAKECMDGOALS),coverage) + WANT_TEST := yes +else + WANT_TEST := no +endif + # List of items to delete on clean CLEAN_ITEMS := # List of items to delete on distclean @@ -141,7 +152,8 @@ endif # Build targets ############################################################################### -.PHONY: all test coverage profile docs clean distclean install uninstall +.PHONY: all test coverage profile docs clean distclean install uninstall \ + __precov __partial_clean # Default target all: $(OUTPUT) @@ -151,10 +163,10 @@ test: $(OUTPUT) $(TEST_BINARIES) $(TEST_TARGETS) $(VQ)$(ECHO) $(ECHOFLAGS) " TEST: Testing complete" # Compute coverage -coverage: clean +__precov: __partial_clean $(Q)$(LCOV) --directory . --zerocounters - $(Q)$(MAKE) test CFLAGS="$(CFLAGS) -fprofile-arcs -ftest-coverage" \ - LDFLAGS="$(LDFLAGS) -lgcov" + +coverage: __precov test $(Q)$(LCOV) --directory $(BUILDDIR) --base-directory $(CURDIR) \ --capture --output-file $(COVERAGEDIR)/$(COMPONENT)_tmp.info $(Q)$(LCOV) --extract $(COVERAGEDIR)/$(COMPONENT)_tmp.info \ @@ -164,17 +176,22 @@ coverage: clean $(COVERAGEDIR)/$(COMPONENT).info # Build for profiling -profile: clean - $(Q)$(MAKE) test CFLAGS="$(CFLAGS) -pg" LDFLAGS="-pg $(LDFLAGS)" +profile: __partial_clean test # Compile documentation docs: $(BUILDDIR)/stamp $(Q)$(DOXYGEN) build/Doxyfile # Clean build tree -clean: +__partial_clean: -$(Q)$(RM) $(RMFLAGS) $(CLEAN_ITEMS) -$(Q)$(RM) $(RMFLAGS) gmon.out + -$(Q)$(RM) $(RMFLAGS) $(wildcard $(BUILDDIR)/*.d) + -$(Q)$(RM) $(RMFLAGS) $(wildcard $(BUILDDIR)/*.gcda) + -$(Q)$(RM) $(RMFLAGS) $(wildcard $(BUILDDIR)/*.gcno) + -$(Q)$(RM) $(RMFLAGS) $(wildcard $(BUILDDIR)/*.o) + +clean: __partial_clean -$(Q)$(RM) $(RMFLAGS) -r build/docs -$(Q)$(RM) $(RMFLAGS) -r $(BUILDDIR) @@ -251,7 +268,7 @@ $(BUILDDIR)/stamp: $(Q)$(MKDIR) $(MKDIRFLAGS) $(BUILDDIR) $(Q)$(MKDIR) $(MKDIRFLAGS) $(COVERAGEDIR) $(Q)$(MKDIR) $(MKDIRFLAGS) $(DOCDIR) - $(Q)$(TOUCH) $(BUILDDIR)/stamp + $(Q)$(TOUCH) $(TOUCHFLAGS) $(BUILDDIR)/stamp $(OUTPUT): $(BUILDDIR)/stamp $(OBJECTS) ifeq ($(COMPONENT_TYPE),lib-static) @@ -317,7 +334,7 @@ $(eval $(foreach SOURCE,$(filter %.c,$(SOURCES)), \ $(call build_c,$(SOURCE),$(subst /,_,$(SOURCE:.c=.o)),BUILDCFLAGS))) # Similarly for test sources -ifeq ($(MAKECMDGOALS),test) +ifeq ($(WANT_TEST),yes) ifeq ($(findstring lib,$(COMPONENT_TYPE)),lib) TESTLIB := $(OUTPUT) TESTLDFLAGS += -L$(BUILDDIR)/ -l$(COMPONENT) |