summaryrefslogtreecommitdiff
path: root/build-aux/elisp-comp
blob: 7766db46be2f8f64558f59a25f9b904fed11a11f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/sh
# Copyright (C) 1995-2012 Free Software Foundation, Inc.

scriptversion=2010-02-06.18; # UTC

# Franc,ois Pinard <pinard@iro.umontreal.ca>, 1995.
#
# 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 <http://www.gnu.org/licenses/>.

# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.

# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.

case $1 in
  '')
     echo "$0: No files.  Try '$0 --help' for more information." 1>&2
     exit 1;
     ;;
  -h | --h*)
    cat <<\EOF
Usage: elisp-comp [--help] [--version] FILES...

This script byte-compiles all '.el' files listed as FILES using GNU
Emacs, and put the resulting '.elc' files into the current directory,
so disregarding the original directories used in '.el' arguments.

This script manages in such a way that all Emacs LISP files to
be compiled are made visible between themselves, in the event
they require or load-library one another.

Report bugs to <bug-automake@gnu.org>.
EOF
    exit $?
    ;;
  -v | --v*)
    echo "elisp-comp $scriptversion"
    exit $?
    ;;
esac

if test -z "$EMACS" || test "$EMACS" = "t"; then
  # Value of "t" means we are running in a shell under Emacs.
  # Just assume Emacs is called "emacs".
  EMACS=emacs
fi

tempdir=elc.$$

# Cleanup the temporary directory on exit.
trap 'ret=$?; rm -rf "$tempdir" && exit $ret' 0
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15

mkdir $tempdir
cp "$@" $tempdir

(
  cd $tempdir
  echo "(setq load-path (cons nil load-path))" > script
  $EMACS -batch -q -l script -f batch-byte-compile *.el || exit $?
  mv *.elc ..
) || exit $?

(exit 0); exit 0

# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End: