(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
2014-10-07 Glenn Morris <rgm@gnu.org>
+ * 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.
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.
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`; \
${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:
+2014-10-07 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in ($(srcdir)/macuvs.h)
+ ($(lispsource)/international/charprop.el): Add explicit FORCE.
+
2014-10-07 Eli Zaretskii <eliz@gnu.org>
* decompress.c (init_zlib_functions): Move the message about zlib
$(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