; * doc/emacs/files.texi (Interlocking): Fix a non-portable @xref.
[emacs.git] / msdos / INSTALL
blob3707f436625f0b960a5dbb3cc75aae709fd0770d
1 GNU Emacs Installation Guide for the DJGPP (a.k.a. MS-DOS) port
3 Copyright (C) 1992, 1994, 1996-1997, 2000-2018 Free Software Foundation,
4 Inc.
5 See the end of the file for license conditions.
7 The DJGPP port of GNU Emacs builds and runs on all versions of
8 MS-Windows from version 3.X on, including Windows XP, Vista, and
9 Windows 7 (however, see below for issues with Windows Vista and 7).
10 Building on plain MS-DOS is supported only if long file names are
11 supported (e.g., with a specialized driver such as doslfn).
13 To build and install the DJGPP port, you need to have the DJGPP ports
14 of GCC (the GNU C compiler), GNU Make, rm, mv, cp, and sed, and
15 version 2.02 or later of DJGPP itself.  See the remarks in CONFIG.BAT
16 for more information about locations and versions.  The Emacs FAQ (see
17 info/efaq.info) includes pointers to Internet sites where you can find
18 the necessary utilities; search for "MS-DOS".  The configuration step
19 (see below) will test for these utilities and will refuse to continue
20 if any of them isn't found.
22 You should carefully choose the version of GCC you use to build Emacs,
23 because recent versions of GCC don't support building Emacs very well.
24 The main issue is the debug info: the DJGPP build of Emacs must use
25 the COFF debug info.  GCC support for COFF debug info was steadily
26 deteriorating since GCC 5, and GCC 8.1 officially stopped supporting
27 the -gcoff switch, which the Emacs build process needs.  We recommend
28 using GCC 3.4.X and Binutils 2.26; GDB 7.2 is capable to debug an
29 Emacs binary built by this combination.
31 Bootstrapping Emacs or recompiling Lisp files in the `lisp'
32 subdirectory using the various targets in the lisp/Makefile file
33 requires additional utilities: `find' (from Findutils), GNU `echo' and
34 `test' (from Sh-utils or Coreutils), `ls' and `chmod' (from Fileutils
35 or Coreutils), `grep' (from Grep), and a port of Bash.  However, you
36 should not normally need to run lisp/Makefile, as all the Lisp files
37 are distributed in byte-compiled form as well.  As for bootstrapping
38 itself, you will only need that if you check-out development sources
39 from the Emacs source repository.
41 Building the DJGPP version of Emacs is supported only on systems which
42 support long file names (e.g. Windows 9X or Windows XP).  You need to
43 unpack Emacs distribution in a way that doesn't truncate the original
44 long filenames to the DOS 8.3 namespace; the easiest way to do this is
45 to use djtar program which comes with DJGPP, since it will behave
46 consistently with the rest of DJGPP tools.  Do _not_ disable the DJGPP
47 long-file-name support (a.k.a. "LFN") while building Emacs.
49 (By the time you read this, you have already unpacked the Emacs
50 distribution, but if the explanations above imply that you should have
51 done it differently, it's safer to delete the directory tree created
52 by the unpacking program and unpack Emacs again, than to risk running
53 into strange problems during the build process.)
55 To unpack Emacs with djtar, type this command:
57     djtar -x emacs.tgz
59 (This assumes that the Emacs distribution is called `emacs.tgz' on
60 your system.)
62 When unpacking Emacs is done, a directory called `emacs-XX.YY' will be
63 created, where XX.YY is the Emacs version.
65 If you want to print international characters, install the intlfonts
66 distribution.  For this, create a directory called `fonts' under the
67 `emacs-XX.YY' top-level directory created by unpacking emacs.tgz,
68 chdir into the directory `emacs-XX.YY/fonts', and type this:
70     djtar -x intlfonts.tgz
72 To build and install Emacs, chdir to the `emacs-XX.YY' directory and
73 type these commands:
75     config msdos
76     make install
78 Running "config msdos" checks for several programs that are required
79 to configure and build Emacs; if one of those programs is not found,
80 CONFIG.BAT stops and prints an error message.
82 On Windows NT and Windows 2000/XP and later, running "config msdos"
83 might print an error message like "VDM has been already loaded".  This
84 is because those systems have a program called `redir.exe' which is
85 incompatible with a program by the same name supplied with DJGPP,
86 which is used by config.bat.  To resolve this, move the DJGPP's `bin'
87 subdirectory to the front of your PATH environment variable.
89 Windows Vista and later has several bugs in its DPMI server related to
90 memory allocation: it fails DPMI resize memory block function, and it
91 arbitrarily limits the default amount of DPMI memory to 32MB.  To work
92 around these bugs, first configure Emacs to use the `malloc' function
93 from the DJGPP library.  To this end, run CONFIG.BAT with the
94 "--with-system-malloc" option:
96     config --with-system-malloc msdos
97     make install
99 In addition, for Windows Vista you'll need to install Service Pack 1
100 (SP1) or later and enlarge its DPMI memory limit by setting the value
101 of this Registry key:
103   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Wow\DpmiLimit
105 Create this key if it does not exist.  The value is a DWORD; setting
106 it to 536870912 should let Emacs use up to 512MB of memory.
108 If you have other problems, either building Emacs or running the
109 produced binary, look in the file etc/PROBLEMS for some known problems
110 related to the DJGPP port (search for "MS-DOS").
112 To install the international fonts, chdir to the intlfonts-X.Y
113 directory created when you unpacked the intlfonts distribution (X.Y is
114 the version number of the fonts' distribution), and type the following
115 command:
117     make bdf INSTALLDIR=..
119 After Make finishes, you may remove the directory intlfonts-X.Y; the
120 fonts are installed into the fonts/bdf subdirectory of the top-level
121 Emacs directory, and that is where Emacs will look for them by
122 default.
124 Building Emacs creates executable files in the src and lib-src
125 directories.  Installing the DJGPP port of Emacs moves these
126 executables to a sibling directory called bin.  For example, if you
127 build in directory C:/emacs, installing moves the executables from
128 C:/emacs/src and C:/emacs/lib-src to the directory C:/emacs/bin, so
129 you can then delete the subdirectories C:/emacs/src and
130 C:/emacs/lib-src if you wish.  The only subdirectories you need to
131 keep are bin, lisp, etc and info.  (If you installed intlfonts, keep
132 the fonts directory and all its subdirectories as well.)  The bin
133 subdirectory should be added to your PATH.  The msdos subdirectory
134 includes a PIF and an icon file for Emacs which you might find useful
135 if you run Emacs under MS Windows.
137 Emacs on MSDOS finds the lisp, etc and info directories by looking in
138 ../lisp, ../etc and ../info, starting from the directory where the
139 Emacs executable was run from.  You can override this by setting the
140 environment variables EMACSDATA (for the location of `etc' directory),
141 EMACSLOADPATH (for the location of `lisp' directory) and INFOPATH (for
142 the location of the `info' directory).
144 Emacs features which require asynchronous subprocesses that depend on
145 multitasking do not work in the DJGPP port.  Synchronous subprocesses
146 do work, so features such as compilation, grep, and Ispell run
147 synchronously, unlike on other platforms.
150 This file is part of GNU Emacs.
152 GNU Emacs is free software: you can redistribute it and/or modify
153 it under the terms of the GNU General Public License as published by
154 the Free Software Foundation, either version 3 of the License, or
155 (at your option) any later version.
157 GNU Emacs is distributed in the hope that it will be useful,
158 but WITHOUT ANY WARRANTY; without even the implied warranty of
159 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
160 GNU General Public License for more details.
162 You should have received a copy of the GNU General Public License
163 along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.