From: Glenn Morris Date: Tue, 7 Oct 2014 20:17:09 +0000 (-0400) Subject: * admin/unidata/Makefile.in: Check for deleted uni- files. X-Git-Tag: emacs-25.0.90~2635^2~679^2~100 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=23755ba32b9baeff4173e317624ceb89fc274468;p=emacs.git * admin/unidata/Makefile.in: Check for deleted uni- files. (all): Use unifiles rather than charprop.el. (FORCE): New variable and phony rule. (${unidir}/charprop.el): Respect FORCE. (unifiles): New rule. * src/Makefile.in ($(srcdir)/macuvs.h) ($(lispsource)/international/charprop.el): Add explicit FORCE. Fixes: debbugs:18489 --- diff --git a/admin/ChangeLog b/admin/ChangeLog index 224ed5e6149..742a64ce15d 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,5 +1,11 @@ 2014-10-07 Glenn Morris + * unidata/Makefile.in: Check for deleted uni- files. (Bug#18489) + (all): Use unifiles rather than charprop.el. + (FORCE): New variable and phony rule. + (${unidir}/charprop.el): Respect FORCE. + (unifiles): New rule. + * unidata/Makefile.in (unidir): Rename from DSTDIR. Change all uses. (charprop.el, install): Remove rules. (clean): Simplify. diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in index f1b8ba2bd13..4649b3b339d 100644 --- a/admin/unidata/Makefile.in +++ b/admin/unidata/Makefile.in @@ -31,9 +31,9 @@ EMACS = ${top_builddir}/src/emacs unidir = ${top_srcdir}/lisp/international emacs = "${EMACS}" -batch --no-site-file --no-site-lisp -.PHONY: all +.PHONY: all unifiles -all: ${top_srcdir}/src/macuvs.h ${unidir}/charprop.el +all: ${top_srcdir}/src/macuvs.h unifiles ## Specify .elc as an order-only prereq so as to not needlessly rebuild ## target just because the .elc is missing. @@ -50,7 +50,11 @@ ${top_srcdir}/src/macuvs.h: ${srcdir}/uvs.el ${srcdir}/IVD_Sequences.txt | \ unidata.txt: ${srcdir}/UnicodeData.txt sed -e 's/\([^;]*\);\(.*\)/(#x\1 "\2")/' -e 's/;/" "/g' < $< > $@ -${unidir}/charprop.el: ${srcdir}/unidata-gen.el ${srcdir}/UnicodeData.txt | \ +FORCE = +FORCE: +.PHONY: FORCE + +${unidir}/charprop.el: ${FORCE} ${srcdir}/unidata-gen.el ${srcdir}/UnicodeData.txt | \ ${srcdir}/unidata-gen.elc unidata.txt -if [ -f "$@" ]; then \ cd ${unidir} && chmod +w charprop.el `sed -n 's/^;; FILE: //p' < charprop.el`; \ @@ -58,6 +62,15 @@ ${unidir}/charprop.el: ${srcdir}/unidata-gen.el ${srcdir}/UnicodeData.txt | \ ${emacs} -L ${srcdir} -l unidata-gen -f unidata-gen-files \ ${srcdir} "${unidir}" +## Check for deleted uni- files, and if any such, force a rebuild. +## Perhaps a more elegant way would be for the previous rule +## to generate a Makefile fragment explicitly listing the uni- files, +## which this file could include. If no fragment, rebuild everything. +unifiles: ${unidir}/charprop.el + for f in `sed -n 's/^;; FILE: //p' < $<`; do \ + [ -f ${unidir}/$$f ] || { ${MAKE} $< FORCE=FORCE || exit 1; break; };\ + done + .PHONY: clean bootstrap-clean distclean maintainer-clean extraclean clean: diff --git a/src/ChangeLog b/src/ChangeLog index 7a6b38f3b90..1b77d1c9aa1 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2014-10-07 Glenn Morris + + * Makefile.in ($(srcdir)/macuvs.h) + ($(lispsource)/international/charprop.el): Add explicit FORCE. + 2014-10-07 Eli Zaretskii * decompress.c (init_zlib_functions): Move the message about zlib diff --git a/src/Makefile.in b/src/Makefile.in index dfa5854489b..dffb77e7338 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -437,8 +437,12 @@ all: emacs$(EXEEXT) $(OTHER_FILES) $(leimdir)/leim-list.el: bootstrap-emacs$(EXEEXT) $(MAKE) -C ../leim leim-list.el EMACS="$(bootstrap_exe)" +## FORCE it so that admin/unidata can decide whether these files +## are up-to-date. Although since charprop depends on bootstrap-emacs, +## and emacs (which recreates bootstrap-emacs) depends on charprop, +## in practice this rule was always run anyway. $(srcdir)/macuvs.h $(lispsource)/international/charprop.el: \ - bootstrap-emacs$(EXEEXT) + bootstrap-emacs$(EXEEXT) FORCE $(MAKE) -C ../admin/unidata all EMACS="../$(bootstrap_exe)" ## The dumped Emacs is as functional and more efficient than