* etags.c (just_read_file): Reset lineno and charno on entry.
[bpt/emacs.git] / INSTALL
CommitLineData
a0e671c7 1GNU Emacs Installation Guide
eaa91904 2Copyright (c) 1992, 1994 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
18BUILDING AND INSTALLATION:
42db5687 19(This is for a Unix or Unix-like system. For MSDOS, see below;
6664b4f9 20search for MSDOG. For Windows NT, see the file nt/INSTALL.)
a0e671c7
JB
21
221) Make sure your system has enough swapping space allocated to handle
23a program whose pure code is 900k bytes and whose data area is at
24least 400k and can reach 8Mb or more. If the swapping space is
25insufficient, you will get an error in the command `temacs -batch -l
bde335e3 26loadup dump', found in `./src/Makefile.in', or possibly when
42db5687 27running the final dumped Emacs.
a0e671c7 28
2d475b5f
KH
29Building Emacs requires about 70 Mb of disk space (including the Emacs
30sources). Once installed, Emacs occupies about 35 Mb in the file
42db5687
RS
31system where it is installed; this includes the executable files, Lisp
32libraries, miscellaneous data files, and on-line documentation. If
33the building and installation take place in different directories,
2d475b5f 34then the installation procedure momentarily requires 70+35 Mb.
a0e671c7
JB
35
362) Consult `./etc/MACHINES' to see what configuration name you should
f40423fa 37give to the `configure' program. That file offers hints for
a0e671c7
JB
38getting around some possible installation problems.
39
403) In the top directory of the Emacs distribution, run the program
41`configure' as follows:
42
43 ./configure CONFIGURATION-NAME [--OPTION[=VALUE]] ...
44
45The CONFIGURATION-NAME argument should be a configuration name given
46in `./etc/MACHINES'. If omitted, `configure' will try to guess your
f40423fa
DM
47system type; if it cannot, you must find the appropriate configuration
48name in `./etc/MACHINES' and specify it explicitly.
a0e671c7 49
f40423fa
DM
50If you don't want X support, specify `--with-x=no'. If you omit this
51option, `configure' will try to figure out for itself whether your
52system has X, and arrange to use it if present.
a0e671c7
JB
53
54The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build
55process where the compiler should look for the include files and
f40423fa
DM
56object libraries used with the X Window System. Normally, `configure'
57is able to find them; these options are necessary if you have your X
763b1847
KH
58Window System files installed in unusual places. These options also
59accept a list of directories, separated with colons.
a0e671c7 60
f40423fa
DM
61To get more attractive menus, you can specify an X toolkit when you
62configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where
63TOOLKIT is `athena' or `motif' (`yes' and `lucid' are synonyms for
64`athena'). On some systems, it does not work to use a toolkit with
65shared libraries.
a0e671c7
JB
66
67The `--with-gcc' option specifies that the build process should
68compile Emacs using GCC. If you don't want to use GCC, specify
f40423fa
DM
69`--with-gcc=no'. If you omit this option, `configure' will search
70for GCC in your path, and use it if present.
a0e671c7 71
f40423fa
DM
72You can build Emacs for several different machine types from a single
73source directory. To do this, you must use a version of `make' that
74supports the `VPATH' variable, such as GNU `make'. Make separate
75build directories for the different configuration types, and in each
76one, run the Emacs `configure' script. `configure' looks for the
77Emacs source code in the directory that `configure' is in.
42db5687 78
a0e671c7
JB
79The `--prefix=PREFIXDIR' option specifies where the installation process
80should put emacs and its data files. This defaults to `/usr/local'.
81- Emacs (and the other utilities users run) go in PREFIXDIR/bin
82 (unless the `--exec-prefix' option says otherwise).
f40423fa
DM
83- The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
84 (where VERSION is the version number of Emacs, like `19.27').
a0e671c7 85- The architecture-dependent files go in
f40423fa 86 PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION
a0e671c7
JB
87 (where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2),
88 unless the `--exec-prefix' option says otherwise.
89
90The `--exec-prefix=EXECDIR' option allows you to specify a separate
91portion of the directory tree for installing architecture-specific
92files, like executables and utility programs. If specified,
93- Emacs (and the other utilities users run) go in EXECDIR/bin, and
94- The architecture-dependent files go in
f40423fa 95 EXECDIR/libexec/emacs/VERSION/CONFIGURATION.
a0e671c7
JB
96EXECDIR/bin should be a directory that is normally in users' PATHs.
97
98For example, the command
99
100 ./configure mips-dec-ultrix --with-x11
101
102configures Emacs to build for a DECstation running Ultrix, with
103support for the X11 window system.
104
f40423fa 105`configure' doesn't do any compilation or installation
a0e671c7 106itself. It just creates the files that influence those things:
908477d9
DM
107`./Makefile', `lib-src/Makefile', `oldXMenu/Makefile',
108`lwlib/Makefile', `src/Makefile', and `./src/config.h'. For details
109on exactly what it does, see the section called `CONFIGURATION BY
110HAND', below.
a0e671c7
JB
111
112When it is done, `configure' prints a description of what it did and
f40423fa
DM
113creates a shell script `config.status' which, when run, recreates the
114same configuration. If `configure' exits with an error after
115disturbing the status quo, it removes `config.status'. `configure'
116also creates a file `config.cache' that saves the results of its tests
117to make reconfiguring faster, and a file `config.log' containing compiler
118output (useful mainly for debugging `configure'). You can give
119`configure' the option `--cache-file=FILE' to use the results of the
120tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to
121disable caching, for debugging `configure'.
a0e671c7
JB
122
123The work of `configure' can be done by editing various files in the
124distribution, but using `configure' is supposed to be simpler. See
125the section called "CONFIGURATION BY HAND" below if you want to do the
126configuration yourself.
127
1284) Look at `./lisp/paths.el'; if some of those values are not right
0b60f47d
KH
129for your system, set up the file `./lisp/site-init.el' with Emacs
130Lisp code to override them; it is not a good idea to edit paths.el
a0e671c7
JB
131itself. YOU MUST USE THE LISP FUNCTION `setq' TO ASSIGN VALUES,
132rather than `defvar', as used by `./lisp/paths.el'. For example,
133
134 (setq news-inews-program "/usr/bin/inews")
135
136is how you would override the default value of the variable
137news-inews-program (which is "/usr/local/inews").
138
35b12ec0
RS
139Before you override a variable this way, *look at the value* that the
140variable gets by default! Make sure you know what kind of value the
141variable should have. If you don't pay attention to what you are
142doing, you'll make a mistake.
143
42db5687
RS
1445) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
145Lisp code you want Emacs to load before it is dumped out. Use
146site-load.el for additional libraries if you arrange for their
147documentation strings to be in the etc/DOC file (see
bde335e3 148src/Makefile.in if you wish to figure out how to do that). For all
eaa91904 149else, use site-init.el.
a0e671c7 150
0d75540d
RS
151If you set load-path to a different value in site-init.el or
152site-load.el, Emacs will use *precisely* that value when it starts up
153again. If you do this, you are on your own!
d07ee75a 154
a0e671c7
JB
155Note that, on some systems, the code you place in site-init.el must
156not use expand-file-name or any other function which may look
157something up in the system's password and user information database.
158See `./PROBLEMS' for more details on which systems this affects.
159
eaa91904
RS
160The `site-*.el' files are nonexistent in the distribution. You do not
161need to create them if you have nothing to put in them.
a0e671c7
JB
162
1636) Refer to the file `./etc/TERMS' for information on fields you may
164wish to add to various termcap entries. The files `./etc/termcap.ucb'
165and `./etc/termcap.dat' may already contain appropriately-modified
166entries.
167
1687) Run `make' in the top directory of the Emacs distribution to finish
c5f48ce3
RS
169building Emacs in the standard way. The final executable file is
170named `src/emacs'. You can execute this file "in place" without
171copying it, if you wish; then it automatically uses the sibling
172directories ../lisp, ../lib-src, ../info.
173
174Or you can "install" the executable and the other Emacs into their
175installed locations, with `make install'. By default, Emacs's files
176are installed in the following directories:
a0e671c7
JB
177
178`/usr/local/bin' holds the executable programs users normally run -
c9da8016
RS
179 `emacs', `etags', `ctags', `b2m', `emacsclient',
180 and `rcs-checkin'.
a0e671c7 181
f40423fa 182`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
a0e671c7 183 `VERSION' stands for the number of the Emacs version
f40423fa 184 you are installing, like `18.59' or `19.27'. Since the
cdb49480 185 Lisp library changes from one version of Emacs to
a0e671c7
JB
186 another, including the version number in the path
187 allows you to have several versions of Emacs installed
cdb49480
RS
188 at the same time; in particular, you don't have to
189 make Emacs unavailable while installing a new version.
a0e671c7 190
cdb49480
RS
191`/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
192 files installed for Emacs version VERSION only.
193
194`/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
195 files installed for all Emacs versions.
196
197 When Emacs is installed, it searches for its Lisp files
198 in `/usr/local/share/emacs/VERSION/site-lisp', then in
199 `/usr/local/share/emacs/site-lisp', and finally in
200 `/usr/local/share/emacs/VERSION/lisp'.
a0e671c7 201
f40423fa 202`/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
a0e671c7
JB
203 file, the `yow' database, and other
204 architecture-independent files Emacs might need while
205 running. VERSION is as specified for `.../lisp'.
206
f40423fa 207`/usr/local/com/emacs/lock' contains files indicating who is editing
a0e671c7
JB
208 what, so Emacs can detect editing clashes between
209 users.
210
f40423fa 211`/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
a0e671c7
JB
212 programs used by Emacs that users are not expected to
213 run themselves.
214 `VERSION' is the number of the Emacs version you are
215 installing, and `CONFIGURATION-NAME' is the argument
216 you gave to the `configure' program to identify the
217 architecture and operating system of your machine,
218 like `mips-dec-ultrix' or `sparc-sun-sunos'. Since
219 these files are specific to the version of Emacs,
220 operating system, and architecture in use, including
221 the configuration name in the path allows you to have
222 several versions of Emacs for any mix of machines and
223 operating systems installed at the same time; this is
224 useful for sites at which different kinds of machines
225 share the file system Emacs is installed on.
226
227`/usr/local/info' holds the on-line documentation for Emacs, known as
228 "info files". Many other GNU programs are documented
229 using info files as well, so this directory stands
230 apart from the other, Emacs-specific directories.
231
232`/usr/local/man/man1' holds the man pages for the programs installed
233 in `/usr/local/bin'.
234
235If these directories are not what you want, you can specify where to
236install Emacs's libraries and data files or where Emacs should search
cdb49480 237for its Lisp files by giving values for `make' variables as part of
a0e671c7
JB
238the command. See the section below called `MAKE VARIABLES' for more
239information on this.
240
2418) Check the file `dir' in your site's info directory (usually
242/usr/local/info) to make sure that it has a menu entry for the Emacs
243info files.
244
42db5687 2459) If your system uses lock files to interlock access to mailer inbox files,
f40423fa 246then you might need to make the movemail program setuid or setgid
42db5687
RS
247to enable it to write the lock files. We believe this is safe.
248
2d475b5f
KH
24910) You are done! You can remove executables and object files from
250the build directory by typing `make clean'. To also remove the files
251that `configure' created (so you can compile Emacs for a different
252configuration), type `make distclean'.
253
a0e671c7
JB
254
255
256MAKE VARIABLES
257
258You can change where the build process installs Emacs and its data
259files by specifying values for `make' variables as part of the `make'
260command line. For example, if you type
261
262 make install bindir=/usr/local/gnubin
263
264the `bindir=/usr/local/gnubin' argument indicates that the Emacs
265executable files should go in `/usr/local/gnubin', not
266`/usr/local/bin'.
267
268Here is a complete list of the variables you may want to set.
269
270`bindir' indicates where to put executable programs that users can
271 run. This defaults to /usr/local/bin.
272
273`datadir' indicates where to put the architecture-independent
274 read-only data files that Emacs refers to while it runs; it
908477d9 275 defaults to /usr/local/share. We create the following
a0e671c7 276 subdirectories under `datadir':
cdb49480 277 - `emacs/VERSION/lisp', containing the Emacs Lisp library, and
a0e671c7
JB
278 - `emacs/VERSION/etc', containing the Emacs tutorial, the DOC
279 file, and the `yow' database.
280 `VERSION' is the number of the Emacs version you are installing,
281 like `18.59' or `19.0'. Since these files vary from one version
282 of Emacs to another, including the version number in the path
283 allows you to have several versions of Emacs installed at the
284 same time; this means that you don't have to make Emacs
285 unavailable while installing a new version.
286
908477d9 287`sharedstatedir' indicates where to put architecture-independent data files
a0e671c7 288 that Emacs modifies while it runs; it defaults to
908477d9
DM
289 /usr/local/com. We create the following
290 subdirectories under `sharedstatedir':
a0e671c7
JB
291 - `emacs/lock', containing files indicating who is editing
292 what, so Emacs can detect editing clashes between
293 users.
294
908477d9
DM
295`libexecdir' indicates where to put architecture-specific data files that
296 Emacs refers to as it runs; it defaults to `/usr/local/libexec'.
297 We create the following subdirectories under `libexecdir':
a0e671c7
JB
298 - `emacs/VERSION/CONFIGURATION-NAME', containing executable
299 programs used by Emacs that users are not expected to run
300 themselves.
301 `VERSION' is the number of the Emacs version you are installing,
302 and `CONFIGURATION-NAME' is the argument you gave to the
303 `configure' program to identify the architecture and operating
304 system of your machine, like `mips-dec-ultrix' or
305 `sparc-sun-sunos'. Since these files are specific to the version
306 of Emacs, operating system, and architecture in use, including
307 the configuration name in the path allows you to have several
308 versions of Emacs for any mix of machines and operating systems
309 installed at the same time; this is useful for sites at which
310 different kinds of machines share the file system Emacs is
311 installed on.
312
313`infodir' indicates where to put the info files distributed with
314 Emacs; it defaults to `/usr/local/info'.
315
316`mandir' indicates where to put the man pages for Emacs and its
317 utilities (like `etags'); it defaults to
318 `/usr/local/man/man1'.
319
320`manext' gives the extension the man pages should be installed with.
321 It should contain a period, followed by the appropriate
322 digit. It defaults to `.1'. For example given the default
323 values for `mandir' and `manext', the Emacs man page would be
324 installed as `/usr/local/man/man1/emacs.1'.
325
326`prefix' doesn't give a path for any specific part of Emacs; instead,
327 its value is used to determine the defaults for all the
328 architecture-independent path variables - `datadir',
908477d9 329 `sharedstatedir', `infodir', and `mandir'. Its default value is
a0e671c7
JB
330 `/usr/local'; the other variables add on `lib' or `man' to it
331 by default.
332
333 For example, suppose your site generally places GNU software
334 under `/usr/users/software/gnusoft' instead of `/usr/local'.
335 By including
336 `prefix=/usr/users/software/gnusoft'
337 in the arguments to `make', you can instruct the build process
338 to place all of the Emacs data files in the appropriate
339 directories under that path.
340
341`exec_prefix' serves the same purpose as `prefix', but instead
342 determines the default values for the architecture-dependent
908477d9 343 path variables - `bindir' and `libexecdir'.
a0e671c7
JB
344
345The above variables serve analogous purposes in the makefiles for all
346GNU software; here are some variables specific to Emacs.
347
cdb49480 348`lispdir' indicates where Emacs installs and expects its Lisp library.
2d475b5f
KH
349 Its default value, based on `datadir' (see above), is
350 `/usr/local/share/emacs/VERSION/lisp' (where `VERSION' is as
a0e671c7
JB
351 described above).
352
cdb49480 353`locallisppath' indicates where Emacs should search for Lisp files
a0e671c7
JB
354 specific to your site. It should be a colon-separated list of
355 directories; Emacs checks them in order before checking
cdb49480
RS
356 `lispdir'. Its default value, based on `datadir' (see above), is
357 `/usr/local/share/emacs/VERSION/site-lisp:/usr/local/share/emacs/site-lisp'.
a0e671c7
JB
358
359`lisppath' is the complete list of directories Emacs should search for
cdb49480
RS
360 its Lisp files; its default value is the concatenation of
361 `locallisppath' and `lispdir'. It should be a colon-separated
a0e671c7
JB
362 list of directories; Emacs checks them in the order they
363 appear.
364
365`etcdir' indicates where Emacs should install and expect the rest of
366 its architecture-independent data, like the tutorial, DOC
367 file, and yow database. Its default value, based on `datadir'
2d475b5f 368 (which see), is `/usr/local/share/emacs/VERSION/etc'.
a0e671c7
JB
369
370`lockdir' indicates the directory where Emacs keeps track of its
2d475b5f
KH
371 locking information. Its default value, based on
372 `sharedstatedir' (which see), is `/usr/local/com/emacs/lock'.
a0e671c7 373
2d475b5f
KH
374`archlibdir' indicates where Emacs installs and expects the executable
375 files and other architecture-dependent data it uses while
376 running. Its default value, based on `libexecdir' (which
377 see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
a0e671c7
JB
378 (where VERSION and CONFIGURATION-NAME are as described above).
379
380Remember that you must specify any variable values you need each time
381you run `make' in the top directory. If you run `make' once to build
382emacs, test it, and then run `make' again to install the files, you
383must provide the same variable settings each time. To make the
384settings persist, you can edit them into the `Makefile' in the top
385directory, but be aware that running the `configure' program erases
386`Makefile' and rebuilds it from `Makefile.in'.
387
388The top-level Makefile stores the variable settings it used in the
389Makefiles for the subdirectories, so you don't have to specify them
390when running make in the subdirectories.
391
392
393CONFIGURATION BY HAND
394
c9da8016
RS
395Instead of running the `configure' program, you have to perform the
396following steps.
a0e671c7 397
bde335e3 3981) Copy `./src/config.in' to `./src/config.h'.
a0e671c7
JB
399
4002) Consult `./etc/MACHINES' to see what configuration name you should
401use for your system. Look at the code of the `configure' script to
402see which operating system and architecture description files from
403`src/s' and `src/m' should be used for that configuration name. Edit
404`src/config.h', and change the two `#include' directives to include
405the appropriate system and architecture description files.
406
4072) Edit `./src/config.h' to set the right options for your system. If
408you need to override any of the definitions in the s/*.h and m/*.h
409files for your system and machine, do so by editing config.h, not by
410changing the s/*.h and m/*.h files. Occasionally you may need to
411redefine parameters used in `./lib-src/movemail.c'.
412
c9da8016 4133) Create src/Makefile and lib-src/Makefile from the corresponding
bde335e3 414`Makefile.in' files. First copy `Makefile.in' to `Makefile.c',
94684a2e 415then edit in appropriate substitutions for the @...@ constructs,
c9da8016
RS
416and then copy the shell commands near the end of `configure'
417that run cpp to construct `Makefile'.
a0e671c7 418
c9da8016
RS
4194) Create `Makefile' files in various other directories
420from the corresponding `Makefile.in' files. This isn't so hard,
421just a matter of substitution.
a0e671c7 422
a0e671c7 423The `configure' script is built from `configure.in' by the `autoconf'
f40423fa 424program. You need version 2.0 or newer of `autoconf' to rebuild `configure'.
a0e671c7
JB
425
426BUILDING GNU EMACS BY HAND
427
a4af02f3
RS
428Once Emacs is configured, running `make' in the top directory performs
429the following steps.
a0e671c7
JB
430
4311) Run `make src/paths.h' in the top directory. This produces
bde335e3 432`./src/paths.h' from the template file `./src/paths.in', changing
a0e671c7
JB
433the paths to the values specified in `./Makefile'.
434
c9da8016
RS
4352) Go to directory `./lib-src' and run `make'. This creates
436executables named `ctags' and `etags' and `wakeup' and `make-docfile'
437and `digest-doc' and `test-distrib'. And others.
a0e671c7 438
c9da8016
RS
4393) Go to directory `./src' and Run `make'. This refers to files in
440the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
a0e671c7
JB
441`../lib-src'.
442
443This creates a file `./src/emacs' which is the runnable Emacs,
c9da8016
RS
444which has another name that contains a version number.
445Each time you do this, that version number increments in the last place.
a0e671c7
JB
446
447It also creates a file in `./etc' whose name is `DOC' followed by the
448current Emacs version. This file contains documentation strings for
449all the functions in Emacs. Each time you run make to make a new
450emacs, a new DOC file with a new name is made. You must keep the DOC
451file for an Emacs version as long as you keep using that Emacs
452version.
453
454
455INSTALLATION BY HAND
456
a4af02f3
RS
457The steps below are done by running `make install' in the main
458directory of the Emacs distribution.
a0e671c7
JB
459
4601) Copy `./lisp' and its subdirectories, `./etc', and the executables
461in `./lib-src' to their final destinations, as selected in `./src/paths.h'.
462
463Strictly speaking, not all of the executables in `./lib-src' need be copied.
eaa91904 464- The programs `cvtmail', `emacsserver', `fakemail', `hexl',
c9da8016
RS
465 `movemail', `profile', `rcs2log', `timer', `vcdiff', `wakeup',
466 and `yow' are used by Emacs; they do need to be copied.
467- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
a0e671c7 468 are intended to be run by users; they are handled below.
3ae888e8 469- The programs `make-docfile' and `test-distrib' were
a0e671c7
JB
470 used in building Emacs, and are not needed any more.
471- The programs `digest-doc' and `sorted-doc' convert a `DOC' file into
472 a file for users to read. There is no important reason to move them.
473
4742) Copy the files in `./info' to the place specified in
475`./lisp/site-init.el' or `./lisp/paths.el'. Note that if the
476destination directory already contains a file named `dir', you
477probably don't want to replace it with the `dir' file in the Emacs
478distribution. Instead, you should make sure that the existing `dir'
479file contains an appropriate menu entry for the Emacs info.
480
4813) Create a directory for Emacs to use for clash detection, named as
482indicated by the PATH_LOCK macro in `./src/paths.h'.
483
4844) Copy `./src/emacs' to `/usr/local/bin', or to some other directory
485in users' search paths. `./src/emacs' has an alternate name
486`./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named
487`/usr/local/bin/emacs' pointing to that alternate name, as an easy way
488of installing different versions.
489
490You can delete `./src/temacs'.
491
4925) Copy the programs `b2m', `emacsclient', `ctags', `etags', and
c9da8016 493`rcs-checkin' from `./lib-src' to `/usr/local/bin'. These programs are
a0e671c7
JB
494intended for users to run.
495
4966) Copy the man pages in `./etc' for emacs, ctags, and etags into the
497appropriate man directories.
498
4997) The files in the `./src' subdirectory, except for `emacs', are not
c9da8016
RS
500used by Emacs once it is built. However, it is very desirable to keep
501the source on line for debugging.
a0e671c7
JB
502
503
504PROBLEMS
505
506See the file PROBLEMS in this directory for a list of various
507problems sometimes encountered, and what to do about them.
508
509
42db5687
RS
510Installation on MSDOG (a.k.a. MSDOS)
511
eaa91904 512To install on MSDOG, you need to have the GNU C compiler for MSDOG
713e8a93
RS
513(also known as djgpp version 1), GNU Make, rm, mv, chmod, and sed.
514Version 2 of djgpp (to be released soon) is not yet supported. See the
515remarks in config.bat for more information about locations and versions.
42db5687 516
87180dae 517Some users report that running Emacs 19.29 requires dpmi memory
0287f07c
RS
518management. We do not know why this is so, since 19.28 did not need
519it. If we find out what change introduced this requirement, we will
64add80c
RS
520try to eliminate it. It is possible that this problem happens only
521when there is not enough physical memory on the machine.
0287f07c 522
87180dae
RS
523You can find out if you have a dpmi host by running go32 (part of
524djgpp) without arguments; it will tell you if it uses dpmi memory.
525For more information about dpmi memory, consult the djgpp FAQ.
526
0287f07c
RS
527To build and install Emacs, type these commands:
528
529 config msdos
530 make install
42db5687 531
cbfc04e0
RS
532You may need to work around a type conflict between gmalloc.c and the
533header file djgppstd.h regarding declarations of memalign and valloc.
534Temporarily deleting those declarations from djgppstd.h while compiling
535Emacs or while compiling gmalloc.c should do it. We found out about this
536problem too late to include a more convenient fix--sorry.
537
eaa91904
RS
538To save disk space, Emacs is built with the idea that you will execute
539it from the same place in the file system where you built it. As the
540/usr/local/ subtree does not exist on most MSDOG systems, the
99ed771f
KH
541executables might be placed in /emacs/bin/, for instance, in which
542case there should also be /emacs/lisp, /emacs/info and /emacs/etc
543directories. In general, with the default path handling, the etc/,
544info/ and lisp/ directories are expected to exist in ../ relative to
545the directory containing the executing binary. This behaviour can be
546overridden by setting the HOME environment variable to the directory
547containing lisp/ etc.
42db5687 548
eaa91904
RS
549MSDOG is a not a multitasking operating system, so Emacs features such
550as asynchronous subprocesses that depend on multitasking will not
551work. Synchronous subprocesses do work.