Commit | Line | Data |
---|---|---|
f8026fd8 | 1 | #!/bin/sh -x |
86a5659e JB |
2 | # |
3 | #Shell script for building and installing Emacs. | |
4 | ||
46947372 JB |
5 | # ==================== Where To Install Things ==================== |
6 | ||
7 | # The default location for installation. Everything is placed in | |
8 | # subdirectories of this directory. This directory must exist when | |
9 | # you start installation. The default values for many of the | |
10 | # variables below are expressed in terms of this one, so you may not | |
11 | # need to change them. | |
12 | prefix=/usr/local | |
13 | ||
14 | # Where to install Emacs and other binaries that people will want to | |
15 | # run directly (like etags). | |
16 | bindir=${prefix}/bin | |
17 | ||
18 | # A directory under which we will install many of Emacs's files. The | |
19 | # default values for many of the variables below are expressed in | |
20 | # terms of this one, so you may not need to change them. | |
4746118a | 21 | emacsdir=${prefix}/emacs-19.0 |
46947372 JB |
22 | |
23 | # Where to install and expect the architecture-independent data files | |
4746118a | 24 | # (like the tutorial and the Zippy database). |
46947372 JB |
25 | datadir=${emacsdir}/etc |
26 | ||
4746118a JB |
27 | # Where to install the elisp files distributed with Emacs. Strictly |
28 | # speaking, all the elisp files should go under datadir (above), since | |
29 | # both elisp source and compiled elisp are completely portable, but | |
30 | # it's traditional to give the lisp files their own subdirectory. | |
46947372 JB |
31 | lispdir=${emacsdir}/lisp |
32 | ||
4746118a JB |
33 | # Directories Emacs should search for elisp files specific to this |
34 | # site (i.e. customizations), before consulting ${lispdir}. This | |
35 | # should be a colon-separated list of directories. | |
36 | locallisppath=${emacsdir}/local-lisp | |
37 | ||
38 | # Where Emacs will search to find its elisp files. Before changing | |
39 | # this, check to see if your purpose wouldn't better be served by | |
40 | # changing locallisppath. This should be a colon-separated list of | |
41 | # directories. | |
42 | lisppath=${locallisppath}:${lispdir} | |
43 | ||
44 | # Where Emacs will search for its elisp files before dumping. This is | |
45 | # only used during the process of compiling Emacs, to help Emacs find | |
46 | # its lisp files before they've been installed in their final | |
47 | # location. It's usually identical to lisppath, except that the entry | |
48 | # for the directory containing the installed lisp files has been | |
49 | # replaced with ../lisp. This should be a colon-separated list of | |
50 | # directories. | |
51 | dumplisppath=../lisp | |
46947372 JB |
52 | |
53 | # Where to install and expect the files that Emacs modifies as it | |
54 | # runs. These files are all architecture-independent. Right now, | |
55 | # the only such data is the locking directory. | |
56 | statedir=${emacsdir} | |
57 | ||
58 | # Where to create and expect the locking directory, where the Emacs | |
59 | # locking code keeps track of which files are currently being edited. | |
60 | lockdir=${statedir}/lock | |
61 | ||
62 | # Where to install and expect executable files to be run by Emacs | |
63 | # rather than directly by users, and other architecture-dependent | |
64 | # data. | |
65 | libdir=${emacsdir}/arch-lib | |
66 | ||
67 | # Where to install Emacs's man pages. | |
68 | mandir=/usr/man/man1 | |
69 | ||
70 | # Where to install and expect the info files describing Emacs. In the | |
71 | # past, this defaulted to a subdirectory of ${prefix}/lib/emacs, but | |
72 | # since there are now many packages documented with the texinfo | |
73 | # system, it is inappropriate to imply that it is part of Emacs. | |
74 | infodir=${prefix}/info | |
75 | ||
4746118a JB |
76 | removenullpaths="sed -e 's/^://' -e 's/:"'$'"//' -e 's/::/:/'" |
77 | ||
78 | lisppath=`echo ${lisppath} | ${removenullpaths}` ; \ | |
79 | dumplisppath=`echo ${dumplisppath} | ${removenullpaths}` ; \ | |
80 | /bin/sed < src/paths.h.in > src/paths.h \ | |
81 | -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";' \ | |
82 | -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${dumplisppath}'";' \ | |
83 | -e 's;\(#.*PATH_EXEC\).*$$;\1 "${libdir}";' \ | |
84 | -e 's;\(#.*PATH_DATA\).*$$;\1 "${datadir}";' \ | |
784e43dd | 85 | -e 's;\(#.*PATH_LOCK\).*$$;\1 "${lockdir}/";' |
86a5659e JB |
86 | |
87 | (cd lib-src; make) || exit 1 | |
88 | (cd src; make) || exit 1 | |
89 | ||
46947372 JB |
90 | # Subdirectories to install, and where they'll go. |
91 | copydir=arch-lib etc info lisp | |
92 | copydests=${libdir} ${datadir} ${infodir} ${lispdir} | |
93 | ||
94 | # If any of the directories are below ${emacsdir} or ${statedir}, create them. | |
95 | for dir in ${copydests}; do | |
96 | case "${dir}" in | |
97 | ${emacsdir}/* ) | |
98 | if [ ! -d ${emacsdir} ]; then | |
99 | -mkdir ${emacsdir} | |
100 | -chmod 777 ${emacsdir} | |
101 | fi | |
102 | ;; | |
103 | ${statedir}/* ) | |
104 | if [ ! -d ${statedir} ]; then | |
105 | -mkdir ${statedir} | |
106 | -chmod 777 ${statedir} | |
107 | fi | |
108 | ;; | |
109 | esac | |
110 | done | |
111 | ||
112 | set ${copydests} | |
113 | for dir in ${copydir} ; do | |
114 | dest=$1 ; shift | |
115 | mv ${dir} ${dest} | |
116 | if [ $? != 0 ]; then | |
117 | echo mv ${dir} to ${dest} failed -- using tar to copy. | |
118 | if [ `/bin/pwd`/${dir} != `(cd ${dest}; /bin/pwd)` ] ; then | |
119 | (cd ${dir}; tar cf - . ) | (cd ${dest}; umask 0; tar xf - ) | |
120 | if [ $? != 0 ]; then | |
121 | echo "tar-copying ${dir} to ${dest} failed too. I give up." | |
122 | exit 1 | |
123 | fi | |
124 | for subdir in `find ${dest} -type d ! -name RCS -print` ; do | |
125 | rm -rf ${subdir}/RCS | |
126 | rm -f ${subdir}/\#* | |
127 | rm -f ${subdir}/*~ | |
128 | done | |
f8026fd8 JB |
129 | fi |
130 | fi | |
46947372 | 131 | done |
86a5659e | 132 | |
46947372 | 133 | cp ${libdir}/[ce]tags ${bindir} |
805f7117 | 134 | mv src/emacs ${BINDIR}/emacs |
46947372 JB |
135 | rm src/temacs |
136 | chmod 777 ${bindir}/[ce]tags ${bindir}/emacs |