summaryrefslogtreecommitdiff
path: root/build-ins.in
blob: d23a1b28e805ddbaf2e549db36020c04c1a7ffb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/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