From 9182df7e4810a411147d523de8cd141e749c5e39 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Wed, 22 Nov 2017 21:07:29 -0800 Subject: port elisp-compilation support to emacs-23.1 and newer In May of 2017, Emacs' support for using the long-deprecated byte-compile-dest-file function was removed, and that removal broke automake's elisp-compiling rule for any .el file not in the current directory. In emacs-23.1 (July 2009) byte-compile-dest-file-function became the recommended way to adjust the byte-compiler's destination. * lib/am/lisp.am (.el.elc): Use byte-compile-dest-file-function, rather than byte-compile-dest-file. * t/lisp-readonly-srcdir.sh: New file, to test for the above. * t/list-of-tests.mk (handwritten_TESTS): Add it. --- lib/am/lisp.am | 2 +- t/lisp-readonly-srcdir.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ t/list-of-tests.mk | 1 + 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 t/lisp-readonly-srcdir.sh diff --git a/lib/am/lisp.am b/lib/am/lisp.am index 8085e3f0d..7c67dd36c 100644 --- a/lib/am/lisp.am +++ b/lib/am/lisp.am @@ -41,7 +41,7 @@ endif %?INSTALL% $(EMACS) --batch \ $(AM_ELCFLAGS) $(ELCFLAGS) \ $$am__subdir_includes -L $(builddir) -L $(srcdir) \ - --eval "(defun byte-compile-dest-file (f) \"$@\")" \ + --eval "(setq byte-compile-dest-file-function (lambda (_) \"$@\"))" \ --eval "(unless (byte-compile-file \"$<\") (kill-emacs 1))"; \ else :; fi diff --git a/t/lisp-readonly-srcdir.sh b/t/lisp-readonly-srcdir.sh new file mode 100644 index 000000000..38b866404 --- /dev/null +++ b/t/lisp-readonly-srcdir.sh @@ -0,0 +1,46 @@ +#! /bin/sh +# Copyright (C) 2017 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Ensure that building elisp from a read-only srcdir works. + +required=emacs +. test-init.sh + +cat > Makefile.am << 'EOF' +lisp_LISP = am-one.el +EOF + +cat >> configure.ac << 'EOF' +AM_PATH_LISPDIR +AC_OUTPUT +EOF + +echo > am-one.el + +$ACLOCAL +$AUTOCONF +$AUTOMAKE --add-missing + +mkdir sub +chmod a=rx . + +cd sub +../configure +$MAKE + +test -f am-one.elc + +: diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index 83e69659e..576e0866f 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -655,6 +655,7 @@ t/lisp5.sh \ t/lisp6.sh \ t/lisp7.sh \ t/lisp8.sh \ +t/lisp-readonly-srcdir.sh \ t/lisp-loadpath.sh \ t/lisp-subdir.sh \ t/lisp-subdir2.sh \ -- cgit v1.2.1