*** empty log message ***
[bpt/emacs.git] / INSTALL
CommitLineData
a0e671c7 1GNU Emacs Installation Guide
887af595 2Copyright (c) 1992, 1994, 1996, 1997 Free software Foundation, Inc.
a0e671c7
JB
3
4 Permission is granted to anyone to make or distribute verbatim copies
5 of this document as received, in any medium, provided that the
6 copyright notice and permission notice are preserved,
7 and that the distributor grants the recipient permission
8 for further redistribution as permitted by this notice.
9
10 Permission is granted to distribute modified versions
11 of this document, or of portions of it,
12 under the above conditions, provided also that they
13 carry prominent notices stating who last changed them,
14 and that any new or changed statements about the activities
15 of the Free Software Foundation are approved by the Foundation.
16
17
85da25e9
RS
18ADDITIONAL DISTRIBUTION FILES
19
20* leim-M.N.tar.gz
21
22The Emacs Lisp code for input methods for various international
becd5943
KH
23character scripts is distributed in a separate tar file because it
24amounts to a significant fraction of the size of the distribution.
25This tar file is called leim-M.N.tar.gz, with the same version number
26as Emacs, and it unpacks into the directory emacs-M.N/leim.
27
28You should unpack leim-M.N.tar.gz into the same directory where you
29have previously unpacked the main Emacs distribution. It fills in the
30contents of one subdirectory, which is present in the main Emacs
31distribution only in dummy form.
32
33Once you have unpacked the Leim tar file into the Emacs source tree,
34building and installing Emacs automatically installs the input method
35support as well. If you have built Emacs without unpacking Leim
36first, just unpack Leim, build Emacs again, and install it again.
85da25e9
RS
37
38* intlfonts-VERSION.tar.gz
39
40The intlfonts distribution contains X11 fonts that Emacs needs in
41order to display international characters. If you see a non-ASCII
42character appear as a hollow box, that means you don't have a font for
887af595
RS
43it. You might find a font in the intlfonts distribution. If some
44characters don't look right, or appear improperly aligned, a font
330a9ebb 45from the intlfonts distribution might look better.
887af595 46
1d173668
EZ
47The fonts in the intlfonts distribution are also used by the ps-print
48package for printing international characters. The file
49lisp/ps-mule.el defines the .bdf font files required for printing
50each character set.
51
887af595
RS
52The intlfonts distribution contains its own installation instructions,
53in the intlfonts/README file.
85da25e9 54
400a1ed0
GM
55* elisp-manual-VERSION.tar.gz
56
57This is the Emacs Lisp Reference for programmers, containing an
58in-depth discussion of Emacs Lisp and Emacs internals. The
59distribution contains the Texinfo source files for the Reference
60Manual. The Emacs Lisp Reference Manual is quite large. It contains
61around 900 pages in smallbook format; the info files total almost two
62megabytes. The package contains installation instructions of its own.
63
85da25e9 64
a0e671c7 65BUILDING AND INSTALLATION:
00af31ec
RS
66
67(This is for a Unix or Unix-like system. For MSDOS, see below; search
68for MSDOG. For Windows NT or Windows 95, see the file nt/INSTALL.)
a0e671c7
JB
69
701) Make sure your system has enough swapping space allocated to handle
71a program whose pure code is 900k bytes and whose data area is at
72least 400k and can reach 8Mb or more. If the swapping space is
73insufficient, you will get an error in the command `temacs -batch -l
bde335e3 74loadup dump', found in `./src/Makefile.in', or possibly when
42db5687 75running the final dumped Emacs.
a0e671c7 76
2d475b5f
KH
77Building Emacs requires about 70 Mb of disk space (including the Emacs
78sources). Once installed, Emacs occupies about 35 Mb in the file
42db5687
RS
79system where it is installed; this includes the executable files, Lisp
80libraries, miscellaneous data files, and on-line documentation. If
81the building and installation take place in different directories,
2d475b5f 82then the installation procedure momentarily requires 70+35 Mb.
a0e671c7
JB
83
842) Consult `./etc/MACHINES' to see what configuration name you should
f40423fa 85give to the `configure' program. That file offers hints for
a0e671c7
JB
86getting around some possible installation problems.
87
ea3165c7
RS
883) You can build Emacs in the top-level Emacs source directory
89or in a separate directory.
90
913a) To build in the top-level Emacs source directory, go to that
92directory and run the program `configure' as follows:
a0e671c7 93
e4e772f1 94 ./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ...
a0e671c7
JB
95
96The CONFIGURATION-NAME argument should be a configuration name given
e4e772f1
RS
97in `./etc/MACHINES', with the system version number added at the end.
98
99You should try first omitting CONFIGURATION-NAME. This way,
100`configure' will try to guess your system type. If it cannot guess,
101or if something goes wrong in building or installing Emacs this way,
102try again specifying the proper CONFIGURATION-NAME explicitly.
a0e671c7 103
f40423fa
DM
104If you don't want X support, specify `--with-x=no'. If you omit this
105option, `configure' will try to figure out for itself whether your
106system has X, and arrange to use it if present.
a0e671c7
JB
107
108The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build
109process where the compiler should look for the include files and
f40423fa
DM
110object libraries used with the X Window System. Normally, `configure'
111is able to find them; these options are necessary if you have your X
763b1847
KH
112Window System files installed in unusual places. These options also
113accept a list of directories, separated with colons.
a0e671c7 114
f40423fa
DM
115To get more attractive menus, you can specify an X toolkit when you
116configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where
117TOOLKIT is `athena' or `motif' (`yes' and `lucid' are synonyms for
118`athena'). On some systems, it does not work to use a toolkit with
119shared libraries.
a0e671c7
JB
120
121The `--with-gcc' option specifies that the build process should
122compile Emacs using GCC. If you don't want to use GCC, specify
f40423fa
DM
123`--with-gcc=no'. If you omit this option, `configure' will search
124for GCC in your path, and use it if present.
a0e671c7 125
c5f329d6
RS
126If you want the Emacs mail reader RMAIL to read mail from a POP
127server, you must specify `--with-pop'. This provides support for the
128POP3 protocol; older versions are not supported. For
129Kerberos-authenticated POP add `--with-kerberos', for Hesiod support
130add `--with-hesiod'. These options enable Emacs to use POP; whether
131Emacs uses POP is controlled by individual users--see the Rmail
132chapter of the Emacs manual.
133
a0e671c7
JB
134The `--prefix=PREFIXDIR' option specifies where the installation process
135should put emacs and its data files. This defaults to `/usr/local'.
136- Emacs (and the other utilities users run) go in PREFIXDIR/bin
137 (unless the `--exec-prefix' option says otherwise).
f40423fa
DM
138- The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
139 (where VERSION is the version number of Emacs, like `19.27').
a0e671c7 140- The architecture-dependent files go in
f40423fa 141 PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION
a0e671c7
JB
142 (where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2),
143 unless the `--exec-prefix' option says otherwise.
144
145The `--exec-prefix=EXECDIR' option allows you to specify a separate
146portion of the directory tree for installing architecture-specific
147files, like executables and utility programs. If specified,
148- Emacs (and the other utilities users run) go in EXECDIR/bin, and
149- The architecture-dependent files go in
f40423fa 150 EXECDIR/libexec/emacs/VERSION/CONFIGURATION.
a0e671c7
JB
151EXECDIR/bin should be a directory that is normally in users' PATHs.
152
153For example, the command
154
155 ./configure mips-dec-ultrix --with-x11
156
157configures Emacs to build for a DECstation running Ultrix, with
158support for the X11 window system.
159
f40423fa 160`configure' doesn't do any compilation or installation
a0e671c7 161itself. It just creates the files that influence those things:
908477d9
DM
162`./Makefile', `lib-src/Makefile', `oldXMenu/Makefile',
163`lwlib/Makefile', `src/Makefile', and `./src/config.h'. For details
164on exactly what it does, see the section called `CONFIGURATION BY
165HAND', below.
a0e671c7
JB
166
167When it is done, `configure' prints a description of what it did and
f40423fa
DM
168creates a shell script `config.status' which, when run, recreates the
169same configuration. If `configure' exits with an error after
170disturbing the status quo, it removes `config.status'. `configure'
171also creates a file `config.cache' that saves the results of its tests
172to make reconfiguring faster, and a file `config.log' containing compiler
173output (useful mainly for debugging `configure'). You can give
174`configure' the option `--cache-file=FILE' to use the results of the
175tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to
176disable caching, for debugging `configure'.
a0e671c7
JB
177
178The work of `configure' can be done by editing various files in the
ea3165c7
RS
179distribution, but using `configure' is easier. See the section called
180"CONFIGURATION BY HAND" below if you want to do the configuration
181yourself.
182
1833b) To build in a separate directory, go to that directory
184and run the program `configure' as follows:
185
186 SOURCE-DIR/configure CONFIGURATION-NAME [--OPTION[=VALUE]] ...
187
188SOURCE-DIR refers to the top-level Emacs source directory which is
189where Emacs's configure script is located. `configure' looks for the
190Emacs source code in the directory that `configure' is in.
191
192To build in a separate directory, you must use a version of `make'
193that supports the `VPATH' variable, such as GNU `make'.
a0e671c7 194
793faff1
RS
1953c) Some people try to build in a separate directory by filling
196it full of symlinks to the files in the real source directory.
e1655e2b
RS
197If you do that, `make all' does work, but `make install' fails:
198it copies the symbolic links rather than the actual files.
199
200As far as is known, there is no particular reason to use
201a directory full of links rather than use the standard GNU
202facilities to build in a separate directory (see 3b above).
203
a0e671c7 2044) Look at `./lisp/paths.el'; if some of those values are not right
0b60f47d
KH
205for your system, set up the file `./lisp/site-init.el' with Emacs
206Lisp code to override them; it is not a good idea to edit paths.el
a0e671c7
JB
207itself. YOU MUST USE THE LISP FUNCTION `setq' TO ASSIGN VALUES,
208rather than `defvar', as used by `./lisp/paths.el'. For example,
209
210 (setq news-inews-program "/usr/bin/inews")
211
212is how you would override the default value of the variable
213news-inews-program (which is "/usr/local/inews").
214
35b12ec0
RS
215Before you override a variable this way, *look at the value* that the
216variable gets by default! Make sure you know what kind of value the
217variable should have. If you don't pay attention to what you are
218doing, you'll make a mistake.
219
42db5687
RS
2205) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
221Lisp code you want Emacs to load before it is dumped out. Use
222site-load.el for additional libraries if you arrange for their
223documentation strings to be in the etc/DOC file (see
bde335e3 224src/Makefile.in if you wish to figure out how to do that). For all
8c10f3e4
RS
225else, use site-init.el. Do not load byte-compiled code which
226was build with a non-nil value of `byte-compile-dynamic'.
a0e671c7 227
0d75540d
RS
228If you set load-path to a different value in site-init.el or
229site-load.el, Emacs will use *precisely* that value when it starts up
230again. If you do this, you are on your own!
d07ee75a 231
a0e671c7
JB
232Note that, on some systems, the code you place in site-init.el must
233not use expand-file-name or any other function which may look
234something up in the system's password and user information database.
4fece393 235See `./etc/PROBLEMS' for more details on which systems this affects.
a0e671c7 236
eaa91904
RS
237The `site-*.el' files are nonexistent in the distribution. You do not
238need to create them if you have nothing to put in them.
a0e671c7
JB
239
2406) Refer to the file `./etc/TERMS' for information on fields you may
241wish to add to various termcap entries. The files `./etc/termcap.ucb'
242and `./etc/termcap.dat' may already contain appropriately-modified
243entries.
244
2457) Run `make' in the top directory of the Emacs distribution to finish
c5f48ce3
RS
246building Emacs in the standard way. The final executable file is
247named `src/emacs'. You can execute this file "in place" without
248copying it, if you wish; then it automatically uses the sibling
249directories ../lisp, ../lib-src, ../info.
250
251Or you can "install" the executable and the other Emacs into their
252installed locations, with `make install'. By default, Emacs's files
253are installed in the following directories:
a0e671c7
JB
254
255`/usr/local/bin' holds the executable programs users normally run -
c9da8016
RS
256 `emacs', `etags', `ctags', `b2m', `emacsclient',
257 and `rcs-checkin'.
a0e671c7 258
f40423fa 259`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
a0e671c7 260 `VERSION' stands for the number of the Emacs version
f40423fa 261 you are installing, like `18.59' or `19.27'. Since the
cdb49480 262 Lisp library changes from one version of Emacs to
a0e671c7
JB
263 another, including the version number in the path
264 allows you to have several versions of Emacs installed
cdb49480
RS
265 at the same time; in particular, you don't have to
266 make Emacs unavailable while installing a new version.
a0e671c7 267
cdb49480
RS
268`/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
269 files installed for Emacs version VERSION only.
270
271`/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
272 files installed for all Emacs versions.
273
274 When Emacs is installed, it searches for its Lisp files
275 in `/usr/local/share/emacs/VERSION/site-lisp', then in
276 `/usr/local/share/emacs/site-lisp', and finally in
277 `/usr/local/share/emacs/VERSION/lisp'.
a0e671c7 278
f40423fa 279`/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
a0e671c7
JB
280 file, the `yow' database, and other
281 architecture-independent files Emacs might need while
282 running. VERSION is as specified for `.../lisp'.
283
f40423fa 284`/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
a0e671c7
JB
285 programs used by Emacs that users are not expected to
286 run themselves.
287 `VERSION' is the number of the Emacs version you are
288 installing, and `CONFIGURATION-NAME' is the argument
289 you gave to the `configure' program to identify the
290 architecture and operating system of your machine,
291 like `mips-dec-ultrix' or `sparc-sun-sunos'. Since
292 these files are specific to the version of Emacs,
293 operating system, and architecture in use, including
294 the configuration name in the path allows you to have
295 several versions of Emacs for any mix of machines and
296 operating systems installed at the same time; this is
297 useful for sites at which different kinds of machines
298 share the file system Emacs is installed on.
299
300`/usr/local/info' holds the on-line documentation for Emacs, known as
301 "info files". Many other GNU programs are documented
302 using info files as well, so this directory stands
303 apart from the other, Emacs-specific directories.
304
305`/usr/local/man/man1' holds the man pages for the programs installed
306 in `/usr/local/bin'.
307
308If these directories are not what you want, you can specify where to
309install Emacs's libraries and data files or where Emacs should search
cdb49480 310for its Lisp files by giving values for `make' variables as part of
a0e671c7
JB
311the command. See the section below called `MAKE VARIABLES' for more
312information on this.
313
3148) Check the file `dir' in your site's info directory (usually
315/usr/local/info) to make sure that it has a menu entry for the Emacs
316info files.
317
42db5687 3189) If your system uses lock files to interlock access to mailer inbox files,
f40423fa 319then you might need to make the movemail program setuid or setgid
42db5687
RS
320to enable it to write the lock files. We believe this is safe.
321
2d475b5f
KH
32210) You are done! You can remove executables and object files from
323the build directory by typing `make clean'. To also remove the files
324that `configure' created (so you can compile Emacs for a different
325configuration), type `make distclean'.
326
a0e671c7
JB
327
328
329MAKE VARIABLES
330
331You can change where the build process installs Emacs and its data
332files by specifying values for `make' variables as part of the `make'
333command line. For example, if you type
334
335 make install bindir=/usr/local/gnubin
336
337the `bindir=/usr/local/gnubin' argument indicates that the Emacs
338executable files should go in `/usr/local/gnubin', not
339`/usr/local/bin'.
340
341Here is a complete list of the variables you may want to set.
342
343`bindir' indicates where to put executable programs that users can
344 run. This defaults to /usr/local/bin.
345
346`datadir' indicates where to put the architecture-independent
347 read-only data files that Emacs refers to while it runs; it
908477d9 348 defaults to /usr/local/share. We create the following
a0e671c7 349 subdirectories under `datadir':
cdb49480 350 - `emacs/VERSION/lisp', containing the Emacs Lisp library, and
a0e671c7
JB
351 - `emacs/VERSION/etc', containing the Emacs tutorial, the DOC
352 file, and the `yow' database.
353 `VERSION' is the number of the Emacs version you are installing,
354 like `18.59' or `19.0'. Since these files vary from one version
355 of Emacs to another, including the version number in the path
356 allows you to have several versions of Emacs installed at the
357 same time; this means that you don't have to make Emacs
358 unavailable while installing a new version.
359
908477d9
DM
360`libexecdir' indicates where to put architecture-specific data files that
361 Emacs refers to as it runs; it defaults to `/usr/local/libexec'.
362 We create the following subdirectories under `libexecdir':
a0e671c7
JB
363 - `emacs/VERSION/CONFIGURATION-NAME', containing executable
364 programs used by Emacs that users are not expected to run
365 themselves.
366 `VERSION' is the number of the Emacs version you are installing,
367 and `CONFIGURATION-NAME' is the argument you gave to the
368 `configure' program to identify the architecture and operating
369 system of your machine, like `mips-dec-ultrix' or
370 `sparc-sun-sunos'. Since these files are specific to the version
371 of Emacs, operating system, and architecture in use, including
372 the configuration name in the path allows you to have several
373 versions of Emacs for any mix of machines and operating systems
374 installed at the same time; this is useful for sites at which
375 different kinds of machines share the file system Emacs is
376 installed on.
377
378`infodir' indicates where to put the info files distributed with
379 Emacs; it defaults to `/usr/local/info'.
380
381`mandir' indicates where to put the man pages for Emacs and its
382 utilities (like `etags'); it defaults to
383 `/usr/local/man/man1'.
384
385`manext' gives the extension the man pages should be installed with.
386 It should contain a period, followed by the appropriate
387 digit. It defaults to `.1'. For example given the default
388 values for `mandir' and `manext', the Emacs man page would be
389 installed as `/usr/local/man/man1/emacs.1'.
390
391`prefix' doesn't give a path for any specific part of Emacs; instead,
392 its value is used to determine the defaults for all the
393 architecture-independent path variables - `datadir',
908477d9 394 `sharedstatedir', `infodir', and `mandir'. Its default value is
a0e671c7
JB
395 `/usr/local'; the other variables add on `lib' or `man' to it
396 by default.
397
398 For example, suppose your site generally places GNU software
399 under `/usr/users/software/gnusoft' instead of `/usr/local'.
400 By including
401 `prefix=/usr/users/software/gnusoft'
402 in the arguments to `make', you can instruct the build process
403 to place all of the Emacs data files in the appropriate
404 directories under that path.
405
406`exec_prefix' serves the same purpose as `prefix', but instead
407 determines the default values for the architecture-dependent
908477d9 408 path variables - `bindir' and `libexecdir'.
a0e671c7
JB
409
410The above variables serve analogous purposes in the makefiles for all
5c462624 411GNU software; this variable is specific to Emacs.
a0e671c7 412
2d475b5f
KH
413`archlibdir' indicates where Emacs installs and expects the executable
414 files and other architecture-dependent data it uses while
415 running. Its default value, based on `libexecdir' (which
416 see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
a0e671c7
JB
417 (where VERSION and CONFIGURATION-NAME are as described above).
418
419Remember that you must specify any variable values you need each time
420you run `make' in the top directory. If you run `make' once to build
421emacs, test it, and then run `make' again to install the files, you
422must provide the same variable settings each time. To make the
423settings persist, you can edit them into the `Makefile' in the top
424directory, but be aware that running the `configure' program erases
425`Makefile' and rebuilds it from `Makefile.in'.
426
5c462624
RS
427The path for finding Lisp files is specified in src/paths.h,
428a file which is generated by running configure. To change the path,
429you can edit the definition of PATH_LOADSEARCH in that file
430before you run `make'.
431
a0e671c7
JB
432The top-level Makefile stores the variable settings it used in the
433Makefiles for the subdirectories, so you don't have to specify them
434when running make in the subdirectories.
435
436
437CONFIGURATION BY HAND
438
c9da8016
RS
439Instead of running the `configure' program, you have to perform the
440following steps.
a0e671c7 441
bde335e3 4421) Copy `./src/config.in' to `./src/config.h'.
a0e671c7
JB
443
4442) Consult `./etc/MACHINES' to see what configuration name you should
445use for your system. Look at the code of the `configure' script to
446see which operating system and architecture description files from
447`src/s' and `src/m' should be used for that configuration name. Edit
448`src/config.h', and change the two `#include' directives to include
449the appropriate system and architecture description files.
450
4512) Edit `./src/config.h' to set the right options for your system. If
452you need to override any of the definitions in the s/*.h and m/*.h
453files for your system and machine, do so by editing config.h, not by
454changing the s/*.h and m/*.h files. Occasionally you may need to
455redefine parameters used in `./lib-src/movemail.c'.
456
c9da8016 4573) Create src/Makefile and lib-src/Makefile from the corresponding
bde335e3 458`Makefile.in' files. First copy `Makefile.in' to `Makefile.c',
94684a2e 459then edit in appropriate substitutions for the @...@ constructs,
c9da8016
RS
460and then copy the shell commands near the end of `configure'
461that run cpp to construct `Makefile'.
a0e671c7 462
c9da8016
RS
4634) Create `Makefile' files in various other directories
464from the corresponding `Makefile.in' files. This isn't so hard,
465just a matter of substitution.
a0e671c7 466
a0e671c7 467The `configure' script is built from `configure.in' by the `autoconf'
f40423fa 468program. You need version 2.0 or newer of `autoconf' to rebuild `configure'.
a0e671c7
JB
469
470BUILDING GNU EMACS BY HAND
471
a4af02f3
RS
472Once Emacs is configured, running `make' in the top directory performs
473the following steps.
a0e671c7
JB
474
4751) Run `make src/paths.h' in the top directory. This produces
bde335e3 476`./src/paths.h' from the template file `./src/paths.in', changing
a0e671c7
JB
477the paths to the values specified in `./Makefile'.
478
c9da8016
RS
4792) Go to directory `./lib-src' and run `make'. This creates
480executables named `ctags' and `etags' and `wakeup' and `make-docfile'
481and `digest-doc' and `test-distrib'. And others.
a0e671c7 482
c9da8016
RS
4833) Go to directory `./src' and Run `make'. This refers to files in
484the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
a0e671c7
JB
485`../lib-src'.
486
487This creates a file `./src/emacs' which is the runnable Emacs,
c9da8016
RS
488which has another name that contains a version number.
489Each time you do this, that version number increments in the last place.
a0e671c7
JB
490
491It also creates a file in `./etc' whose name is `DOC' followed by the
492current Emacs version. This file contains documentation strings for
493all the functions in Emacs. Each time you run make to make a new
494emacs, a new DOC file with a new name is made. You must keep the DOC
495file for an Emacs version as long as you keep using that Emacs
496version.
497
498
499INSTALLATION BY HAND
500
a4af02f3
RS
501The steps below are done by running `make install' in the main
502directory of the Emacs distribution.
a0e671c7
JB
503
5041) Copy `./lisp' and its subdirectories, `./etc', and the executables
505in `./lib-src' to their final destinations, as selected in `./src/paths.h'.
506
507Strictly speaking, not all of the executables in `./lib-src' need be copied.
eaa91904 508- The programs `cvtmail', `emacsserver', `fakemail', `hexl',
c9da8016
RS
509 `movemail', `profile', `rcs2log', `timer', `vcdiff', `wakeup',
510 and `yow' are used by Emacs; they do need to be copied.
511- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
a0e671c7 512 are intended to be run by users; they are handled below.
3ae888e8 513- The programs `make-docfile' and `test-distrib' were
a0e671c7
JB
514 used in building Emacs, and are not needed any more.
515- The programs `digest-doc' and `sorted-doc' convert a `DOC' file into
516 a file for users to read. There is no important reason to move them.
517
5182) Copy the files in `./info' to the place specified in
519`./lisp/site-init.el' or `./lisp/paths.el'. Note that if the
520destination directory already contains a file named `dir', you
521probably don't want to replace it with the `dir' file in the Emacs
522distribution. Instead, you should make sure that the existing `dir'
523file contains an appropriate menu entry for the Emacs info.
524
100b770b 5253) Copy `./src/emacs' to `/usr/local/bin', or to some other directory
a0e671c7
JB
526in users' search paths. `./src/emacs' has an alternate name
527`./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named
528`/usr/local/bin/emacs' pointing to that alternate name, as an easy way
529of installing different versions.
530
531You can delete `./src/temacs'.
532
100b770b 5334) Copy the programs `b2m', `emacsclient', `ctags', `etags', and
c9da8016 534`rcs-checkin' from `./lib-src' to `/usr/local/bin'. These programs are
a0e671c7
JB
535intended for users to run.
536
100b770b 5375) Copy the man pages in `./etc' for emacs, ctags, and etags into the
a0e671c7
JB
538appropriate man directories.
539
100b770b 5406) The files in the `./src' subdirectory, except for `emacs', are not
c9da8016
RS
541used by Emacs once it is built. However, it is very desirable to keep
542the source on line for debugging.
a0e671c7
JB
543
544
545PROBLEMS
546
4fece393 547See the file PROBLEMS in etc subdirectory for a list of various
a0e671c7
JB
548problems sometimes encountered, and what to do about them.
549
550
42db5687
RS
551Installation on MSDOG (a.k.a. MSDOS)
552
eaa91904 553To install on MSDOG, you need to have the GNU C compiler for MSDOG
3f0ec1b7
RS
554(also known as djgpp), GNU Make, rm, mv, and sed. See the remarks in
555config.bat for more information about locations and versions. The
556file etc/FAQ includes pointers to Internet sites where you can find
557the necessary utilities; search for "MS-DOS". The configuration step
558(see below) will test for these utilities and will refuse to continue
559if any of them isn't found.
560
561If you are building the MSDOG version of Emacs on an MSDOG-like system
562which supports long file names (e.g. Windows 95), you need to make
563sure that long file names are handled consistently both when you
564unpack the distribution and compile it. If you intend to compile with
565DJGPP v2.0 or later, and long file names support is enabled (LFN=y in
566the environment), you need to unpack Emacs distribution in a way that
567doesn't truncate the original long filenames to the DOS 8.3 namespace;
568the easiest way to do this is to use djtar program which comes with
569DJGPP, since it will note the LFN setting and behave accordingly.
570DJGPP v1 doesn't support long filenames, so you must unpack Emacs with
571a program that truncates the filenames to 8.3 naming as it extracts
572files; again, using djtar after setting LFN=n is the recommended way.
573You can build Emacs with LFN=n even if you use DJGPP v2, if some of
574your tools don't support long file names: just ensure that LFN is set
575to `n' during both unpacking and compiling.
576
577(By the time you read this, you have already unpacked the Emacs
578distribution, but if the explanations above imply that you should have
579done it differently, it's safer to delete the directory tree created
580by the unpacking program and unpack Emacs again, than to risk running
581into problems during the build process.)
582
583It is important to understand that the runtime support of long file
584names by the Emacs binary is NOT affected by the LFN setting during
585compilation; Emacs compiled with DJGPP v2.0 or later will always
586support long file names on Windows 95 no matter what was the setting
e60ea278
KH
587of LFN at compile time. However, if you compiled with LFN disabled
588and want to enable LFN support after Emacs was already built, you need
589to make sure that the support files in the lisp, etc and info
590directories are called by their original long names as found in the
591distribution. You can do this either by renaming the files manually,
592or by extracting them from the original distribution archive with
593djtar after you set LFN=y in the environment.
3f0ec1b7
RS
594
595To unpack Emacs with djtar, type this command:
596
597 djtar -x emacs.tgz
598
599(This assumes that the Emacs distribution is called `emacs.tgz' on
e2726984 600your system.)
3f0ec1b7 601
1d173668
EZ
602If you need to type international characters, you will need to unpack
603the Leim distribution (see the description near the beginning of this
604file). You unpack it from the same directory where you unpacked
605Emacs. To unpack Leim with djtar, assuming the Leim distribution is
606called `leim.tgz', type this command:
607
608 djtar -x leim.tgz
609
610If you want to print international characters, install the intlfonts
46ccfd36 611distribution. For this, create a directory called `fonts' under the
1d173668
EZ
612Emacs top-level directory (usually called `emacs-XX.YY') created by
613unpacking emacs.tgz, chdir into the directory emacs-XX.YY/fonts, and
614type this:
615
616 djtar -x intlfonts.tgz
617
3f0ec1b7
RS
618When unpacking is done, a directory called `emacs-XX.YY' will be
619created, where XX.YY is the Emacs version. To build and install
620Emacs, chdir to that directory and type these commands:
0287f07c
RS
621
622 config msdos
623 make install
42db5687 624
46ccfd36
EZ
625To install the international fonts, chdir to the intlfonts-X.Y
626directory created when you unpacked the intlfonts distribution (X.Y is
627the version number of the fonts' distribution), and type the following
628command:
629
630 make bdf INSTALLDIR=..
631
632After Make finishes, you may remove the directory intlfonts-X.Y; the
633fonts are installed into the fonts/bdf subdirectory of the top-level
634Emacs directory, and that is where Emacs will look for them by
635default.
636
db50afc0
RS
637Building Emacs creates executable files in the src and lib-src
638directories. Installing Emacs on MSDOS moves these executables to a
639sibling directory called bin. For example, if you build in directory
640/emacs, installing moves the executables from /emacs/src and
641/emacs/lib-src to the directory /emacs/bin, so you can then delete the
642subdirectories /emacs/src and /emacs/lib-src if you wish. The only
1d173668
EZ
643subdirectories you need to keep are bin, lisp, etc and info. (If you
644installed Leim, keep the leim subdirectory, and if you installed
645intlfonts, keep the fonts directory and all its sibdirectories as well.)
646The bin subdirectory should be added to your PATH. The msdos
647subdirectory includes a PIF and an icon file for Emacs which you might
648find useful if you run Emacs under MS Windows.
db50afc0
RS
649
650Emacs on MSDOS finds the lisp, etc and info directories by looking in
651../lisp, ../etc and ../info, starting from the directory where the
652Emacs executable was run from. You can override this by setting the
e2726984
RS
653environment variables EMACSDATA (for the location of `etc' directory),
654EMACSLOADPATH (for the location of `lisp' directory) and INFOPATH (for
655the location of the `info' directory).
42db5687 656
eaa91904
RS
657MSDOG is a not a multitasking operating system, so Emacs features such
658as asynchronous subprocesses that depend on multitasking will not
659work. Synchronous subprocesses do work.
d536be4a 660
22609647
RS
661Version 2.0 of djgpp has two bugs that affect Emacs. We've included
662corrected versions of two files from djgpp in the msdos subdirectory:
663is_exec.c and sigaction.c. To work around the bugs, compile these
664files and link them into temacs. Djgpp version 2.01 have these bugs
665fixed, so upgrade if you can before building Emacs.