comparison nt/INSTALL @ 88155:d7ddb3e565de

sync with trunk
author Henrik Enberg <henrik.enberg@telia.com>
date Mon, 16 Jan 2006 00:03:54 +0000
parents 23a1cea22d13
children
comparison
equal deleted inserted replaced
88154:8ce476d3ba36 88155:d7ddb3e565de
1 Building and Installing Emacs 1 Building and Installing Emacs
2 on Windows NT/2000 and Windows 95/98/ME 2 on Windows NT/2K/XP and Windows 95/98/ME
3 3
4 Copyright (c) 2001 Free Software Foundation, Inc. 4 Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5 See the end of the file for copying permissions. 5 See the end of the file for copying permissions.
6 6
7 If you used WinZip to unpack the distribution, we suggest to 7 If you used WinZip to unpack the distribution, we suggest to
8 remove the files and unpack again with a different program! 8 remove the files and unpack again with a different program!
9 WinZip is known to create some subtle and hard to debug problems, 9 WinZip is known to create some subtle and hard to debug problems,
10 such as converting files to DOS CR-LF format, not creating empty 10 such as converting files to DOS CR-LF format, not creating empty
11 directories, etc. We suggest to use djtarnt.exe from the GNU FTP 11 directories, etc. We suggest to use djtarnt.exe from the GNU FTP
12 site. 12 site.
13 13
14 If you are building out of CVS, then some files in this directory
15 (.bat files, nmake.defs and makefile.w32-in) may need the line-ends
16 fixing first. The easiest way to do this and avoid future conflicts
17 is to run the following command in this (emacs/nt) directory:
18
19 cvs update -kb
20
21 Alternatively, use programs that convert end-of-line format, such as
22 dos2unix and unix2dos available from GnuWin32 or dtou and utod from
23 the DJGPP project.
24
25 In addition to this file, you should also read INSTALL.CVS in the
26 parent directory, and make sure that you have a version of
27 "touch.exe" in your path, and that it will create files that do not
28 yet exist.
29
14 To compile Emacs, you will need either Microsoft Visual C++ 2.0 or 30 To compile Emacs, you will need either Microsoft Visual C++ 2.0 or
15 later and nmake, or a Windows port of GCC 2.95 or later with Mingw 31 later and nmake, or a Windows port of GCC 2.95 or later with MinGW
16 and W32 API support and a port of GNU make. You can use the Cygwin 32 and W32 API support and a port of GNU Make. You can use the Cygwin
17 ports of GCC, but Emacs requires the Mingw headers and libraries to 33 ports of GCC, but Emacs requires the MinGW headers and libraries to
18 build (latest versions of the Cygwin toolkit, at least since v1.3.3, 34 build (latest versions of the Cygwin toolkit, at least since v1.3.3,
19 include the MinGW headers and libraries as an integral part). 35 include the MinGW headers and libraries as an integral part).
20 36
21 If you build Emacs on Windows 9X or ME, not on Windows 2000 or 37 If you use the MinGW port of GCC and GNU Make to build Emacs, there
22 Windows NT, we suggest to install the Cygwin port of Bash. 38 are some compatibility issues wrt Make and the shell that is run by
23 39 Make, either the standard COMMAND.COM/CMD.EXE supplied with Windows
24 Please see http://www.mingw.org for pointers to GCC/Mingw binaries. 40 or sh.exe., a port of a Unixy shell. For reference, here is a list
25 41 of which builds of GNU Make are known to work or not, and whether
26 For reference, here is a list of which builds of GNU make are known 42 they work in the presence and/or absence of sh.exe, the Cygwin port
27 to work or not, and whether they work in the presence and/or absence 43 of Bash. Note that any version of Make that is compiled with Cygwin
28 of sh.exe, the Cygwin port of Bash. Note that any version of make 44 will only work with Cygwin tools, due to the use of cygwin style
29 that is compiled with Cygwin will only work with Cygwin tools, due to 45 paths. This means Cygwin Make is unsuitable for building parts of
30 the use of cygwin style paths. This means Cygwin make is unsuitable 46 Emacs that need to invoke Emacs itself (leim and "make bootstrap",
31 for building parts of Emacs that need to invoke Emacs itself (leim and 47 for example). Also see the Trouble-shooting section below if you
32 "make bootstrap", for example). Also see the Trouble-shooting section 48 decide to go ahead and use Cygwin make.
33 below if you decide to go ahead and use Cygwin make.
34 49
35 In addition, using 4NT as your shell is known to fail the build process, 50 In addition, using 4NT as your shell is known to fail the build process,
36 at least for 4NT version 3.01. Use cmd.exe, the default NT shell, 51 at least for 4NT version 3.01. Use CMD.EXE, the default Windows shell,
37 instead. 52 instead. MSYS sh.exe also appears to cause various problems. If you have
53 MSYS installed, try "make SHELL=cmd.exe" to force the use of cmd.exe
54 instead of sh.exe.
38 55
39 sh exists no sh 56 sh exists no sh
40 57
41 cygwin b20.1 make (3.75): fails[1, 5] fails[2, 5] 58 cygwin b20.1 make (3.75): fails[1, 5] fails[2, 5]
42 MSVC compiled gmake 3.77: okay okay 59 MSVC compiled gmake 3.77: okay okay
45 mingw32/gcc-2.92.2 make (3.77): okay okay[4] 62 mingw32/gcc-2.92.2 make (3.77): okay okay[4]
46 cygwin compiled gmake 3.77: fails[1, 5] fails[2, 5] 63 cygwin compiled gmake 3.77: fails[1, 5] fails[2, 5]
47 cygwin compiled make 3.78.1: fails[5] fails[2, 5] 64 cygwin compiled make 3.78.1: fails[5] fails[2, 5]
48 cygwin compiled make 3.79.1: fails[3, 5] fails[2?, 5] 65 cygwin compiled make 3.79.1: fails[3, 5] fails[2?, 5]
49 mingw32 compiled make 3.79.1: okay okay 66 mingw32 compiled make 3.79.1: okay okay
67 mingw32 compiled make 3.80: okay unknown[6]
50 68
51 Notes: 69 Notes:
52 70
53 [1] doesn't cope with makefiles with DOS line endings, so must mount 71 [1] doesn't cope with makefiles with DOS line endings, so must mount
54 emacs source with text!=binary. 72 emacs source with text!=binary.
56 [3] requires LC_MESSAGES support to build; cannot build with early 74 [3] requires LC_MESSAGES support to build; cannot build with early
57 versions of cygwin. 75 versions of cygwin.
58 [4] may fail on Windows 9X and Windows ME; if so, install Bash. 76 [4] may fail on Windows 9X and Windows ME; if so, install Bash.
59 [5] fails when building leim due to the use of cygwin style paths. 77 [5] fails when building leim due to the use of cygwin style paths.
60 May work if building emacs without leim. 78 May work if building emacs without leim.
79 [6] please report if you try this combination.
80
81 Other compilers may work, but specific reports from people that have
82 tried suggest that the Intel C compiler (for example) may produce an
83 Emacs executable with strange filename completion behaviour. Unless
84 you would like to assist by finding and fixing the cause of any bugs
85 like this, we recommend the use of the supported compilers mentioned
86 in the previous paragraph.
87
88 You will also need a copy of the Posix cp, rm and mv programs. These
89 and other useful Posix utilities can be obtained from one of several
90 projects:
91
92 * http://www.mingw.org/ ( MinGW )
93 * http://www.cygwin.com/ ( Cygwin )
94 * http://unxutils.sourceforge.net/ ( UnxUtils )
95 * http://gnuwin32.sourceforge.net/ ( GnuWin32 )
96
97 If you build Emacs on Windows 9X or ME, not on Windows 2K/XP or
98 Windows NT, we suggest to install the Cygwin port of Bash.
99
100 Additional instructions and help for building Emacs on Windows can be
101 found at the Emacs Wiki:
102
103 http://www.emacswiki.org/cgi-bin/wiki/WThirtyTwoInstallationKit
104
105 and at this URL:
106
107 http://ourcomments.org/Emacs/w32-build-emacs.html
61 108
62 * Configuring 109 * Configuring
63 110
64 Configuration of Emacs is now handled by running configure.bat in the 111 Configuration of Emacs is now handled by running configure.bat in the
65 nt subdirectory. It will detect which compiler you have available, 112 nt subdirectory. It will detect which compiler you have available,
73 120
74 N.B. It is normal to see a few error messages output while configure 121 N.B. It is normal to see a few error messages output while configure
75 is running, when gcc support is being tested. These cannot be 122 is running, when gcc support is being tested. These cannot be
76 surpressed because of limitations in the Windows 9x command.com shell. 123 surpressed because of limitations in the Windows 9x command.com shell.
77 124
125 You are encouraged to look at the file config.log which shows details
126 for failed tests, after configure.bat finishes. Any unexplained failure
127 should be investigated and perhaps reported as a bug (see the section
128 about reporting bugs in the file README in this directory and in the
129 Emacs manual).
130
78 * Optional image library support 131 * Optional image library support
79 132
80 To build Emacs with support for PNG images, the libpng and zlib 133 In addition to its "native" image formats (pbm and xbm), Emacs can
81 headers must be in the include path when the configure script is 134 handle other image types: xpm, tiff, gif, png and jpeg (postscript is
82 run. This can be setup using environment variables, or by 135 currently unsupported on Windows). To build Emacs with support for
83 specifying --cflags -I... options on the command-line to 136 them, the corresponding headers must be in the include path when the
84 configure.bat. Similarly, the jpeg-6b, libXpm, tiff and libungif 137 configure script is run. This can be setup using environment
85 headers need to be in the include path for support for those image 138 variables, or by specifying --cflags -I... options on the command-line
86 formats to work. The configure script will report whether it was 139 to configure.bat. The configure script will report whether it was
87 able to detect the headers. 140 able to detect the headers. If the results of this testing appear to be
88 141 incorrect, please look for details in the file config.log: it will show
89 To use the PNG support, zlib.dll (or zlibd.dll) and libpng.dll (or 142 the failed test programs and compiler error messages that should explain
90 libpng13.dll, or libpng13d.dll) must be on the PATH or in the same 143 what is wrong. (Usually, any such failures happen because some headers
91 directory as emacs.exe when Emacs is started. Similar instructions 144 are missing due to bad packaging of the image support libraries.)
92 apply for other image libraries. Note that tiff support depends on 145
93 the jpeg library. If you did not compile the libraries yourself, you 146 To use the external image support, the DLLs implementing the
94 must make sure that the jpeg library you install is the same one 147 functionality must be found when Emacs first needs them, either on the
95 that the tiff library was compiled against. 148 PATH, or in the same directory as emacs.exe. Failure to find a
149 library is not an error; the associated image format will simply be
150 unavailable. Note that once Emacs has determined that a library can
151 not be found, there's no way to force it to try again, other than
152 restarting. See the variable `image-library-alist' to configure the
153 expected names of the libraries.
154
155 Some image libraries have dependencies on one another, or on zlib.
156 For example, tiff support depends on the jpeg library. If you did not
157 compile the libraries yourself, you must make sure that any dependency
158 is in the PATH or otherwise accesible and that the binaries are
159 compatible (for example, that they were built with the same compiler).
160
161 Binaries for the image libraries (among many others) can be found at
162 the GnuWin32 project. These are built with MinGW, but they can be
163 used with both GCC/MinGW and MSVC builds of Emacs. See the info on
164 http://ourcomments.org/Emacs/EmacsW32.html for more details about
165 installing image support libraries.
96 166
97 * Building 167 * Building
98 168
99 After running configure, simply run the appropriate `make' program for 169 After running configure, simply run the appropriate `make' program for
100 your compiler to build Emacs. For MSVC, this is nmake; for GCC, it is 170 your compiler to build Emacs. For MSVC, this is nmake; for GCC, it is
125 to create a Start menu icon for Emacs. 195 to create a Start menu icon for Emacs.
126 196
127 * Trouble-shooting 197 * Trouble-shooting
128 198
129 The main problems that are likely to be encountered when building 199 The main problems that are likely to be encountered when building
130 Emacs stem from using an old version of GCC, or old Mingw or W32 API 200 Emacs stem from using an old version of GCC, or old MinGW or W32 API
131 headers. Additionally, cygwin ports of GNU make may require the Emacs 201 headers. Additionally, cygwin ports of GNU make may require the Emacs
132 source tree to be mounted with text!=binary, because the makefiles 202 source tree to be mounted with text!=binary, because the makefiles
133 generated by configure.bat necessarily use DOS line endings. Also, 203 generated by configure.bat necessarily use DOS line endings. Also,
134 cygwin ports of make must run in UNIX mode, either by specifying 204 cygwin ports of make must run in UNIX mode, either by specifying
135 --unix on the command line, or MAKE_MODE=UNIX in the environment. 205 --unix on the command line, or MAKE_MODE=UNIX in the environment.
144 releases of the W32 API headers from Anders Norlander contain a typo 214 releases of the W32 API headers from Anders Norlander contain a typo
145 in the definition of IMAGE_FIRST_SECTION in winnt.h, which 215 in the definition of IMAGE_FIRST_SECTION in winnt.h, which
146 addsection.c relies on. Versions of w32api-xxx.zip from at least 216 addsection.c relies on. Versions of w32api-xxx.zip from at least
147 1999-11-18 onwards are okay. 217 1999-11-18 onwards are okay.
148 218
219 When in doubt about correctness of what configure did, look at the file
220 config.log, which shows all the failed test programs and compiler
221 messages associated with the failures. If that doesn't give a clue,
222 please report the problems, together with the relevant fragments from
223 config.log, as bugs.
224
149 If configure succeeds, but make fails, install the Cygwin port of 225 If configure succeeds, but make fails, install the Cygwin port of
150 Bash, even if the table above indicates that Emacs should be able to 226 Bash, even if the table above indicates that Emacs should be able to
151 build without sh.exe. (Some versions of Windows shells are too dumb 227 build without sh.exe. (Some versions of Windows shells are too dumb
152 for Makefile's used by Emacs.) 228 for Makefile's used by Emacs.)
153 229
165 241
166 * Debugging 242 * Debugging
167 243
168 You should be able to debug Emacs using the debugger that is 244 You should be able to debug Emacs using the debugger that is
169 appropriate for the compiler you used, namely DevStudio or Windbg if 245 appropriate for the compiler you used, namely DevStudio or Windbg if
170 compiled with MSVC, or gdb if compiled with gcc. 246 compiled with MSVC, or GDB if compiled with GCC.
247
248 When Emacs aborts due to a fatal internal error, Emacs on Windows
249 pops up an Emacs Abort Dialog asking you whether you want to debug
250 Emacs or terminate it. If Emacs was built with MSVC, click YES
251 twice, and Windbg or the DevStudio debugger will start up
252 automatically. If Emacs was built with GCC, first start GDB and
253 attach it to the Emacs process with the "gdb -p EMACS-PID" command,
254 where EMACS-PID is the Emacs process ID (which you can see in the
255 Windows Task Manager), type the "continue" command inside GDB, and
256 only then click YES on the abort dialog. This will pass control to
257 the debugger, and you will be able to debug the cause of the fatal
258 error.
171 259
172 Emacs functions implemented in C use a naming convention that reflects 260 Emacs functions implemented in C use a naming convention that reflects
173 their names in lisp. The names of the C routines are the lisp names 261 their names in lisp. The names of the C routines are the lisp names
174 prefixed with 'F', and with dashes converted to underscores. For 262 prefixed with 'F', and with dashes converted to underscores. For
175 example, the function call-process is implemented in C by 263 example, the function call-process is implemented in C by
176 Fcall_process. Similarly, lisp variables are prefixed with 'V', again 264 Fcall_process. Similarly, lisp variables are prefixed with 'V', again
177 with dashes converted to underscores. These conventions enable you to 265 with dashes converted to underscores. These conventions enable you to
178 easily set breakpoints or examine familiar lisp variables by name. 266 easily set breakpoints or examine familiar lisp variables by name.
179 267
180 Since Emacs data is often in the form of a lisp object, and the 268 Since Emacs data is often in the form of a lisp object, and the
181 Lisp_Object type is difficult to examine manually in the MSVC 269 Lisp_Object type is difficult to examine manually in a debugger,
182 debugger, Emacs provides a helper routine called debug_print that 270 Emacs provides a helper routine called debug_print that prints out a
183 prints out a readable representation of a Lisp_Object. (If you are 271 readable representation of a Lisp_Object. If you are using GDB,
184 using gdb, there is a .gdbinit file in the src directory which 272 there is a .gdbinit file in the src directory which provides
185 provides definitions that are useful for examining lisp objects. The 273 definitions that are useful for examining lisp objects. Therefore,
186 following tips are mainly of interest when using MSVC.) The output 274 the following tips are mainly of interest when using MSVC.
187 from debug_print is sent to stderr, and to the debugger via the 275
188 OutputDebugString routine. The output sent to stderr should be 276 The output from debug_print is sent to stderr, and to the debugger
189 displayed in the console window that was opened when the emacs.exe 277 via the OutputDebugString routine. The output sent to stderr should
190 executable was started. The output sent to the debugger should be 278 be displayed in the console window that was opened when the
191 displayed in its "Debug" output window. 279 emacs.exe executable was started. The output sent to the debugger
280 should be displayed in its "Debug" output window.
192 281
193 When you are in the process of debugging Emacs and you would like to 282 When you are in the process of debugging Emacs and you would like to
194 examine the contents of a Lisp_Object variable, popup the QuickWatch 283 examine the contents of a Lisp_Object variable, popup the QuickWatch
195 window (QuickWatch has an eyeglass symbol on its button in the 284 window (QuickWatch has an eyeglass symbol on its button in the
196 toolbar). In the text field at the top of the window, enter 285 toolbar). In the text field at the top of the window, enter