comparison Makefile.in @ 1686:10650dfc82d0

* Makefile.in (install, install.sysv, install.xenix, install.aix): Install the info files in ${infodir}. Install the executable under both `emacs' and `emacs-VERSION'. * Makefile.in: Doc fix. * Makefile.in (exec_prefix): New variable, as per latest version of coding standards. (bindir, libdir): Use it, instead of `prefix'. (lib-src/Makefile): Edit value of exec_prefix into lib-src/Makefile. * Makefile.in (mandir): Make the default value for this depend on $(prefix). * Makefile.in (datadir, statedir, libdir): Make these all default to ${prefix}/lib. (lispdir, locallisppath, etcdir, lockdir, archlibdir): Adjusted to compensate. * Makefile.in (install, install.sysv, install.xenix, install.aix): Install the etags and ctags man pages too. * Makefile.in (distclean): Don't delete backup files; that's the job of extraclean. (extraclean): Like distclean, but deletes backup and autosave files. Make path specification conform to GNU coding standards. * configure (long_usage): Remove all traces of old arguments from usage messages, and document the options we do accept in more detail: -with-x... and --srcdir. (options, boolean_opts): Deleted; we don't have enough options to make this worthwhile. (prefix, bindir, lisppath, datadir, libdir, lockdir): Deleted, along with the code which supported them; these should be set as arguments to the top-level make. (config_h_opts): Since this no longer doubles as a list of option names, make them upper case; this simplifies the code which uses them to build the sed command to edit src/config.h. Change the code which sets them. (cc, g, O): Don't allow the user to set these using options; they should be specified using `CC=' and `CFLAGS=' arguments to the top-level make. Just choose reasonable default values for them, and edit them into Makefile.in's default CC and CONFIG_CFLAGS values. (gnu_malloc, rel_alloc): Don't allow the user to set these using options; use them whenever the configuration files say they're possible. Simplify the argument processing loop. Don't accept abbreviations for option names; these might conflict with other configuration options in the future. Add some support for the `--srcdir' option. Check for the sources in . and .. if `--srcdir' is omitted. If the directories we will compile in don't exist yet, create them under the current directory. Note that the rest of the build process doesn't really support this. Edit only the top Makefile. That should edit the others. Edit into the makefile: `version', from lisp/version.el, `configname' and `srcdir' from the configuration arguments, `CC' and `CONFIG_CFLAGS' as guessed from the presence or absence of GCC in the user's path, and LOADLIBES as gleaned from the system description files. Simplify the report generated; it doesn't need to include any description of paths now. Make `config.status' exec configure instead of just calling it, so there's no harm in overwriting `config.status'. * Makefile.in (version, configname): New variables, used to choose the default values for datadir and libdir. Path variables rearranged into two clearer groups: - In the first group are the variables specified by the GNU coding standards (prefix, bindir, datadir, statedir, libdir, mandir, manext, infodir, and srcdir). - In the second are the variables actually used for Emacs's paths (lispdir, locallisppath, lisppath, buildlisppath, etcdir, lockdir, archlibdir), which depend on the first category. datadir and libdir default to directories under ${prefix}/lib/emacs instead of ${prefix}/emacs, by popular demand. etcdir and lispdir default to subdirectories of datadir. archlibdir defaults to libdir. The new installation tree is a bit deeper than it used to be, so use the new make-path program in lib-src to build them all. Always build a new src/paths.h.tmp and then move-if-change it to src/paths.h, to avoid unnecessary rebuilds while responding to the right changes. Remove all mention of arch-lib. Run utility commands from lib-src, and let the executables be copied into archlibdir when Emacs is installed. Add targets for src/Makefile, lib-src/Makefile, and oldXMenu/Makefile, editing the values of the path variables into them. Let lib-src do its own installation. (datadir): Default to putting data files under ${prefix}/lib/emacs/${version}, not /usr/local/emacs. (emacsdir): Variable deleted; it would only be confusing to use. (lispdir, etcdir): Default to ${datadir}/lisp. (mkdir): Use make-path for this. (lockdir): Do this in mkdir. (Makefile): New target.
author Jim Blandy <jimb@redhat.com>
date Sat, 12 Dec 1992 15:42:14 +0000
parents bd3afc204773
children e0acfb7b804d
comparison
equal deleted inserted replaced
1685:8d7fc70d3103 1686:10650dfc82d0
6 # make install to install it. 6 # make install to install it.
7 # make install.sysv to install on system V. Note that on system V you 7 # make install.sysv to install on system V. Note that on system V you
8 # must change mandir to /usr/local/man/man1. 8 # must change mandir to /usr/local/man/man1.
9 # make install.xenix to install on Xenix. 9 # make install.xenix to install on Xenix.
10 # make install.aix to install on AIX. 10 # make install.aix to install on AIX.
11 # make tags to update tags tables. 11 # make TAGS to update tags tables.
12 # 12 #
13 # make distclean to delete everything that wasn't in the distribution. 13 # make clean or make mostlyclean
14 # This is a very dangerous thing to do! It removes backup files, 14 # Delete all files from the current directory that are normally
15 # among other things. 15 # created by building the program. Don't delete the files that
16 # make clean 16 # record the configuration. Also preserve files that could be made
17 # This is a little less dangerous. 17 # by building, but normally aren't because the distribution comes
18 # make dist 18 # with them.
19 # This produces a tar file from the current source tree suitable 19 #
20 # for redistribution. 20 # Delete `.dvi' files here if they are not part of the distribution.
21 #
22 # make distclean
23 # Delete all files from the current directory that are created by
24 # configuring or building the program. If you have unpacked the
25 # source and built the program without creating any other files,
26 # `make distclean' should leave only the files that were in the
27 # distribution.
28 #
29 # make realclean
30 # Delete everything from the current directory that can be
31 # reconstructed with this Makefile. This typically includes
32 # everything deleted by distclean, plus more: C source files
33 # produced by Bison, tags tables, info files, and so on.
34 #
35 # make extraclean
36 # Still more severe - delete backup and autosave files, too.
21 37
22 SHELL = /bin/sh 38 SHELL = /bin/sh
23 39
40 # ==================== Things `configure' Might Edit ====================
41
42 CC=cc
43 CONFIG_CFLAGS=-g
44
45 ### These help us choose version- and architecture-specific directories
46 ### to install files in.
47
48 ### This should be the number of the Emacs version we're building,
49 ### like `18.59' or `19.0'.
50 version=version-not-set
51
52 ### This should be the name of the configuration we're building Emacs
53 ### for, like `mips-dec-ultrix' or `sparc-sun-sunos'.
54 configname=configuration-name-not-set
55
24 # ==================== Where To Install Things ==================== 56 # ==================== Where To Install Things ====================
25 57
26 version=version-not-set
27 configname=configuration-name-not-set
28
29 # The default location for installation. Everything is placed in 58 # The default location for installation. Everything is placed in
30 # subdirectories of this directory. This directory must exist when 59 # subdirectories of this directory. The default values for many of
31 # you start installation. The default values for many of the 60 # the variables below are expressed in terms of this one, so you may
32 # variables below are expressed in terms of this one, so you may not 61 # not need to change them.
33 # need to change them.
34 prefix=/usr/local 62 prefix=/usr/local
63
64 # Like `prefix', but used for architecture-specific files.
65 exec_prefix=${prefix}
35 66
36 # Where to install Emacs and other binaries that people will want to 67 # Where to install Emacs and other binaries that people will want to
37 # run directly (like etags). 68 # run directly (like etags).
38 bindir=${prefix}/bin 69 bindir=${exec_prefix}/bin
39 70
40 # Where to install architecture-independent data files. ${lispdir} 71 # Where to install architecture-independent data files. ${lispdir}
41 # and ${etcdir} are below this. 72 # and ${etcdir} are subdirectories of this.
42 datadir=${prefix}/lib/emacs/${version} 73 datadir=${prefix}/lib
43 74
44 # Where to install and expect the files that Emacs modifies as it 75 # Where to install and expect the files that Emacs modifies as it
45 # runs. These files are all architecture-independent. Right now, 76 # runs. These files are all architecture-independent. Right now, the
46 # the only such data is the locking directory. 77 # only such data is the locking directory; ${lockdir} is a
47 statedir=${prefix}/lib/emacs 78 # subdirectory of this.
79 statedir=${prefix}/lib
48 80
49 # Where to install and expect executable files to be run by Emacs 81 # Where to install and expect executable files to be run by Emacs
50 # rather than directly by users, and other architecture-dependent 82 # rather than directly by users, and other architecture-dependent
51 # data. 83 # data. ${archlibdir} is a subdirectory of this.
52 libdir=${prefix}/${version}/${configname} 84 libdir=${exec_prefix}/lib
53 85
54 # Where to install Emacs's man pages, and what extension they should have. 86 # Where to install Emacs's man pages, and what extension they should have.
55 mandir=/usr/man/man1 87 mandir=${prefix}/man/man1
56 manext=.1 88 manext=.1
57 89
58 # Where to install and expect the info files describing Emacs. In the 90 # Where to install and expect the info files describing Emacs. In the
59 # past, this defaulted to a subdirectory of ${prefix}/lib/emacs, but 91 # past, this defaulted to a subdirectory of ${prefix}/lib/emacs, but
60 # since there are now many packages documented with the texinfo 92 # since there are now many packages documented with the texinfo
61 # system, it is inappropriate to imply that it is part of Emacs. 93 # system, it is inappropriate to imply that it is part of Emacs.
62 infodir=${prefix}/info 94 infodir=${prefix}/info
63 95
64 # Where to find the source code. The source code for Emacs's C kernel 96 # Where to find the source code - setting this to anything but
65 # is expected to be in ${srcdir}/src, and the source code for Emacs's 97 # . doesn't work yet. The source code for Emacs's C kernel is
66 # utility programs is expected to be in ${srcdir}/lib-src. 98 # expected to be in ${srcdir}/src, and the source code for Emacs's
67 # This is set by the configure script's `--srcdir' option. 99 # utility programs is expected to be in ${srcdir}/lib-src. This is
100 # set by the configure script's `--srcdir' option.
68 srcdir=. 101 srcdir=.
69 102
70
71 # ==================== Emacs-specific directories ==================== 103 # ==================== Emacs-specific directories ====================
72 104
73 # Where to install the elisp files distributed with Emacs. 105 # These variables hold the values Emacs will actually use. They are
74 lispdir=${datadir}/lisp 106 # based on the values of the standard Make variables above.
107
108 # Where to install the elisp files distributed with Emacs. This
109 # includes the Emacs version, so that the lisp files for different
110 # versions of Emacs will install themselves in separate directories.
111 lispdir=${datadir}/emacs/${version}/lisp
75 112
76 # Directories Emacs should search for elisp files specific to this 113 # Directories Emacs should search for elisp files specific to this
77 # site (i.e. customizations), before consulting ${lispdir}. This 114 # site (i.e. customizations), before consulting ${lispdir}. This
78 # should be a colon-separated list of directories. 115 # should be a colon-separated list of directories.
79 locallisppath=${prefix}/lib/emacs/local-lisp 116 locallisppath=${datadir}/emacs/local-lisp
80 117
81 # Where Emacs will search to find its elisp files. Before changing 118 # Where Emacs will search to find its elisp files. Before changing
82 # this, check to see if your purpose wouldn't better be served by 119 # this, check to see if your purpose wouldn't better be served by
83 # changing locallisppath. This should be a colon-separated list of 120 # changing locallisppath. This should be a colon-separated list of
84 # directories. 121 # directories.
93 # directories. 130 # directories.
94 buildlisppath=../lisp 131 buildlisppath=../lisp
95 132
96 # Where to install the other architecture-independent data files 133 # Where to install the other architecture-independent data files
97 # distributed with Emacs (like the tutorial, the cookie recipes and 134 # distributed with Emacs (like the tutorial, the cookie recipes and
98 # the Zippy database). 135 # the Zippy database). This path usually contains the Emacs version
99 etcdir=${datadir}/etc 136 # number, so the data files for multiple versions of Emacs may be
137 # installed at once.
138 etcdir=${datadir}/emacs/${version}/etc
100 139
101 # Where to create and expect the locking directory, where the Emacs 140 # Where to create and expect the locking directory, where the Emacs
102 # locking code keeps track of which files are currently being edited. 141 # locking code keeps track of which files are currently being edited.
103 lockdir=${statedir}/lock 142 lockdir=${statedir}/emacs/lock
104 143
105 # Where to put executables to be run by Emacs rather than the user. 144 # Where to put executables to be run by Emacs rather than the user.
106 archlibdir=${libdir} 145 # This path usually includes the Emacs version and configuration name,
107 146 # so that multiple configurations for multiple versions of Emacs may
108 # ==================== Things `configure' might edit ==================== 147 # be installed at once.
109 148 archlibdir=${libdir}/emacs/${version}/${configname}
110 CC=cc
111 CFLAGS=-g
112 149
113 # ==================== Utility Programs for the Build ==================== 150 # ==================== Utility Programs for the Build ====================
114 151
115 # Allow the user to specify the install program. 152 # Allow the user to specify the install program.
116 INSTALL = install 153 INSTALL = install
119 INSTALL_DATA = ${INSTALL} 156 INSTALL_DATA = ${INSTALL}
120 157
121 # ============================= Targets ============================== 158 # ============================= Targets ==============================
122 159
123 # Flags passed down to subdirectory makefiles. 160 # Flags passed down to subdirectory makefiles.
124 MFLAGS = CC='${CC}' CFLAGS='${CFLAGS}' 161 MFLAGS =
162
163 CFLAGS=${CONFIG_CFLAGS}
125 164
126 # Subdirectories to make recursively. `lisp' is not included 165 # Subdirectories to make recursively. `lisp' is not included
127 # because the compiled lisp files are part of the distribution 166 # because the compiled lisp files are part of the distribution
128 # and you cannot remake them without installing Emacs first. 167 # and you cannot remake them without installing Emacs first.
129 SUBDIR = lib-src src 168 SUBDIR = lib-src src
130 169
131 # Subdirectories to install, and where they'll go. 170 # The makefiles of the directories in $SUBDIR.
132 COPYDIR = arch-lib etc info lisp 171 SUBDIR_MAKEFILES = lib-src/Makefile src/Makefile
133 COPYDESTS = ${libdir} ${datadir} ${infodir} ${lispdir} 172
173 # Subdirectories to install, and where they'll go. lib-src's makefile
174 # knows how to install it, so we don't do that here.
175 COPYDIR = etc ${srcdir}/info ${srcdir}/lisp
176 COPYDESTS = ${etcdir} ${infodir} ${lispdir}
134 177
135 all: src/paths.h ${SUBDIR} 178 all: src/paths.h ${SUBDIR}
136 179
137 removenullpaths=sed -e 's/^://' -e 's/:$$//' -e 's/::/:/' 180 removenullpaths=sed -e 's/^://' -e 's/:$$//' -e 's/::/:/'
138 181
182 # We force the rebuilding of src/paths.h because the user might give
183 # make different values for the various directories. Since we use
184 # move-if-change, src/paths.h only actually changes if the user did
185 # something notable, so the only unnecessary work we do is in building
186 # src/paths.h.tmp, which isn't much.
139 # Note that sed is not in /bin on 386bsd. 187 # Note that sed is not in /bin on 386bsd.
140 src/paths.h: Makefile src/paths.h.in 188 src/paths.h: Makefile ${srcdir}/src/paths.h.in FRC
141 lisppath=`echo ${lisppath} | ${removenullpaths}` ; \ 189 lisppath=`echo ${lisppath} | ${removenullpaths}` ; \
142 buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ; \ 190 buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ; \
143 sed < src/paths.h.in > src/paths.h.tmp \ 191 sed < ${srcdir}/src/paths.h.in > src/paths.h.tmp \
144 -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";' \ 192 -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";' \
145 -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${buildlisppath}'";' \ 193 -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${buildlisppath}'";' \
146 -e 's;\(#.*PATH_EXEC\).*$$;\1 "${libdir}";' \ 194 -e 's;\(#.*PATH_EXEC\).*$$;\1 "${archlibdir}";' \
147 -e 's;\(#.*PATH_DATA\).*$$;\1 "${datadir}";' \ 195 -e 's;\(#.*PATH_DATA\).*$$;\1 "${etcdir}";' \
148 -e 's;\(#.*PATH_LOCK\).*$$;\1 "${lockdir}/";' 196 -e 's;\(#.*PATH_LOCK\).*$$;\1 "${lockdir}/";'
149 ./move-if-change src/paths.h.tmp src/paths.h 197 ${srcdir}/move-if-change src/paths.h.tmp src/paths.h
150 198
151 src: lib-src 199 src: lib-src
152 200
153 .RECURSIVE: ${SUBDIR} 201 .RECURSIVE: ${SUBDIR}
154 202
155 ${SUBDIR}: FRC 203 ${SUBDIR}: ${SUBDIR_MAKEFILES} FRC
156 cd $@; make ${MFLAGS} all 204 cd $@; make all ${MFLAGS} \
157 205 CC='${CC}' CFLAGS='${CFLAGS}' \
158 install: all mkdir lockdir 206 srcdir='${srcdir}/$@' libdir='${libdir}'
207
208 ## We build the makefiles for the subdirectories here so that we can
209 ## edit the values for the path variables into them. This means that
210 ## when the user has built them from this makefile once, they will use
211 ## the right default values for the path variables.
212 lib-src/Makefile: ${srcdir}/lib-src/Makefile.in Makefile
213 echo "Producing \`lib-src/Makefile' from \`${srcdir}/lib-src/Makefile.in'."
214 rm -f lib-src/Makefile.tmp
215 (echo "# This file is generated from \`${srcdir}/lib-src/Makefile.in'." ; \
216 echo "# If you are thinking about editing it, you should seriously consider" ; \
217 echo "# running \`make lib-src/Makefile' at the top of the" ; \
218 echo "# Emacs build tree instead, or editing" ; \
219 echo "# \`${srcdir}/lib-src/Makefile.in' itself." ; \
220 /bin/sed < ${srcdir}/lib-src/Makefile.in \
221 -e 's|^\(version *=\).*$$|\1'"${version}"'|' \
222 -e 's|^\(configname *=\).*$$|\1'"${configname}"'|' \
223 -e 's|^\(prefix *=\).*$$|\1'"${prefix}"'|' \
224 -e 's|^\(exec_prefix *=\).*$$|\1'"${exec_prefix}"'|' \
225 -e 's|^\(libdir *=\).*$$|\1'"${libdir}"'|' \
226 -e 's|^\(srcdir *=\).*$$|\1'"${srcdir}"'|' \
227 -e 's|^\(archlibdir *=\).*$$|\1'"${archlibdir}"'|' \
228 -e 's|^CC *=.*$$|CC='"${CC}"'|' \
229 -e 's|^CONFIG_CFLAGS *=.*$$|CONFIG_CFLAGS='"${CONFIG_CFLAGS}"'|' \
230 -e 's|^LOADLIBES *=.*$$|LOADLIBES='"${libsrc_libs}"'|' \
231 -e '/^# DIST: /d') > lib-src/Makefile.tmp
232 ${srcdir}/move-if-change lib-src/Makefile.tmp lib-src/Makefile
233 # Remind people not to edit this.
234 chmod -w lib-src/Makefile
235
236 src/Makefile: ${srcdir}/src/Makefile.in Makefile
237 echo "Producing \`src/Makefile' from \`${srcdir}/src/Makefile.in'."
238 rm -f src/Makefile.tmp
239 (echo "# This file is generated from \`${srcdir}/src/Makefile.in'." ; \
240 echo "# If you are thinking about editing it, you should seriously consider" ; \
241 echo "# running \`make src/Makefile' at the top of the" ; \
242 echo "# Emacs build tree instead, or editing" ; \
243 echo "# \`${srcdir}/src/Makefile.in' itself." ; \
244 /bin/sed < ${srcdir}/src/Makefile.in \
245 -e 's|^\(srcdir *=\).*$$|\1'"${srcdir}"'|' \
246 -e 's|^CC *=.*$$|CC='"${CC}"'|' \
247 -e 's|^CONFIG_CFLAGS *=.*$$|CONFIG_CFLAGS='"${CONFIG_CFLAGS}"'|' \
248 -e '/^# DIST: /d') > src/Makefile.tmp
249 ${srcdir}/move-if-change src/Makefile.tmp src/Makefile
250 # Remind people not to edit this.
251 chmod -w src/Makefile
252
253 oldXMenu/Makefile: ${srcdir}/oldXMenu/Makefile Makefile
254 echo "Producing \`src/Makefile' from \`${srcdir}/src/Makefile.in'."
255 rm -f src/Makefile.tmp
256 cp "${srcdir}"/oldXMenu/Makefile oldXMenu/Makefile
257
258
259 Makefile:
260 ./config.status
261
262 # ==================== Installation ====================
263
264 install: all mkdir
265 ## If we let lib-src do its own installation, that means we
266 ## don't have to duplicate the list of utilities to install in
267 ## this Makefile as well.
268 (cd lib-src; make install ${MFLAGS} bindir=${bindir} libdir=${libdir})
159 -set ${COPYDESTS} ; \ 269 -set ${COPYDESTS} ; \
160 for dir in ${COPYDIR} ; do \ 270 for dir in ${COPYDIR} ; do \
161 dest=$$1 ; shift ; \ 271 dest=$$1 ; shift ; \
162 if [ `/bin/pwd`/$${dir} != `(cd $${dest}; /bin/pwd)` ] ; then \ 272 if [ `(cd $${dir}; /bin/pwd)` != `(cd $${dest}; /bin/pwd)` ]; then \
163 (cd $${dir}; tar cf - . ) | (cd $${dest}; umask 0; tar xf - ) ; \ 273 (cd $${dir}; tar cf - . ) | (cd $${dest}; umask 0; tar xf - ) ; \
164 for subdir in `find $${dest} -type d ! -name RCS -print` ; do \ 274 for subdir in `find $${dest} -type d ! -name RCS -print` ; do \
165 rm -rf $${subdir}/RCS ; \ 275 rm -rf $${subdir}/RCS ; \
166 rm -f $${subdir}/\#* ; \ 276 rm -f $${subdir}/\#* ; \
167 rm -f $${subdir}/*~ ; \ 277 rm -f $${subdir}/*~ ; \
168 done ; \ 278 done ; \
169 fi ; \ 279 fi ; \
170 done 280 done
171 ${INSTALL_PROGRAM} ${INSTALLFLAGS} -c arch-lib/emacsclient ${bindir}/emacsclient 281 (cd info ; \
172 ${INSTALL_PROGRAM} ${INSTALLFLAGS} -c arch-lib/etags ${bindir}/etags 282 if [ ! -f ${infodir}/dir ]; then \
173 ${INSTALL_PROGRAM} ${INSTALLFLAGS} -c arch-lib/ctags ${bindir}/ctags 283 ${INSTALL_DATA} ${INSTALLFLAGS} -m 444 ./dir ${infodir}/dir ; \
174 ${INSTALL_PROGRAM} ${INSTALLFLAGS} -c -m 1755 src/xemacs ${bindir}/xemacs 284 fi ; \
175 ${INSTALL_DATA} ${INSTALLFLAGS} -c -m 444 etc/emacs.1 ${mandir}/emacs.1 285 for f in *.info* ; do \
286 ${INSTALL_DATA} ${INSTALLFLAGS} -m 444 $$f ${infodir}/$$f ; \
287 done)
288 for page in emacs etags ctags ; do \
289 ${INSTALL_DATA} ${INSTALLFLAGS} -m 444 etc/$${page}.1 \
290 ${mandir}/$${page}${manext} ; \
291 done
292 ${INSTALL_PROGRAM} ${INSTALLFLAGS} -m 1755 src/xemacs \
293 ${bindir}/emacs-${version}
176 -rm -f ${bindir}/emacs 294 -rm -f ${bindir}/emacs
177 mv ${bindir}/xemacs ${bindir}/emacs 295 ln ${bindir}/emacs-${version} ${bindir}/emacs
178 296
179 install.sysv: all mkdir lockdir 297 install.sysv: all mkdir
298 ## If we let lib-src do its own installation, that means we
299 ## don't have to duplicate the list of utilities to install in
300 ## this Makefile as well.
301 (cd lib-src; make install ${MFLAGS} bindir=${bindir} libdir=${libdir})
180 -set ${COPYDESTS} ; \ 302 -set ${COPYDESTS} ; \
181 for dir in ${COPYDIR} ; do \ 303 for dir in ${COPYDIR} ; do \
182 dest=$$1 ; shift ; \ 304 dest=$$1 ; shift ; \
183 if [ `/bin/pwd`/$${dir} != `(cd $${dest}; /bin/pwd)` ] ; then \ 305 if [ `/bin/pwd`/$${dir} != `(cd $${dest}; /bin/pwd)` ] ; then \
184 (cd $${dir}; find . -print | cpio -pdum ${dest} ) ; \ 306 (cd $${dir}; find . -print | cpio -pdum ${dest} ) ; \
187 rm -f $${subdir}/\#* ; \ 309 rm -f $${subdir}/\#* ; \
188 rm -f $${subdir}/*~ ; \ 310 rm -f $${subdir}/*~ ; \
189 done ; \ 311 done ; \
190 fi ; \ 312 fi ; \
191 done 313 done
192 -cpset arch-lib/emacsclient ${bindir}/emacsclient 755 bin bin 314 -(cd info ; \
193 -cpset arch-lib/etags ${bindir}/etags 755 bin bin 315 if [ ! -f ${infodir}/dir ]; then \
194 -cpset arch-lib/ctags ${bindir}/ctags 755 bin bin 316 cpset ./dir ${infodir} 444 bin bin ; \
195 -cpset etc/emacs.1 ${mandir}/emacs.1 444 bin bin 317 fi ; \
318 for f in *.info* ; do \
319 cpset $$f ${infodir} 444 bin bin ; \
320 done)
321 -for page in emacs etags ctags ; do \
322 cpset etc/$${page}.1 ${mandir}/$${page}${manext} 444 bin bin ; \
323 done
196 -/bin/rm -f ${bindir}/emacs 324 -/bin/rm -f ${bindir}/emacs
197 -cpset src/xemacs ${bindir}/emacs 1755 bin bin 325 -cpset src/xemacs ${bindir}/emacs-${version} 1755 bin bin
326 -ln ${bindir}/emacs-${version} ${bindir}/emacs
198 327
199 install.xenix: all mkdir lockdir 328 install.xenix: all mkdir
329 ## If we let lib-src do its own installation, that means we
330 ## don't have to duplicate the list of utilities to install in
331 ## this Makefile as well.
332 (cd lib-src; make install ${MFLAGS} bindir=${bindir} libdir=${libdir})
200 -set ${COPYDESTS} ; \ 333 -set ${COPYDESTS} ; \
201 for dir in ${COPYDIR} ; do \ 334 for dir in ${COPYDIR} ; do \
202 dest=$$1 ; shift ; \ 335 dest=$$1 ; shift ; \
203 if [ `/bin/pwd`/$${dir} != `(cd $${dest}; /bin/pwd)` ] ; then \ 336 if [ `/bin/pwd`/$${dir} != `(cd $${dest}; /bin/pwd)` ] ; then \
204 (cd $${dir}; tar cf - . ) | (cd $${dest}; umask 0; tar xpf - ) ; \ 337 (cd $${dir}; tar cf - . ) | (cd $${dest}; umask 0; tar xpf - ) ; \
207 rm -f $${subdir}/\#* ; \ 340 rm -f $${subdir}/\#* ; \
208 rm -f $${subdir}/*~ ; \ 341 rm -f $${subdir}/*~ ; \
209 done ; \ 342 done ; \
210 fi ; \ 343 fi ; \
211 done 344 done
212 cp arch-lib/etags arch-lib/ctags arch-lib/emacsclient ${bindir} 345 (cd info ; \
213 chmod 755 ${bindir}/etags ${bindir}/ctags ${bindir}/emacsclient 346 if [ ! -f ${infodir}/dir ]; then \
214 cp etc/emacs.1 ${mandir}/emacs.1 347 cp ./dir ${infodir} ; \
215 chmod 444 ${mandir}/emacs.1 348 chmod 444 ${infodir}/dir ; \
349 fi ; \
350 for f in *.info* ; do \
351 cp $$f ${infodir} ; \
352 chmod 444 ${infodir}/$$f ; \
353 done)
354 for page in emacs etags ctags ; do \
355 cp etc/$${page}.1 ${mandir}/$${page}${manext} ; \
356 chmod 444 ${mandir}/$${page}${manext} ; \
357 done
216 -mv -f ${bindir}/emacs ${bindir}/emacs.old 358 -mv -f ${bindir}/emacs ${bindir}/emacs.old
217 cp src/xemacs ${bindir}/emacs 359 cp src/xemacs ${bindir}/emacs-${version}
360 ln ${bindir}/emacs-${version} ${bindir}/emacs
218 chmod 1755 ${bindir}/emacs 361 chmod 1755 ${bindir}/emacs
219 -rm -f ${bindir}/emacs.old 362 -rm -f ${bindir}/emacs.old
220 363
221 install.aix: all mkdir lockdir 364 install.aix: all mkdir
365 ## If we let lib-src do its own installation, that means we
366 ## don't have to duplicate the list of utilities to install in
367 ## this Makefile as well.
368 (cd lib-src; make install ${MFLAGS} bindir=${bindir} libdir=${libdir})
222 -set ${COPYDESTS} ; \ 369 -set ${COPYDESTS} ; \
223 for dir in ${COPYDIR} ; do \ 370 for dir in ${COPYDIR} ; do \
224 dest=$$1 ; shift ; \ 371 dest=$$1 ; shift ; \
225 if [ `/bin/pwd`/$${dir} != `(cd $${dest}; /bin/pwd)` ] ; then \ 372 if [ `/bin/pwd`/$${dir} != `(cd $${dest}; /bin/pwd)` ] ; then \
226 (cd $${dir}; tar cf - . ) | (cd $${dest}; umask 0; tar xBf - ) ; \ 373 (cd $${dir}; tar cf - . ) | (cd $${dest}; umask 0; tar xBf - ) ; \
229 rm -f $${subdir}/\#* ; \ 376 rm -f $${subdir}/\#* ; \
230 rm -f $${subdir}/*~ ; \ 377 rm -f $${subdir}/*~ ; \
231 done ; \ 378 done ; \
232 fi ; \ 379 fi ; \
233 done 380 done
234 ${INSTALL_PROGRAM} ${INSTALLFLAGS} -f ${bindir} etc/emacsclient 381 (cd info ; \
235 ${INSTALL_PROGRAM} ${INSTALLFLAGS} -f ${bindir} etc/etags 382 if [ ! -f ${infodir}/dir ]; then \
236 ${INSTALL_PROGRAM} ${INSTALLFLAGS} -f ${bindir} etc/ctags 383 ${INSTALL_DATA} ${INSTALLFLAGS} -M 444 -f ${infodir} ./dir ; \
384 fi ; \
385 for f in *.info* ; do \
386 ${INSTALL_DATA} ${INSTALLFLAGS} -M 444 -f ${infodir} $$f ; \
387 done)
237 ${INSTALL_PROGRAM} ${INSTALLFLAGS} -M 1755 -f ${bindir} src/xemacs 388 ${INSTALL_PROGRAM} ${INSTALLFLAGS} -M 1755 -f ${bindir} src/xemacs
238 ${INSTALL_DATA} ${INSTALLFLAGS} -M 444 -f ${mandir} etc/emacs.1 389 mv ${bindir}/xemacs ${bindir}/emacs-${version}
390 for page in emacs etags ctags ; do \
391 ${INSTALL_DATA} ${INSTALLFLAGS} -M 444 -f ${mandir} etc/$${page}.1 ;\
392 done
239 -rm -f ${bindir}/emacs 393 -rm -f ${bindir}/emacs
240 mv ${bindir}/xemacs ${bindir}/emacs 394 ln ${bindir}/emacs-${version} ${bindir}/emacs
241 395
242 # Build all the directories 396 ### Build all the directories we're going to install Emacs in. Since
397 ### we may be creating several layers of directories (for example,
398 ### /usr/local/lib/emacs/19.0/mips-dec-ultrix4.2), we use make-path
399 ### instead of mkdir. Not all systems' mkdirs have the `-p' flag.
243 mkdir: FRC 400 mkdir: FRC
244 # If any of the directories are below ${emacsdir}, create it. 401 ./lib-src/make-path ${COPYDESTS} ${lockdir}
245 -for dir in ${COPYDESTS}; do \ 402 chmod 777 ${COPYDESTS} ${lockdir}
246 case "$${dir}" in \
247 ${emacsdir}/* ) \
248 if [ ! -d ${emacsdir} ]; then \
249 mkdir ${emacsdir} ; \
250 chmod 777 ${emacsdir} ; \
251 fi ; \
252 break\
253 ;; \
254 esac ; \
255 done
256 -mkdir ${COPYDESTS}
257 -chmod 777 ${COPYDESTS}
258
259 lockdir:
260 # If the lockdir needs ${emacsdir}, create it.
261 -case "${lockdir}" in \
262 ${statedir}/* ) \
263 if [ ! -d ${emacsdir} ]; then \
264 mkdir ${emacsdir} ; \
265 chmod 777 ${emacsdir} ; \
266 fi \
267 ;; \
268 esac
269 -mkdir ${LOCKDIR}
270 -chmod 777 ${LOCKDIR}
271 403
272 FRC: 404 FRC:
273 405
406
407 # ==================== Cleaning up and miscellanea ====================
408
409 ### `clean'
410 ### Delete all files from the current directory that are normally
411 ### created by building the program. Don't delete the files that
412 ### record the configuration. Also preserve files that could be made
413 ### by building, but normally aren't because the distribution comes
414 ### with them.
415 ### `mostlyclean'
416 ### Like `clean', but may refrain from deleting a few files that
417 ### people normally don't want to recompile. For example, the
418 ### `mostlyclean' target for GCC does not delete `libgcc.a', because
419 ### recompiling it is rarely necessary and takes a lot of time.
420 ###
274 clean mostlyclean: 421 clean mostlyclean:
275 cd src; make clean 422 cd src; make clean
276 if [ `/bin/pwd` != `(cd ${emacsdir}; /bin/pwd)` ] ; then \ 423 cd lib-src; make clean
277 (cd etc; make clean); \ 424 cd oldXMenu; make clean
278 (cd lib-src; make clean); \ 425 if [ `(cd ${etcdir} ; /bin/pwd` != `(cd etc; /bin/pwd)` ] ; then \
426 cd etc; make clean; \
279 else true; \ 427 else true; \
280 fi 428 fi
281 cd oldXMenu; make clean 429
282 430 ### `distclean'
431 ### Delete all files from the current directory that are created by
432 ### configuring or building the program. This should leave only the
433 ### files that would be in the distribution.
283 distclean: 434 distclean:
284 for i in ${SUBDIR}; do (cd $$i; make ${MFLAGS} distclean); done 435 for i in ${SUBDIR}; do (cd $$i; make ${MFLAGS} distclean); done
285 -(cd lock; rm *) 436 -(cd lock; rm *)
286 -rm config.status config-tmp-* 437 -rm config.status config-tmp-*
287 -rm #*# *~ 438
288 439 ### `realclean'
440 ### Delete everything from the current directory that can be
441 ### reconstructed with this makefile. This typically includes
442 ### everything deleted by distclean, plus more: C source files
443 ### produced by Bison, tags tables, info files, and so on.
289 realclean: 444 realclean:
290 for i in ${SUBDIR}; do (cd $$i; make ${MFLAGS} realclean); done 445 for i in ${SUBDIR}; do (cd $$i; make ${MFLAGS} realclean); done
291 (cd lock; rm *) 446 (cd lock; rm *)
292 rm config.status 447 rm config.status
293 448
449 ### This doesn't actually appear in the coding standards, but Karl
450 ### says GCC supports it, and that's where the configuration part of
451 ### the coding standards seem to come from. It's like distclean, but
452 ### it deletes backup and autosave files too.
453 extraclean:
454 for i in ${SUBDIR}; do (cd $$i; make ${MFLAGS} extraclean); done
455 -(cd lock; rm *)
456 -rm config.status config-tmp-*
457 -rm -f *~ \#*
458
459
294 TAGS tags: lib-src 460 TAGS tags: lib-src
295 cd src; ../arch-lib/etags *.[ch] ../lisp/*.el ../lisp/term/*.el 461 (cd ${srcdir} ; lib-src/etags --output=./src/TAGS \
462 src/*.[ch] lisp/*.el lisp/term/*.el)
296 463
297 check: 464 check:
298 @echo "We don't have any tests for GNU Emacs yet." 465 @echo "We don't have any tests for GNU Emacs yet."
299 466
300 dist: 467 dist:
301 make-dist 468 cd ${srcdir}; make-dist