view build-ins.in @ 620:88a29c720fa7

entered into RCS
author Jim Blandy <jimb@redhat.com>
date Fri, 24 Apr 1992 08:11:28 +0000
parents cde1f15848c6
children eca8812e61cd
line wrap: on
line source

#!/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}/lib/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.
lispdir=${emacsdir}/lisp

# Where Emacs will search to find its elisp files.  This should be a
# colon-separated list of directories.	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.
lisppath=${emacsdir}/local-lisp:${lispdir}

# 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

scum


# Where to install all of Emacs's data files - the lisp code,
# documentation tree, and the architecture-dependent and -independent
# libaries.  The default definitions for the variables below are
# expressed in terms of this one, so you may not need to change them.
# set LIBROOT=/usr/local/lib/emacs-19.0
emacsdir=/u/src/emacs/19.0

# Emacs will search this path to find its elisp files.  This should be
# a colon-separated list of directories.  Strictly speaking, all the
# elisp files should go under DATADIR (below), since both elisp source
# and compiled elisp are completely portable, but it's traditional to
# give the lisp files their own subdirectory.
LISPPATH=/u/src/emacs/19.0/local-lisp:/u/src/emacs/19.0/lisp

# Emacs will look here for its architecture-independent files (like
# the tutorial and the zippy database).
DATADIR=/u/src/emacs/19.0/etc

# Emacs will look here for its architecture-dependent files, like
# executables for its utilities.
LIBDIR=/u/src/emacs/19.0/arch-lib

# The locking directory, where the Emacs locking code keeps track of
# which files are currently being edited.
# set LOCKDIR=${LIBROOT}/lock
LOCKDIR=/u/src/emacs/19.0/lock

# This is where build-install should place the binaries people will
# want to run directly (like etags and Emacs itself).
BINDIR=/usr/local/bin

/bin/sed < src/paths.h.in > src/paths.h			\
-e 's;\(#.*PATH_LOADSEARCH\).*$;\1 "${lisppath}";'		\
-e 's;\(#.*PATH_EXEC\).*$;\1 "${libdir}";'			\
-e 's;\(#.*PATH_DATA\).*$;\1 "${datadir}";'			\
-e 's;\(#.*PATH_LOCK\).*$;\1 "${lockdir}/";'			\
-e 's;\(#.*PATH_SUPERLOCK\).*$;\1 "${lockdir}/!!!SuperLock!!!";'

(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