From: Niki Roo Date: Thu, 27 Jun 2024 15:17:29 +0000 (+0200) Subject: makefiles X-Git-Url: http://git.nikiroo.be/?a=commitdiff_plain;h=d9506109b1cf7deaefe6d73ff749aece2eab5886;p=cbook.git makefiles --- diff --git a/Makefile b/Makefile index 2a0779a..eaf5f24 100644 --- a/Makefile +++ b/Makefile @@ -1,88 +1,93 @@ NAME = cbook +NAMES = $(NAME) cutils +TEST = +TESTS = + +PREFIX = /usr/local + dstdir = bin + .PHONY: all run clean mrpropre mrpropre love debug doc man \ test tests run-test run-tests run-test-more run-tests-more \ mess-build mess-run mess-clean mess-propre mess-doc mess-man \ mess-test mess-run-test mess-run-test-more \ - $(NAME) utils \ - MK MKTEST MKMAN + $(NAMES) $(TESTS) -all: mess-build $(NAME) +all: build -# Sub makes: -MK: - @$(MAKE) -C src/$(NAME) $(MAKECMDGOALS) DEBUG=$(DEBUG) -MKTEST: - @$(MAKE) -C src/tests $(MAKECMDGOALS) DEBUG=$(DEBUG) -MKUTILS: - @$(MAKE) -C src/cutils $(MAKECMDGOALS) DEBUG=$(DEBUG) -MKMAN: - @$(MAKE) -f man.d $(MAKECMDGOALS) NAME=$(NAME) PREFIX=$(PREFIX) +build: mess-build $(NAMES) + +test: mess-test $(TESTS) # Main buildables -$(NAME): utils MK -utils: - @$(MAKE) -C src/cutils DEBUG=$(DEBUG) -check: - @$(MAKE) -C src/cutils check DEBUG=$(DEBUG) +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 $(dstdir)/$(NAME) -# Test + run test -tests: test -test: mess-test utils check MKTEST -run-tests: run-test -run-test: mess-run-test utils check MKTEST -run-tests-more: run-test-more -run-test-more: mess-run-test-more utils check 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) DEBUG=1 # Clean -clean: mess-clean MK MKTEST MKUTILS +clean: mess-clean $(NAMES) $(TESTS) mrproper: mrpropre -mrpropre: mess-propre MK MKTEST MKUTILS 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 ">>>>>>>>>> Running $(NAME)..." 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 @echo ">>>>>>>>>> Building tests for $(NAME)..." mess-run-test: - @echo ">>>>>>>>>> Running tests on $(NAME)..." @echo + @echo ">>>>>>>>>> Running tests on $(NAME)..." mess-run-test-more: - @echo ">>>>>>>>>> Running more tests on $(NAME)..." @echo + @echo ">>>>>>>>>> Running more tests on $(NAME)..." mess-install: + @echo @echo ">>>>>>>>>> Installing $(NAME) into $(PREFIX)..." mess-uninstall: + @echo @echo ">>>>>>>>>> Uninstalling $(NAME) from $(PREFIX)..." diff --git a/man.d b/man.d index 9712139..ab527b4 100644 --- a/man.d +++ b/man.d @@ -47,8 +47,10 @@ mrpropre: 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 @@ -59,6 +61,9 @@ uninstall: 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 diff --git a/src/cbook/makefile.d b/src/cbook/makefile.d index c7531c5..4747a79 100644 --- a/src/cbook/makefile.d +++ b/src/cbook/makefile.d @@ -1,28 +1,44 @@ # Note: 99+ required for for-loop initial declaration (CentOS 6) -srcdir = cbook +NAME = cbook +NAMES = $(NAME) +srcdir = $(NAME) dstdir = ../bin CFLAGS += -Wall -pedantic -I./ -std=c99 CXXFLAGS += -Wall -pedantic -I./ -LDFLAGS += $(dstdir)/libcutils.o +# LDFLAGS += -lcheck +PREFIX = /usr/local ifdef DEBUG CFLAGS += -ggdb -O0 CXXFLAGS += -ggdb -O0 endif -.PHONY: all build install uninstall clean mrpropre mrpropre - -all: build - -build: $(dstdir)/cbook +.PHONY: all build install uninstall clean mrpropre mrpropre \ + $(NAMES) SOURCES=$(wildcard $(srcdir)/*.c) HEADERS=$(wildcard $(srcdir)/*.h) OBJECTS=$(SOURCES:%.c=%.o) -$(dstdir)/cbook: $(OBJECTS) $(dstdir)/libcutils.o +# Main targets + +all: build + +build: $(NAMES) + +cbook: $(dstdir)/cbook + +################ +# Dependencies # +################ +OBJECTS+=$(dstdir)/libcutils.o +$(dstdir)/libcutils.o: + $(MAKE) --no-print-directory -C cutils/ cutils +################ + +$(dstdir)/cbook: $(OBJECTS) mkdir -p $(dstdir) $(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $@ diff --git a/src/cutils b/src/cutils index 493c8a6..1c3044c 160000 --- a/src/cutils +++ b/src/cutils @@ -1 +1 @@ -Subproject commit 493c8a6cd70e7e4b520d15edcf9922576506ca59 +Subproject commit 1c3044c56cb58890730407ba39675fcf9342d8d1