#!/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};docase"${dir}" in
${emacsdir}/* )if[ ! -d ${emacsdir}];then mkdir ${emacsdir} chmod 777${emacsdir}fi;;${statedir}/* )if[ ! -d ${statedir}];then mkdir ${statedir} chmod 777${statedir}fi;;esacdoneset${copydests}for dir in ${copydir};dodest=$1;shiftmv ${dir}${dest}if[$? !=0];thenecho 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];thenecho"tar-copying ${dir} to ${dest} failed too. I give up."exit 1
fifor subdir in `find ${dest} -type d ! -name RCS -print`;do rm -rf ${subdir}/RCS
rm -f ${subdir}/\#*
rm -f ${subdir}/*~
donefifidonecp ${libdir}/[ce]tags ${bindir}mv src/emacs ${BINDIR}/emacs
rm src/temacs
chmod 777${bindir}/[ce]tags ${bindir}/emacs