]> git.tuebingen.mpg.de Git - dss.git/blobdiff - Makefile
Merge topic branch t/misc into pu
[dss.git] / Makefile
index c06fdece8d3c39b6a985af1b2e3fbe493579f1c4..db232890a63e4ccf9129d898926aa50745e3abf3 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,41 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 
 PACKAGE := dss
-SLOGAN := the dyadic snapshot scheduler
-define DESCRIPTION1 :=
-       $(PACKAGE) maintains hardlink-based snapshots of a given directory on a
-       remote or local host using rsync's link-dest feature. The snapshots
-       are organized so that any snapshot can directly be deployed as an
-       (emergency) replacement for the primary system.
-endef
-define DESCRIPTION2 :=
-       $(PACKAGE) is admin friendly: It is easy to configure and needs little
-       attention after the initial setup. In particular, no full, incremental
-       or differential backups need to be configured, and there is no database
-       to maintain. $(PACKAGE) is also user-friendly: Assuming the snapshot server
-       allows read-only user access over the network, users can restore
-       accidentically removed files without admin intervention, using their
-       favorite file browser to copy files from the snapshot directory back
-       to the primary system.
-endef
-define DESCRIPTION3 :=
-       $(PACKAGE) keeps track of the age and the state of existing snapshots and
-       triggers snapshot creation and removal according to the configuration
-       settings. It tries to maintain a scheme where many recent snapshots
-       and few old snapshots exist, for example 16 snapshots newer than a
-       week, 8 snapshots between one and two weeks old, 4 snapshots between
-       two and three weeks old, and so on.
-endef
-AUTHOR := Andre Noll
-EMAIL := maan@tuebingen.mpg.de
-URL := https://people.tuebingen.mpg.de/maan/$(PACKAGE)/
-CLONE_URL := https://git.tuebingen.mpg.de/$(PACKAGE)
-GITWEB_URL := https://git.tuebingen.mpg.de/$(PACKAGE).git
-PACKAGE_HOMEPAGE := https://people.tuebingen.mpg.de/maan/$(PACKAGE)/
-HOME_URL := https://people.tuebingen.mpg.de/maan/
-LICENSE := GPL-2.0
-LICENSE_URL := https://www.gnu.org/licenses/
-
 PREFIX ?= /usr/local
 INSTALL ?= install
 INSTALL_PROGRAM ?= $(INSTALL)
@@ -45,29 +10,16 @@ B := build
 VERSION := $(shell $(MKDIR_P) $(B) && ./version-gen.sh $(PACKAGE) $(B)/version.c)
 RM := rm -f
 LSG := lopsubgen
-GROFF := groff -m man -Thtml -P -l -P -r
+GROFF := groff -m man -t -Thtml -P -l -P -r -P -I -P image
 GZIP := gzip -cfn9
-M4 := m4 \
-       -D "AUTHOR=$(AUTHOR)" \
-       -D "PACKAGE=$(PACKAGE)" \
-       -D "SLOGAN=$(SLOGAN)" \
-       -D "EMAIL=$(EMAIL)" \
-       -D "URL=$(URL)" \
-       -D "CLONE_URL=$(CLONE_URL)" \
-       -D "GITWEB_URL=$(GITWEB_URL)" \
-       -D "HOME_URL=$(HOME_URL)" \
-       -D "PACKAGE_HOMEPAGE=$(PACKAGE_HOMEPAGE)" \
-       -D "LICENSE=$(LICENSE)" \
-       -D "LICENSE_URL=$(LICENSE_URL)" \
-       -D "DESCRIPTION1=$(DESCRIPTION1)" \
-       -D "DESCRIPTION2=$(DESCRIPTION2)" \
-       -D "DESCRIPTION3=$(DESCRIPTION3)"
+GIT := git
+M4 := m4 -D "PACKAGE=$(PACKAGE)" defs.m4
 c_source := $(PACKAGE) str file exec sig daemon df tv snap ipc
 c_generated := $(B)/$(PACKAGE).lsg $(B)/version
 objs := $(addsuffix .o, $(c_generated) $(addprefix $(B)/, $(c_source)))
 deps := $(objs:.o=.d)
 all := $(PACKAGE) $(PACKAGE).1.gz
