]> j8takagi.net git repositories - yacasl2.git/commitdiff
Makefileでmake gittagとmake gitpushを再定義
authorj8takagi <j8takagi@nifty.com>
Fri, 12 Jun 2026 05:43:50 +0000 (14:43 +0900)
committerj8takagi <j8takagi@nifty.com>
Fri, 12 Jun 2026 05:43:50 +0000 (14:43 +0900)
Makefile
git.mk [new file with mode: 0644]

index f1aadafc03389068202170691cba466e35257236..9b28da2a26b5df922221f005c049e7595a9d44f6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -10,6 +10,7 @@
 CAT := cat
 CP := cp -v
 DATE := date
+DIFF :=diff
 ECHO := /bin/echo
 EXPR := expr
 GIT := git
@@ -46,9 +47,6 @@ build: version
        $(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) $< $@
 
@@ -102,10 +100,18 @@ gitpushgithub:
        $(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
 
@@ -118,9 +124,6 @@ src-clean:
 src-distclean:
        $(MAKE) -sC src distclean
 
-gtags-clean:
-       $(RM) GPATH GRTAGS GSYMS GTAGS
-
 doc-clean:
        $(MAKE) -sC doc clean
 
diff --git a/git.mk b/git.mk
new file mode 100644 (file)
index 0000000..51c6007
--- /dev/null
+++ b/git.mk
@@ -0,0 +1,32 @@
+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