(Fxw_color_values): Return 3-element list. Doc fix.
[bpt/emacs.git] / msdos / INSTALL
CommitLineData
cafb9504
EZ
1GNU Emacs Installation Guide for the DJGPP (a.k.a. MS-DOS) port
2
3Copyright (C) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
f5d0ac07 42005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
cafb9504
EZ
5See the end of the file for license conditions.
6
7The DJGPP port of GNU Emacs builds and runs on plain DOS and also on
8all versions of MS-Windows from version 3.X on, including Windows XP
9and Vista.
10
11To build and install the DJGPP port, you need to have the DJGPP ports
12of GCC (the GNU C compiler), GNU Make, rm, mv, and sed. See the
13remarks in CONFIG.BAT for more information about locations and
14versions. The Emacs FAQ (see info/efaq) includes pointers to Internet
15sites where you can find the necessary utilities; search for "MS-DOS".
16The configuration step (see below) will test for these utilities and
17will refuse to continue if any of them isn't found.
18
71a69201
EZ
19Bootstrapping Emacs or recompiling Lisp files in the `lisp'
20subdirectory using the various targets in the lisp/Makefile file
21requires additional utilities: `find' (from Findutils), GNU `echo' and
22`test' (from Sh-utils), `ls' and `chmod' (from Fileutils), `grep'
23(from Grep), and a port of Bash. However, you should not normally
24need to run lisp/Makefile, as all the Lisp files are distributed in
25byte-compiled form as well. As for bootstrapping, you will only need
26that if you check-out development sources from the Emacs source
ead9233b
EZ
27repository. (Note: If you are checking out of CVS, use the -kb option
28of the `checkout' and `update' commands, to preserve the original
573794ef
EZ
29Unix-style EOL format of the files. If some files are converted to
30DOS EOL format by the default operation of CVS, the build might fail.)
cafb9504 31
ac97579c 32If you are building the DJGPP version of Emacs on a DOS-like system
cafb9504
EZ
33which supports long file names (e.g. Windows 9X or Windows XP), you
34need to make sure that long file names are handled consistently both
35when you unpack the distribution and compile it. If you intend to
36compile with DJGPP v2.0 or later, and long file names support is
37enabled (LFN=y in the environment), you need to unpack Emacs
38distribution in a way that doesn't truncate the original long
39filenames to the DOS 8.3 namespace; the easiest way to do this is to
40use djtar program which comes with DJGPP, since it will note the LFN
41setting and behave accordingly. You can build Emacs with LFN=n, if
42some of your tools don't support long file names: just ensure that LFN
43is set to `n' during both unpacking and compiling.
44
45(By the time you read this, you have already unpacked the Emacs
46distribution, but if the explanations above imply that you should have
47done it differently, it's safer to delete the directory tree created
48by the unpacking program and unpack Emacs again, than to risk running
573794ef 49into strange problems during the build process.)
cafb9504
EZ
50
51It is important to understand that the runtime support of long file
52names by the Emacs binary is NOT affected by the LFN setting during
53compilation; Emacs compiled with DJGPP v2.0 or later will always
54support long file names on Windows no matter what was the setting
55of LFN at compile time. However, if you compiled with LFN disabled
56and want to enable LFN support after Emacs was already built, you need
57to make sure that the support files in the lisp, etc and info
58directories are called by their original long names as found in the
59distribution. You can do this either by renaming the files manually,
60or by extracting them from the original distribution archive with
61djtar after you set LFN=y in the environment.
62
63To unpack Emacs with djtar, type this command:
64
65 djtar -x emacs.tgz
66
67(This assumes that the Emacs distribution is called `emacs.tgz' on
68your system.)
69
573794ef
EZ
70When unpacking Emacs is done, a directory called `emacs-XX.YY' will be
71created, where XX.YY is the Emacs version.
72
73On plain DOS, unpacking can complain about several directories and
74files in the `nextstep' subdirectory of the `emacs-XX.YY' top-level
75directory. This is because the names of these files overflow the
7667-character limit on the file-name length imposed by DOS filesystems.
77When prompted by `djtar' for a different name for these files, just
78press [Enter] to skip them: they are not needed for the DJGPP build.
79
cafb9504
EZ
80If you want to print international characters, install the intlfonts
81distribution. For this, create a directory called `fonts' under the
573794ef
EZ
82`emacs-XX.YY' top-level directory created by unpacking emacs.tgz,
83chdir into the directory `emacs-XX.YY/fonts', and type this:
cafb9504
EZ
84
85 djtar -x intlfonts.tgz
86
573794ef
EZ
87To build and install Emacs, chdir to the `emacs-XX.YY' directory and
88type these commands:
cafb9504
EZ
89
90 config msdos
91 make install
92
93Running "config msdos" checks for several programs that are required
94to configure and build Emacs; if one of those programs is not found,
95CONFIG.BAT stops and prints an error message. If you have DJGPP
96version 2.0 or 2.01, it will complain about a program called
97DJECHO.EXE. These old versions of DJGPP shipped that program under
98the name ECHO.EXE, so you can simply copy ECHO.EXE to DJECHO.EXE and
99rerun CONFIG.BAT. If you have neither ECHO.EXE nor DJECHO.EXE, you
100should be able to find them in your djdevNNN.zip archive (where NNN is
101the DJGPP version number).
102
103On Windows NT, Windows 2000/XP/Vista, running "config msdos" might
104print an error message like "VDM has been already loaded". This is
105because those systems have a program called `redir.exe' which is
106incompatible with a program by the same name supplied with DJGPP,
107which is used by config.bat. To resolve this, move the DJGPP's `bin'
108subdirectory to the front of your PATH environment variable.
109
bd448b7a
EZ
110Windows Vista has several bugs in its DPMI server related to memory
111allocation: it fails DPMI resize memory block function, and it
112arbitrarily limits the default amount of DPMI memory to 32MB. To work
113around these bugs, first configure Emacs to use the `malloc' function
114from the DJGPP library. To this end, run CONFIG.BAT with the
115"--with-system-malloc" option:
116
117 config --with-system-malloc msdos
118 make install
119
120In addition, you'll need to install Service Pack 1 (SP1) or later to
121Windows Vista and enlarge its DPMI memory limit by setting the value
122of this Registry key:
123
124 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Wow\DpmiLimit
125
126Create this key if it does not exist. The value is a DWORD; setting
127it to 536870912 should let Emacs use up to 512MB of memory.
128
d7d1c408
EZ
129If you have other problems, either building Emacs or running the
130produced binary, look in the file etc/PROBLEMS for some known problems
131related to the DJGPP port (search for "MS-DOS").
132
cafb9504
EZ
133To install the international fonts, chdir to the intlfonts-X.Y
134directory created when you unpacked the intlfonts distribution (X.Y is
135the version number of the fonts' distribution), and type the following
136command:
137
138 make bdf INSTALLDIR=..
139
140After Make finishes, you may remove the directory intlfonts-X.Y; the
141fonts are installed into the fonts/bdf subdirectory of the top-level
142Emacs directory, and that is where Emacs will look for them by
143default.
144
145Building Emacs creates executable files in the src and lib-src
146directories. Installing the DJGPP port of Emacs moves these
147executables to a sibling directory called bin. For example, if you
148build in directory C:/emacs, installing moves the executables from
149C:/emacs/src and C:/emacs/lib-src to the directory C:/emacs/bin, so
150you can then delete the subdirectories C:/emacs/src and
151C:/emacs/lib-src if you wish. The only subdirectories you need to
152keep are bin, lisp, etc and info. (If you installed intlfonts, keep
153the fonts directory and all its subdirectories as well.) The bin
154subdirectory should be added to your PATH. The msdos subdirectory
155includes a PIF and an icon file for Emacs which you might find useful
156if you run Emacs under MS Windows.
157
158Emacs on MSDOS finds the lisp, etc and info directories by looking in
159../lisp, ../etc and ../info, starting from the directory where the
160Emacs executable was run from. You can override this by setting the
161environment variables EMACSDATA (for the location of `etc' directory),
162EMACSLOADPATH (for the location of `lisp' directory) and INFOPATH (for
163the location of the `info' directory).
164
165Emacs features which require asynchronous subprocesses that depend on
166multitasking do not work in the DJGPP port. Synchronous subprocesses
167do work, so features such as compilation and grep run synchronously,
168unlike opn other platforms.
169
170Version 2.0 of djgpp has two bugs that affect Emacs. We've included
171corrected versions of two files from djgpp in the msdos subdirectory:
172is_exec.c and sigaction.c. To work around the bugs, compile these
173files and link them into temacs. Djgpp versions 2.01 and later have
174these bugs fixed, so upgrade if you can before building Emacs.
175
176\f
177This file is part of GNU Emacs.
178
179GNU Emacs is free software: you can redistribute it and/or modify
180it under the terms of the GNU General Public License as published by
181the Free Software Foundation, either version 3 of the License, or
182(at your option) any later version.
183
184GNU Emacs is distributed in the hope that it will be useful,
185but WITHOUT ANY WARRANTY; without even the implied warranty of
186MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
187GNU General Public License for more details.
188
189You should have received a copy of the GNU General Public License
190along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.