X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/86a5659e6c48c4bd3213cbc626fb3ac6176c2793..5a79ed267fcac373f138aaefd3f6fef6231a7424:/build-ins.in diff --git a/build-ins.in b/build-ins.in dissimilarity index 94% index fe09dabd0b..acca27689c 100755 --- a/build-ins.in +++ b/build-ins.in @@ -1,64 +1,136 @@ -#!/bin/csh -fx -# -#Shell script for building and installing Emacs. - -# 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 -set LIBROOT=/u/emacs - -# 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. -set LISPPATH=/u/emacs/lisp - -# Emacs will look here for its architecture-independent files (like -# the tutorial and the zippy database). -set DATADIR=/u/emacs/share-lib - -# Emacs will look here for its architecture-dependent files, like -# executables for its utilities. -set LIBDIR=/u/emacs/arch-lib - -# The locking directory, where the Emacs locking code keeps track of -# which files are currently being edited. -# set LOCKDIR=${LIBROOT}/lock -set LOCKDIR=/u/emacs/lock - -# This is where build-install should place the binaries people will -# want to run directly (like etags and Emacs itself). -set BINDIR=/usr/local/bin - -/bin/sed < src/paths.h-dist > src/paths.h \ --e 's;/usr/local/emacs;'${LIBDIR}';g' \ --e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'${LISPPATH}'";' \ --e 's;\(#.*PATH_EXEC\).*$$;\1 "'${LIBDIR}'";' \ --e 's;\(#.*PATH_DATA\).*$$;\1 "'${DATADIR}'";' \ --e 's;\(#.*LOCK\).*$$;\1 "'${LOCKDIR}'/";' - -exit 1 - -(cd lib-src; make) || exit 1 -(cd src; make) || exit 1 - -if (`pwd` != `(cd ${LIBROOT}; pwd)`) then - mv `pwd` ${LIBROOT} - if ($status) then - mkdir ${LIBROOT} - echo mv `pwd` to ${LIBROOT} failed--using tar to copy. - tar cf - . | (cd ${LIBROOT}; umask 0; tar xf -) - if ($status) then - echo tar-copying `pwd` to ${LIBROOT} failed. - exit 1 - endif - endif -endif - -cp ${LIBROOT}/etc/{ctags,etags} ${BINDIR} -mv ${LIBROOT}/src/xemacs ${BINDIR}/emacs -rm ${LIBROOT}/src/temacs -chmod 777 ${BINDIR}/{ctags,etags,emacs} +#!/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