-www := $(B)/index.html $(B)/$(PACKAGE).1.html
+www := $(B)/index.html $(B)/$(PACKAGE).1.html $(B)/$(PACKAGE)
 
 all: $(all)
 www: $(www)
@@ -93,6 +45,7 @@ DSS_CFLAGS += -Wshadow
 
 CC_CMD = $(CC) -c -o $@ $(DSS_CPPFLAGS) $(CPPFLAGS) $(DSS_CFLAGS) $(CFLAGS) \
                -MMD -MF $(B)/$(*F).d -MT $@ $<
+LD_CMD = $(CC) -o $@ $(objs) $(LDFLAGS) -llopsub
 
 .ONESHELL:
 .SHELLFLAGS := -ec
@@ -106,7 +59,11 @@ $(B)/version.c:
        ./version-gen.sh $(PACKAGE) version.c > /dev/null
 $(PACKAGE): $(objs)
        $(call SAY, LD $@)
-       $(CC) -o $@ $(objs) $(LDFLAGS) -llopsub
+       $(LD_CMD)
+$(B)/$(PACKAGE): $(objs)
+       $(call SAY, LD $@)
+       $(LD_CMD) -static
+       strip $@
 $(B)/%.o: $(B)/%.c
        $(call SAY, CC $<)
        $(CC_CMD)
@@ -114,9 +71,9 @@ $(B)/%.o: %.c
        $(call SAY, CC $<)
        $(CC_CMD)
 
-.PHONY: all www clean install README
+.PHONY: all www clean distclean maintainer-clean install README
 .PRECIOUS: $(B)/%.lsg.c $(B)/%.lsg.h $(B)/%.suite $(B)/%.1
-$(B)/$(PACKAGE).suite: $(PACKAGE).suite.m4 Makefile
+$(B)/$(PACKAGE).suite: $(PACKAGE).suite.m4 defs.m4 Makefile
        $(call SAY, M4 $<)
        $(M4) $< > $@
 $(B)/%.lsg.h: $(B)/%.suite
@@ -133,13 +90,20 @@ $(B)/%.1: $(B)/%.suite
        $(GZIP) < $< > $@
 $(B)/%.1.html: $(B)/%.1
        $(call SAY, GROFF $<)
-       $(GROFF) $< > $@
-$(B)/index.html: index.html.m4 Makefile
+       cd $(B)
+       $(GROFF) ../$< > ../$@
+$(B)/index.html: index.html.m4 Makefile defs.m4 dss.svg
        $(call SAY, M4 $@)
        $(M4) $< > $@
 clean:
        $(call SAY, CLEAN)
-       $(RM) -r $(B) $(all)
+       $(RM) $(B)/*.o $(B)/*.d $(all) $(www)
+distclean: clean
+       $(call SAY, DISTCLEAN)
+       $(RM) -r $(B)
+maintainer-clean: distclean
+       $(call SAY, MAINTANER-CLEAN)
+       $(GIT) clean -dfqxe Makefile.local
 
 ifneq ($(findstring strip, $(MAKECMDGOALS)),)
        strip_option := -s
@@ -151,25 +115,7 @@ install install-strip: all
        $(INSTALL_PROGRAM) $(strip_option) $(PACKAGE) $(bindir)
        $(INSTALL_DATA) $(PACKAGE).1.gz $(mandir)
 
-define README :=
-$(PACKAGE) - $(SLOGAN)
-
-$(DESCRIPTION1)
-
-$(DESCRIPTION2)
-
-$(DESCRIPTION3)
-
-Resources
-~~~~~~~~~
-web page: $(PACKAGE_HOMEPAGE)
-git clone URL: $(CLONE_URL)
-gitweb: $(GITWEB_URL)
-author home page: $(HOME_URL)
-report bugs to: $(AUTHOR) <$(EMAIL)>
-endef
-
 README:
-       @printf '%s\n' "$(README)"
+       @$(M4) README.m4
 
 -include Makefile.local