]> code.delx.au - gnu-emacs/blobdiff - Makefile.in
; * admin/make-tarball.txt: Misc updates.
[gnu-emacs] / Makefile.in
index 4cdd293ebd4e4eac016879b42243b78efc2b9a8c..5152a1727590f58fdd2800f37a0d473b215d19a2 100644 (file)
@@ -684,6 +684,7 @@ install-man:
        thisdir=`/bin/pwd`; \
        cd ${mansrcdir}; \
        for page in *.1; do \
+         test "$$page" = ChangeLog.1 && continue; \
          dest=`echo "$${page}" | sed -e 's/\.1$$//' -e '$(TRANSFORM)'`.1; \
          (cd "$${thisdir}"; \
           ${INSTALL_DATA} ${mansrcdir}/$${page} "$(DESTDIR)${man1dir}/$${dest}"); \
@@ -833,7 +834,7 @@ clean: $(clean_dirs:=_clean)
        for dir in test/automated; do \
          [ ! -d $$dir ] || $(MAKE) -C $$dir clean; \
        done
-       -rm -f etc/emacs.tmpdesktop etc/emacs.tmpappdata
+       -rm -f *.tmp etc/*.tmp*
        -rm -rf info-dir.*
 
 ### `bootclean'
@@ -1087,6 +1088,51 @@ bootstrap: bootstrap-clean
        $(MAKE) MAKEFILE_NAME=force-Makefile force-Makefile
        $(MAKE) all
 
+.PHONY: ChangeLog change-history change-history-commit
+.PHONY: master-branch-is-current no-ChangeLog unchanged-history-files
+
+# The newest revision that should not appear in the generated ChangeLog.
+gen_origin = 455f13b8c91a51cd08e19fda737a4358a9a927d6
+
+# Convert git commit log to ChangeLog file.  make-dist uses this.
+ChangeLog:
+       $(AM_V_GEN)distprefix=$(distprefix) srcprefix=$(srcdir)/ \
+       $(srcdir)/build-aux/gitlog-to-emacslog $(gen_origin)
+
+# The ChangeLog history files are called ChangeLog.1, ChangeLog.2, ...,
+# ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX).  $(CHANGELOG_N) stands for
+# the newest (highest-numbered) ChangeLog history file.
+CHANGELOG_HISTORY_INDEX_MAX = 2
+CHANGELOG_N = ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX)
+
+# Check that we are in a good state for changing history.
+no-ChangeLog:
+       test ! -f ChangeLog
+master-branch-is-current:
+       git branch | grep -q '^\* master$$'
+unchanged-history-files:
+       x=$$(git diff-files --name-only $(CHANGELOG_N) Makefile.in) && \
+         test -z "$$x"
+
+# Copy newer commit messages to the start of the ChangeLog history file,
+# and consider them to be older.
+change-history: no-ChangeLog master-branch-is-current unchanged-history-files \
+  ChangeLog
+       (sed '/^;; [L]ocal Variables:/,$$d' <ChangeLog && cat $(CHANGELOG_N)) \
+         >$(CHANGELOG_N).tmp
+       new_origin=$$(git log --pretty=format:%H HEAD^!) && \
+       sed 's/^\(gen_origin *= *\).*/\1'"$$new_origin/" \
+         <Makefile.in >Makefile.in.tmp
+       mv $(CHANGELOG_N).tmp $(CHANGELOG_N)
+       mv Makefile.in.tmp Makefile.in
+       $(MAKE) $@-commit
+
+# If 'make change-history' fails because the newest ChangeLog history
+# file contains invalid text, fix the file by hand and then run
+# 'make change-history-commit'.
+change-history-commit:
+       git commit -m'; make $@' $(CHANGELOG_N) Makefile.in
+
 .PHONY: check-declare
 
 check-declare: