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