-CAT := cat
-GIT := git
-PRINTF := printf
-WC = wc
-XARGS := xargs
+.PHONY: release docbase docall gitpush gittag clean distclean
-VERSION := $(shell $(CAT) VERSION)
+release:
-VERSIONGITREF := $(shell $(GIT) show-ref -s --tags $(VERSION))
-
-MAINGITREF := $(shell $(GIT) show-ref -s refs/heads/main)
-
-.PHONY: docall gittag version
-
-doc:
+docbase:
$(MAKE) -C doc base
docall:
$(MAKE) -C doc all
-gittag:
- if test `$(GIT) status -s | $(WC) -l` -gt 0; then $(PRINTF) "Error: commit, first.\n"; exit 1; fi; if test "$(VERSIONGITREF)" != "$(MAINGITREF)"; then $(GIT) tag $(VERSION); fi
+gitpush: gitpush___stamp
+
+gittag: gittag___stamp
+
+include git.mk
+
+distclean: clean
-version: VERSION
- @$(PRINTF) "Autotest.mk Version: $(VERSION)"
+clean: gitclean
+ $(MAKE) -C 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/v\([0-9]*\.[0-9]*\)p.*$$/\1/' )
+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 $$($(CAT) VERSION) >/dev/null 2>&1; do $(PRINTF) "v%sp%s\n" $(VERSIONNO) $$($(EXPR) $(PATCHNO) + 1) >$<; done
+ $(CAT) $< >$@
+
+gitclean:
+ $(RM) *___stamp