makefiles
authorNiki Roo <niki@nikiroo.be>
Thu, 27 Jun 2024 15:01:07 +0000 (17:01 +0200)
committerNiki Roo <niki@nikiroo.be>
Thu, 27 Jun 2024 15:01:07 +0000 (17:01 +0200)
Makefile
man.d
src/cutils
src/tests-cutils/Makefile [moved from src/tests/Makefile with 50% similarity]
src/tests-cutils/cstring-test.c [moved from src/tests/cstring-test.c with 100% similarity]
src/tests-cutils/makefile.d [moved from src/tests/makefile.d with 62% similarity]
src/tests-cutils/tests.c [moved from src/tests/tests.c with 100% similarity]
src/tests-cutils/tests.h [moved from src/tests/tests.h with 100% similarity]

index 802ebafaaaf7bb18e512d27668da71cf44c4d28b..5178ab8e269147f22f1c61424cb8e00f648cabd2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,79 +1,92 @@
 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)..."
 
diff --git a/man.d b/man.d
index 97121397580490bbb8109f7051e93d0c93592cf7..ab527b4b20e595912c4eb8090a7812b1246a8730 100644 (file)
--- 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
index 493c8a6cd70e7e4b520d15edcf9922576506ca59..1c3044c56cb58890730407ba39675fcf9342d8d1 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 493c8a6cd70e7e4b520d15edcf9922576506ca59
+Subproject commit 1c3044c56cb58890730407ba39675fcf9342d8d1
similarity index 50%
rename from src/tests/Makefile
rename to src/tests-cutils/Makefile
index dd682714578d56e9831cc3e55122ea8800b22e52..46c73e54b338c498b0c3f1f8de480d75d51c4c4d 100644 (file)
@@ -1,10 +1,10 @@
 # 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)
 
similarity index 62%
rename from src/tests/makefile.d
rename to src/tests-cutils/makefile.d
index 5116e76a9abfcf0114ba49c84e8b29fd8273b3ff..7bdfac32ce57832394251361d3ea6342fb2038a5 100644 (file)
@@ -1,58 +1,65 @@
 # 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
 
similarity index 100%
rename from src/tests/tests.c
rename to src/tests-cutils/tests.c
similarity index 100%
rename from src/tests/tests.h
rename to src/tests-cutils/tests.h