Mercurial > emacs
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 |