Update file comments.
[bpt/emacs.git] / build-ins.in
CommitLineData
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.
12prefix=/usr/local
13
14# Where to install Emacs and other binaries that people will want to
15# run directly (like etags).
16bindir=${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 21emacsdir=${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
25datadir=${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
31lispdir=${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.
36locallisppath=${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.
42lisppath=${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.
51dumplisppath=../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.
56statedir=${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.
60lockdir=${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.
65libdir=${emacsdir}/arch-lib
66
67# Where to install Emacs's man pages.
68mandir=/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.
74infodir=${prefix}/info
75
4746118a
JB
76removenullpaths="sed -e 's/^://' -e 's/:"'$'"//' -e 's/::/:/'"
77
78lisppath=`echo ${lisppath} | ${removenullpaths}` ; \
79dumplisppath=`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.
91copydir=arch-lib etc info lisp
92copydests=${libdir} ${datadir} ${infodir} ${lispdir}
93
94# If any of the directories are below ${emacsdir} or ${statedir}, create them.
95for dir in ${copydests}; do
96 case "${dir}" in
97 ${emacsdir}/* )
98 if [ ! -d ${emacsdir} ]; then
62521951
RS
99 mkdir ${emacsdir}
100 chmod 777 ${emacsdir}
46947372
JB
101 fi
102 ;;
103 ${statedir}/* )
104 if [ ! -d ${statedir} ]; then
62521951
RS
105 mkdir ${statedir}
106 chmod 777 ${statedir}
46947372
JB
107 fi
108 ;;
109 esac
110done
111
112set ${copydests}
113for 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 131done
86a5659e 132
46947372 133cp ${libdir}/[ce]tags ${bindir}
805f7117 134mv src/emacs ${BINDIR}/emacs
46947372
JB
135rm src/temacs
136chmod 777 ${bindir}/[ce]tags ${bindir}/emacs