CAT := cat
CP := cp -v
DATE := date
+DIFF :=diff
ECHO := /bin/echo
EXPR := expr
GIT := git
$(MAKE) -C src all
@(for f in $(CMDFILES); do if test ! -e $$f -o src/$$f -nt $$f; then $(CP) src/$$f $$f; fi; done)
-gtags:
- $(if $(strip $(shell $(WHICH) $(GTAGS))),$(GTAGS),@$(ECHO) '$(GTAGS): not found')
-
INSTALL: doc/install.txt
$(CP) $< $@
$(GIT) push github main
$(GIT) push github $(VERSION)
-copyright:
- $(SED) -i.bak 's/Copyright (c) 2010-20[0-9][0-9]/Copyright (c) 2010-$(YEAR)/g' LICENSE README && $(RM) *.bak
+copyright: LICENSE.copyright___stamp README.copyright___stamp
+
+%.copyright___stamp: %
+ $(SED) -i.sedbak 's/Copyright (c) 2010-20[0-9][0-9]/Copyright (c) 2010-$(YEAR)/g' && $(DIFF) $<.sedbak $< >$@ && $(RM) *.sedbak
+
+include git.mk
-distclean: cmd-clean src-distclean gtags-clean version-clean clean
+gittag: gittag___stamp
+
+gitpush: gitpush___stamp
+
+distclean: cmd-clean src-distclean gitclean version-clean clean
clean: src-clean doc-clean doc_inner-clean
src-distclean:
$(MAKE) -sC src distclean
-gtags-clean:
- $(RM) GPATH GRTAGS GSYMS GTAGS
-
doc-clean:
$(MAKE) -sC doc clean
--- /dev/null
+CAT := cat
+EXPR := expr
+GIT := git
+PRINTF := printf
+SED := sed
+
+# VERSION FORMAT: v<VERSIONNO>p<PATCHNO> (Example: v0.1p00)
+VERSION = $(shell $(CAT) VERSION)
+VERSIONNO = $(shell $(CAT) VERSION | $(SED) 's/p.*$$//' )
+PATCHNO = $(shell $(CAT) VERSION | $(SED) 's/^.*p//' )
+
+gitpush___stamp: gittag___stamp
+ $(GIT) push origin main --follow-tags
+ $(GIT) push github main --follow-tags
+ $(GIT) rev-parse HEAD > $@
+
+gittag___stamp: commit___stamp
+ $(GIT) tag $(VERSION) main
+ $(PRINTF) "%s\n" "$(VERSION)" > $@
+
+commit___stamp: version_up___stamp
+ $(GIT) add VERSION
+ $(GIT) commit
+ $(GIT) rev-parse HEAD > $@
+
+version_up___stamp: VERSION
+ if [ -n "$$($(GIT) status -s)" ]; then $(PRINTF) "Error: commit, first.\n"; exit 1; fi
+ while $(GIT) rev-parse -q --verify $(VERSION) >/dev/null 2>&1; do $(PRINTF) "v%sp%s\n" $(VERSIONNO) $$($(EXPR) $(PATCHNO) + 1) >$<; done
+ $(CAT) $< >$@
+
+gitclean:
+ $(RM) *___stamp