NAME = cutils
+NAMES = $(NAME)
+TEST = tests-cutils
+TESTS = $(TEST)
+
+PREFIX = /usr/local
+
dstdir = bin
-.PHONY: all run clean mrpropre mrpropre love debug doc man \
+.PHONY: all build run clean mrpropre mrpropre love debug doc man \
test run-test run-test-more \
- mess-run mess-clean mess-propre mess-doc mess-man \
+ mess-build mess-run mess-clean mess-propre mess-doc mess-man \
mess-test mess-run-test mess-run-test-more \
- $(NAME) utils net check \
- MK MKTEST MKMAN
+ $(NAMES)
-all: $(NAME)
+all: build
-# Sub makes:
-M_OPTS=$(MAKECMDGOALS) --no-print-directory PREFIX=$(PREFIX)
-MK:
- @$(MAKE) -C src/$(NAME) $(M_OPTS) DEBUG=$(DEBUG)
-MKTEST:
- @$(MAKE) -C src/tests $(M_OPTS) DEBUG=$(DEBUG)
-MKMAN:
- @$(MAKE) -f man.d $(M_OPTS) NAME=$(NAME)
+build: mess-build $(NAMES)
+
+test: mess-test $(TESTS)
# Main buildables
-$(NAME): utils net check
-utils: MK
-net: MK
-check: MK
+M_OPTS=$(MAKECMDGOALS) --no-print-directory PREFIX=$(PREFIX) DEBUG=$(DEBUG)
+$(NAMES) $(TESTS):
+ $(MAKE) -C src/$@ $(M_OPTS)
+
+# Manual
+man: mess-man
+ @$(MAKE) -f man.d $(M_OPTS) NAME=$(NAME)
# Run
run: mess-run
@echo Nothing to run, this is a library
-# Test + run test
-test: mess-test MKTEST
-run-test: mess-run-test MKTEST
-run-test-more: mess-run-test-more MKTEST
+# Run main test
+run-test: mess-run-test $(TEST)
+run-test-more: mess-run-test-more $(TEST)
# Doc/man/misc
doc: mess-doc
doxygen
-man: mess-man MKMAN
love:
@echo " ...not war."
debug:
$(MAKE) $(M_OPTS) DEBUG=1
# Clean
-clean: mess-clean MK MKTEST
+clean: mess-clean $(NAMES) $(TESTS)
mrproper: mrpropre
-mrpropre: mess-propre MK MKTEST MKMAN
+mrpropre: mess-propre $(NAMES) $(TESTS) man
rm -rf doc/html doc/latex doc/man
rmdir doc 2>/dev/null || true
# Install/uninstall
-install: mess-install MK MKMAN
-uninstall: mess-uninstall MK MKMAN
+install: mess-install $(NAME) man
+uninstall: mess-uninstall $(NAME) man
# Messages
+mess-build:
+ @echo
+ @echo ">>>>>>>>>> Building $(NAMES)..."
mess-run:
- @echo ">>>>>>>>>> Running $(NAME)..."
@echo
+ @echo ">>>>>>>>>> Running $(NAME)..."
mess-clean:
+ @echo
@echo ">>>>>>>>>> Cleaning $(NAME)..."
mess-propre:
+ @echo
@echo ">>>>>>>>>> Calling Mr Propre..."
mess-doc:
+ @echo
@echo ">>>>>>>>>> Generating documentation for $(NAME)..."
mess-man:
+ @echo
@echo ">>>>>>>>>> Generating the manual of $(NAME)..."
mess-test:
- @echo ">>>>>>>>>> Building tests for $(NAME)..."
+ @echo
+ @echo ">>>>>>>>>> Building all tests: $(TESTS)..."
mess-run-test:
- @echo ">>>>>>>>>> Running tests on $(NAME)..."
+ @echo
+ @echo ">>>>>>>>>> Running tests: $(TEST)..."
mess-run-test-more:
- @echo ">>>>>>>>>> Running more tests on $(NAME)..."
+ @echo
+ @echo ">>>>>>>>>> Running more tests: $(TEST)..."
mess-install:
+ @echo
@echo ">>>>>>>>>> Installing $(NAME) into $(PREFIX)..."
mess-uninstall:
+ @echo
@echo ">>>>>>>>>> Uninstalling $(NAME) from $(PREFIX)..."
install:
@if [ -e "man/man1/$(NAME).1" ]; then \
- echo cp -r man/ "$(PREFIX)"/share/; \
- cp -r man/ "$(PREFIX)"/share/; \
+ echo mkdir -p "$(PREFIX)"/share/man; \
+ mkdir -p "$(PREFIX)"/share/man; \
+ echo cp -r man "$(PREFIX)"/share/; \
+ cp -r man "$(PREFIX)"/share/; \
else \
echo "No manual has been built (see \`make man')"; \
fi
echo rm "$(PREFIX)/share/$$page";\
rm "$(PREFIX)/share/$$page";\
done; \
+ echo rmdir "$(PREFIX)/share/man" 2>/dev/null \|\| true; \
+ rmdir "$(PREFIX)/share/man" 2>/dev/null || true; \
+ rmdir "$(PREFIX)/share" 2>/dev/null || true; \
else \
echo "No manual has been built (see \`make man')"; \
fi
-Subproject commit 493c8a6cd70e7e4b520d15edcf9922576506ca59
+Subproject commit 1c3044c56cb58890730407ba39675fcf9342d8d1
# Simply pass everything to makefile.d, but calling from "../"
-.PHONY: MK all install uninstall clean mrpropre mrpropre \
- run test run-test run-test-more
+.PHONY: all build install uninstall clean mrpropre mrpropre \
+ run test run-test run-test-more default \
+ tests-cutils
-$(MAKECMDGOALS): MK
-MK:
+default $(MAKECMDGOALS):
@$(MAKE) --no-print-directory -C ../ -f $(CURDIR)/makefile.d \
$(MAKECMDGOALS)
# Note: 99+ required for for-loop initial declaration (CentOS 6)
-srcdir = tests
+NAME = tests-cutils
+srcdir = $(NAME)
dstdir = ../bin
CFLAGS += -Wall -pedantic -I./ -std=c99
CXXFLAGS += -Wall -pedantic -I./
LDFLAGS += -lcheck
+PREFIX = /usr/local
ifdef DEBUG
CFLAGS += -ggdb -O0
CXXFLAGS += -ggdb -O0
endif
-.PHONY: all install uninstall clean mrpropre mrpropre \
- test run run-test run-test-more
+.PHONY: all build install uninstall clean mrpropre mrpropre \
+ $(NAME) test run run-test run-test-more
SOURCES=$(wildcard $(srcdir)/*.c)
HEADERS=$(wildcard $(srcdir)/*.h)
OBJECTS=$(SOURCES:%.c=%.o)
+# Main target
+
+all: build
+
+build: $(NAME)
+
+$(NAME): $(dstdir)/$(NAME)
+
################
# Dependencies #
################
OBJECTS+=$(dstdir)/libcutils.o
OBJECTS+=$(dstdir)/libcutils-check.o
$(dstdir)/libcutils.o:
- $(MAKE) --no-print-directory -C cutils/ utils
+ $(MAKE) --no-print-directory -C cutils/ cutils
$(dstdir)/libcutils-check.o:
$(MAKE) --no-print-directory -C cutils/ check
################
-all: test
-
-test: $(dstdir)/tests
+$(dstdir)/$(NAME): $(OBJECTS)
+ mkdir -p $(dstdir)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $@
+# Test program, so running = running tests
run: run-test
+test: build
+
run-test: test
@echo
- @$(dstdir)/tests
-
+ @$(dstdir)/$(NAME)
run-test-more: test
@echo
- @$(dstdir)/tests --more
-
-
-$(dstdir)/tests: $(OBJECTS)
- mkdir -p $(dstdir)
- $(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $@
+ @$(dstdir)/($NAME) --more
clean:
- rm -f $(srcdir)/*.o
+ rm -f $(srcdir)/*.o $(srcdir)/*/*.o
mrproper: mrpropre
mrpropre: clean
- rm -f $(dstdir)/tests
+ rm -f $(dstdir)/$(NAME)
rmdir $(dstdir) 2>/dev/null || true