X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/d6e990b65cc560e97c02e99bfd00826018b3030c..eb0f65b4fbbea60100b53cb40a1d7138d47ad0d2:/Makefile.in diff --git a/Makefile.in b/Makefile.in index 858a34d942..3cfbe5704f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -290,7 +290,7 @@ SUBDIR = $(NTDIR) lib lib-src src lisp # The subdir makefiles created by config.status. SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@ -SUBDIR_MAKEFILES = `echo $(SUBDIR_MAKEFILES_IN:.in=) | sed 's|$(srcdir)/||g'` +SUBDIR_MAKEFILES = $(patsubst ${srcdir}/%,%,${SUBDIR_MAKEFILES_IN:.in=}) # Subdirectories to install, and where they'll go. lib-src's and nt's # makefiles know how to install them, so we don't do that here. @@ -413,7 +413,7 @@ blessmail: Makefile src # etc. to be built without running into similar recursion problems. MAKEFILE_NAME = Makefile $(MAKEFILE_NAME): config.status $(srcdir)/src/config.in \ - $(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN) $(srcdir)/src/lisp.mk + $(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN) MAKE='$(MAKE)' ./config.status # Don't erase these files if make is interrupted while refreshing them. @@ -492,18 +492,17 @@ write_subdir=if [ -f "$${subdir}/subdirs.el" ]; \ install-arch-dep: src install-arch-indep install-etcdoc install-$(NTDIR) umask 022; ${MKDIR_P} "$(DESTDIR)${bindir}" $(MAKE) -C lib-src install - if test "${ns_self_contained}" = "no"; then \ - ${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} "$(DESTDIR)${bindir}/$(EMACSFULL)" || exit 1 ; \ - chmod 1755 "$(DESTDIR)${bindir}/$(EMACSFULL)" || true; \ - if test "x${NO_BIN_LINK}" = x; then \ - rm -f "$(DESTDIR)${bindir}/$(EMACS)" ; \ - cd "$(DESTDIR)${bindir}" && $(LN_S_FILEONLY) $(EMACSFULL) $(EMACS); \ - fi; \ - else \ - subdir=${ns_appresdir}/site-lisp; \ - ${write_subdir} || exit 1; \ - rm -rf ${ns_appresdir}/share; \ - fi +ifeq (${ns_self_contained},no) + ${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} "$(DESTDIR)${bindir}/$(EMACSFULL)" + -chmod 755 "$(DESTDIR)${bindir}/$(EMACSFULL)" +ifndef NO_BIN_LINK + rm -f "$(DESTDIR)${bindir}/$(EMACS)" + cd "$(DESTDIR)${bindir}" && $(LN_S_FILEONLY) $(EMACSFULL) $(EMACS) +endif +else + subdir=${ns_appresdir}/site-lisp && ${write_subdir} + rm -rf ${ns_appresdir}/share +endif ### Windows-specific install target for installing programs produced ### in nt/, and its Posix do-nothing shadow. @@ -831,7 +830,7 @@ clean_dirs = $(mostlyclean_dirs) nextstep $(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean))) clean: $(clean_dirs:=_clean) - for dir in test/automated; do \ + for dir in test/automated admin/charsets; do \ [ ! -d $$dir ] || $(MAKE) -C $$dir clean; \ done -rm -f *.tmp etc/*.tmp* @@ -856,8 +855,10 @@ distclean_dirs = $(clean_dirs) leim lisp $(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),distclean))) +maybeclean_dirs = test/automated admin/grammars admin/unidata admin/charsets + distclean: $(distclean_dirs:=_distclean) - for dir in test/automated admin/grammars admin/unidata; do \ + for dir in ${maybeclean_dirs}; do \ [ ! -d $$dir ] || $(MAKE) -C $$dir distclean; \ done ${top_distclean} @@ -868,7 +869,7 @@ distclean: $(distclean_dirs:=_distclean) $(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),bootstrap-clean))) bootstrap-clean: $(distclean_dirs:=_bootstrap-clean) - for dir in test/automated admin/grammars admin/unidata; do \ + for dir in ${maybeclean_dirs}; do \ [ ! -d $$dir ] || $(MAKE) -C $$dir bootstrap-clean; \ done [ ! -f config.log ] || mv -f config.log config.log~ @@ -896,7 +897,7 @@ maintainer_clean_dirs = src leim lisp $(foreach dir,$(maintainer_clean_dirs),$(eval $(call submake_template,$(dir),maintainer-clean))) maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean) - for dir in test/automated admin/grammars admin/unidata; do \ + for dir in ${maybeclean_dirs}; do \ [ ! -d $$dir ] || $(MAKE) -C $$dir maintainer-clean; \ done ${top_maintainer_clean} @@ -907,10 +908,12 @@ maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean) ### it deletes backup and autosave files too. ### Note that we abuse this in some subdirectories (eg leim), ### to delete some generated files that are slow to rebuild. -$(foreach dir,$(SUBDIR),$(eval $(call submake_template,$(dir),extraclean))) +extraclean_dirs = ${NTDIR} lib-src src leim \ + admin/charsets admin/grammars admin/unidata + +$(foreach dir,$(extraclean_dirs),$(eval $(call submake_template,$(dir),extraclean))) -## FIXME this is busted because most of these do not have extraclean rules. -extraclean: $(SUBDIR:=_extraclean) +extraclean: $(extraclean_dirs:=_extraclean) ${top_maintainer_clean} -rm -f config-tmp-* -rm -f *~ \#* @@ -1088,50 +1091,54 @@ 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 = 2c1b8604946efbcd8ec5dd6c6dda7541ce4fc3c0 - -# 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) +.PHONY: ChangeLog change-history change-history-commit change-history-nocommit +.PHONY: master-branch-is-current unchanged-history-files +CHANGELOG = ChangeLog +emacslog = build-aux/gitlog-to-emacslog # 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) +# Convert git commit log to ChangeLog file. make-dist uses this. +# I guess this is PHONY so it always updates? +ChangeLog: + $(AM_V_GEN)cd $(srcdir) && \ + ./$(emacslog) -o $(CHANGELOG) -n $(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) && \ + x=$$(git diff-files --name-only $(CHANGELOG_N) $(emacslog)) && \ test -z "$$x" +# Regular expression that matches the newest commit covered by a ChangeLog. +new_commit_regexp = ^commit [0123456789abcdef]* (inclusive) + # 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_N).tmp - new_origin=$$(git log --pretty=format:%H HEAD^!) && \ - sed 's/^\(gen_origin *= *\).*/\1'"$$new_origin/" \ - Makefile.in.tmp +change-history-nocommit: master-branch-is-current unchanged-history-files + -rm -f ChangeLog.tmp + $(MAKE) ChangeLog CHANGELOG=ChangeLog.tmp + sed '/^This file records repository revisions/,$$d' \ + ChangeLog.tmp >$(CHANGELOG_N).tmp + new_commit_line=`grep '$(new_commit_regexp)' ChangeLog.tmp` && \ + sed 's/$(new_commit_regexp).*/'"$$new_commit_line/" \ + $(CHANGELOG_N) >>$(CHANGELOG_N).tmp + rm ChangeLog.tmp mv $(CHANGELOG_N).tmp $(CHANGELOG_N) - mv Makefile.in.tmp Makefile.in + +change-history: change-history-nocommit $(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 + git commit -m'; make $@' $(CHANGELOG_N) $(emacslog) .PHONY: check-declare