+# sources from where to build the sources
+DOC_SOURCES = $(shell find ../src -name '*.hpp')
# prefix for installing the binaries and headers
prefix=/usr/local
+# install command
+INSTALL = install -p -m 0644 -D
+
+
+# install utility functions
+install_msg = echo " INSTALL $(1)"
+
+install_group = @$(call install_msg,$(2)) && \
+ cd reference && \
+ for f in `find $(1) -type f`; do \
+ $(call install,$$f,$(2)/$$f); \
+ done && \
+ cd .. && \
+ touch $@
+
ifneq ($(V), 1)
NICE_DOXY = @echo " DOXYGEN"; (cat Doxyfile; echo "QUIET=YES") | doxygen -
NICE_CLEAN = @echo " CLEAN"; $(RM)
-NICE = @
+install = $(INSTALL) $(1) $(2)
else
NICE_DOXY = doxygen
NICE_CLEAN = $(RM) -v
-NICE =
+install = $(call install_msg,$(2)); $(INSTALL) $(1) $(2)
endif
all: doc
-doc: include
+doc: .doc-stamp
+
+.doc-stamp: include $(DOC_SOURCES) Doxyfile
$(NICE_DOXY)
+ @touch $@
install: install-man install-html
-install-man: doc
- $(NICE) for f in `find reference/man -type f | cut -b11-`; do \
- echo " INSTALL $(prefix)/share/$$f"; \
- install -p -m 0644 -D reference/$$f $(prefix)/share/$$f; \
- done
+install-man: .install-man-stamp
+
+.install-man-stamp: .doc-stamp
+ $(call install_group,man,$(prefix)/share/man)
-install-html: doc
- $(NICE) for f in `find reference/html -type f | cut -b11-`; do \
- echo " INSTALL $(prefix)/share/doc/posixx/$$f"; \
- install -p -m 0644 -D reference/$$f $(prefix)/share/doc/posixx/$$f; \
- done
+install-html: .install-html-stamp
+
+.install-html-stamp: .doc-stamp
+ $(call install_group,html,$(prefix)/share/doc/posixx/html)
include:
@mkdir -p include
@ln -fs ../../src include/posixx
clean:
- $(NICE_CLEAN) -r reference include
+ $(NICE_CLEAN) -r reference include .*-stamp
.PHONY: default all doc install install-man install-doc clean
-
HDRPATH = posixx
+# install command
+INSTALL = install -p -m 0644 -D
+
+
+# install utility functions
+install_msg = echo " INSTALL $(1)"
+
+install_files = @$(call install_msg,$(2)) && \
+ for f in $(1); do \
+ $(call install,$$f,$(2)/$$f); \
+ done && \
+ touch $@
+
ifneq ($(V), 1)
-NICE_NOP =
-NICE = @
+NICE_CLEAN = @echo " CLEAN"; $(RM)
+install = $(INSTALL) $(1) $(2)
else
-NICE_NOP = @echo "Nothing to do, headers only"
-NICE =
+NICE_CLEAN = $(RM) -v
+install = $(call install_msg,$(2)); $(INSTALL) $(1) $(2)
endif
default: all
all:
- $(NICE_NOP)
-
-install-headers: $(HEADERS)
- $(NICE) for f in $(HEADERS); do \
- echo " INSTALL $(prefix)/include/$(HDRPATH)/$$f"; \
- install -p -m 0644 -D $$f $(prefix)/include/$(HDRPATH)/$$f; \
- done
install: install-headers
+install-headers: .install-headers-stamp
+
+.install-headers-stamp: $(HEADERS)
+ $(call install_files,$^,$(prefix)/include/$(HDRPATH))
+
clean:
- $(NICE_NOP)
+ $(NICE_CLEAN) .*-stamp
-.PHONY: default all clean install-headers install
+.PHONY: default all install install-headers clean
ifneq ($(V), 1)
NICE_CXX = @echo " CXX $@"; $(CXX)
NICE_LINK = @echo " LINK $@"; $(CXX)
-NICE_TEST = @echo " TEST"; $(TESTCMD) > test_suite.log 2>&1
+NICE_TEST = @echo " TEST"; $(TESTCMD) > $(TESTPRG).log 2>&1
NICE_MEMTEST = @echo " MEMTEST"; $(VALGRIND) --log-file=valgrind.log \
- $(TESTCMD) > valgrind.test_suite.log 2>&1
+ $(TESTCMD) > valgrind.$(TESTPRG).log 2>&1
NICE_CLEAN = @echo " CLEAN"; $(RM)
else
NICE_CXX = $(CXX)
default: all
-all: test_suite
+all: $(TESTPRG)
# dependency handling
@mkdir -p include
@ln -fs ../../src include/posixx
-test: all
+test: .test-stamp
+
+.test-stamp: $(TESTPRG)
$(NICE_TEST)
+ @touch $@
+
+memtest: .memtest-stamp
-memtest: all
+.memtest-stamp: $(TESTPRG)
$(NICE_MEMTEST)
+ @touch $@
clean:
$(NICE_CLEAN) -r $(TESTPRG) include $(OBJS) .deps valgrind.log \
- *.bb *.bbg *.da *.gcov *.gcda *.gcno gmon.out
+ *.bb *.bbg *.da *.gcov *.gcda *.gcno gmon.out .*-stamp
-.PHONY: default all test clean
+.PHONY: default all test memtest clean