home *** CD-ROM | disk | FTP | other *** search
- #!/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/xemacs ${BINDIR}/emacs
- rm src/temacs
- chmod 777 ${bindir}/[ce]tags ${bindir}/emacs
-