1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-30 08:09:04 +00:00
emacs/build-ins.in
1994-05-18 22:42:41 +00:00

137 lines
4.7 KiB
Bash
Executable File

#!/bin/sh -x
#
#Shell script for building and installing Emacs.
# ==================== Where To Install Things ====================
# The default location for installation. Everything is placed in
# subdirectories of this directory. This directory must exist when
# you start installation. The default values for many of the
# variables below are expressed in terms of this one, so you may not
# need to change them.
prefix=/usr/local
# Where to install Emacs and other binaries that people will want to
# run directly (like etags).
bindir=${prefix}/bin
# A directory under which we will install many of Emacs's files. The
# default values for many of the variables below are expressed in
# terms of this one, so you may not need to change them.
emacsdir=${prefix}/emacs-19.0
# Where to install and expect the architecture-independent data files
# (like the tutorial and the Zippy database).
datadir=${emacsdir}/etc
# Where to install the elisp files distributed with Emacs. Strictly
# speaking, all the elisp files should go under datadir (above), since
# both elisp source and compiled elisp are completely portable, but
# it's traditional to give the lisp files their own subdirectory.
lispdir=${emacsdir}/lisp
# Directories Emacs should search for elisp files specific to this
# site (i.e. customizations), before consulting ${lispdir}. This
# should be a colon-separated list of directories.
locallisppath=${emacsdir}/local-lisp
# Where Emacs will search to find its elisp files. Before changing
# this, check to see if your purpose wouldn't better be served by
# changing locallisppath. This should be a colon-separated list of
# directories.
lisppath=${locallisppath}:${lispdir}
# Where Emacs will search for its elisp files before dumping. This is
# only used during the process of compiling Emacs, to help Emacs find
# its lisp files before they've been installed in their final
# location. It's usually identical to lisppath, except that the entry
# for the directory containing the installed lisp files has been
# replaced with ../lisp. This should be a colon-separated list of
# directories.
dumplisppath=../lisp
# Where to install and expect the files that Emacs modifies as it
# runs. These files are all architecture-independent. Right now,
# the only such data is the locking directory.
statedir=${emacsdir}
# Where to create and expect the locking directory, where the Emacs
# locking code keeps track of which files are currently being edited.
lockdir=${statedir}/lock
# Where to install and expect executable files to be run by Emacs
# rather than directly by users, and other architecture-dependent
# data.
libdir=${emacsdir}/arch-lib
# Where to install Emacs's man pages.
mandir=/usr/man/man1
# Where to install and expect the info files describing Emacs. In the
# past, this defaulted to a subdirectory of ${prefix}/lib/emacs, but
# since there are now many packages documented with the texinfo
# system, it is inappropriate to imply that it is part of Emacs.
infodir=${prefix}/info
removenullpaths="sed -e 's/^://' -e 's/:"'$'"//' -e 's/::/:/'"
lisppath=`echo ${lisppath} | ${removenullpaths}` ; \
dumplisppath=`echo ${dumplisppath} | ${removenullpaths}` ; \
/bin/sed < src/paths.h.in > src/paths.h \
-e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";' \
-e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${dumplisppath}'";' \
-e 's;\(#.*PATH_EXEC\).*$$;\1 "${libdir}";' \
-e 's;\(#.*PATH_DATA\).*$$;\1 "${datadir}";' \
-e 's;\(#.*PATH_LOCK\).*$$;\1 "${lockdir}/";'
(cd lib-src; make) || exit 1
(cd src; make) || exit 1
# Subdirectories to install, and where they'll go.
copydir=arch-lib etc info lisp
copydests=${libdir} ${datadir} ${infodir} ${lispdir}
# If any of the directories are below ${emacsdir} or ${statedir}, create them.
for dir in ${copydests}; do
case "${dir}" in
${emacsdir}/* )
if [ ! -d ${emacsdir} ]; then
mkdir ${emacsdir}
chmod 777 ${emacsdir}
fi
;;
${statedir}/* )
if [ ! -d ${statedir} ]; then
mkdir ${statedir}
chmod 777 ${statedir}
fi
;;
esac
done
set ${copydests}
for dir in ${copydir} ; do
dest=$1 ; shift
mv ${dir} ${dest}
if [ $? != 0 ]; then
echo mv ${dir} to ${dest} failed -- using tar to copy.
if [ `/bin/pwd`/${dir} != `(cd ${dest}; /bin/pwd)` ] ; then
(cd ${dir}; tar cf - . ) | (cd ${dest}; umask 0; tar xf - )
if [ $? != 0 ]; then
echo "tar-copying ${dir} to ${dest} failed too. I give up."
exit 1
fi
for subdir in `find ${dest} -type d ! -name RCS -print` ; do
rm -rf ${subdir}/RCS
rm -f ${subdir}/\#*
rm -f ${subdir}/*~
done
fi
fi
done
cp ${libdir}/[ce]tags ${bindir}
mv src/emacs ${BINDIR}/emacs
rm src/temacs
chmod 777 ${bindir}/[ce]tags ${bindir}/emacs