Mercurial > emacs
annotate nt/INSTALL @ 62675:114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
(which contains building instructions for Windows). Reword image library
instructions and remove obsolete incompatibility information.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Tue, 24 May 2005 10:40:51 +0000 |
parents | 64443697a546 |
children | 850c9d934e12 |
rev | line source |
---|---|
25856 | 1 Building and Installing Emacs |
55896
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
2 on Windows NT/2K/XP and Windows 95/98/ME |
25856 | 3 |
62675
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
4 Copyright (c) 2001,2004,2005 Free Software Foundation, Inc. |
37710 | 5 See the end of the file for copying permissions. |
6 | |
39152 | 7 If you used WinZip to unpack the distribution, we suggest to |
8 remove the files and unpack again with a different program! | |
9 WinZip is known to create some subtle and hard to debug problems, | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49565
diff
changeset
|
10 such as converting files to DOS CR-LF format, not creating empty |
39152 | 11 directories, etc. We suggest to use djtarnt.exe from the GNU FTP |
12 site. | |
13 | |
52416
79fdcc780508
Add note about fixing line ends when building from CVS.
Jason Rumney <jasonr@gnu.org>
parents:
49871
diff
changeset
|
14 If you are building out of CVS, then some files in this directory |
79fdcc780508
Add note about fixing line ends when building from CVS.
Jason Rumney <jasonr@gnu.org>
parents:
49871
diff
changeset
|
15 (.bat files, nmake.defs and makefile.w32-in) may need the line-ends |
79fdcc780508
Add note about fixing line ends when building from CVS.
Jason Rumney <jasonr@gnu.org>
parents:
49871
diff
changeset
|
16 fixing first. The easiest way to do this and avoid future conflicts |
79fdcc780508
Add note about fixing line ends when building from CVS.
Jason Rumney <jasonr@gnu.org>
parents:
49871
diff
changeset
|
17 is to run the following command in this (emacs/nt) directory: |
79fdcc780508
Add note about fixing line ends when building from CVS.
Jason Rumney <jasonr@gnu.org>
parents:
49871
diff
changeset
|
18 cvs update -kb |
57565
5bab1954e91f
Added note to see INSTALL.CVS, and to make sure touch creates files.
Jason Rumney <jasonr@gnu.org>
parents:
55977
diff
changeset
|
19 In addition to this file, you should also read INSTALL.CVS in the |
5bab1954e91f
Added note to see INSTALL.CVS, and to make sure touch creates files.
Jason Rumney <jasonr@gnu.org>
parents:
55977
diff
changeset
|
20 parent directory, and make sure that you have a version of "touch.exe" |
5bab1954e91f
Added note to see INSTALL.CVS, and to make sure touch creates files.
Jason Rumney <jasonr@gnu.org>
parents:
55977
diff
changeset
|
21 in your path, and that it will create files that do not yet exist. |
52416
79fdcc780508
Add note about fixing line ends when building from CVS.
Jason Rumney <jasonr@gnu.org>
parents:
49871
diff
changeset
|
22 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
23 To compile Emacs, you will need either Microsoft Visual C++ 2.0 or |
62675
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
24 later and nmake, or a Windows port of GCC 2.95 or later with MinGW |
37885
0cd37e185384
Clarify that building with MSVC requires nmake.
Jason Rumney <jasonr@gnu.org>
parents:
37710
diff
changeset
|
25 and W32 API support and a port of GNU make. You can use the Cygwin |
62675
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
26 ports of GCC, but Emacs requires the MinGW headers and libraries to |
39462
7bc2236b1036
Update as per suggestions by Shayne Steele <steele@cs.fsu.edu>.
Eli Zaretskii <eliz@gnu.org>
parents:
39152
diff
changeset
|
27 build (latest versions of the Cygwin toolkit, at least since v1.3.3, |
7bc2236b1036
Update as per suggestions by Shayne Steele <steele@cs.fsu.edu>.
Eli Zaretskii <eliz@gnu.org>
parents:
39152
diff
changeset
|
28 include the MinGW headers and libraries as an integral part). |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
29 |
49871
4f204ad4bdf9
Added note about specific problem observed with the Intel compiler.
Jason Rumney <jasonr@gnu.org>
parents:
49600
diff
changeset
|
30 Other compilers may work, but specific reports from people that have |
4f204ad4bdf9
Added note about specific problem observed with the Intel compiler.
Jason Rumney <jasonr@gnu.org>
parents:
49600
diff
changeset
|
31 tried suggest that the Intel C compiler (for example) may produce an |
4f204ad4bdf9
Added note about specific problem observed with the Intel compiler.
Jason Rumney <jasonr@gnu.org>
parents:
49600
diff
changeset
|
32 Emacs executable with strange filename completion behaviour. Unless |
4f204ad4bdf9
Added note about specific problem observed with the Intel compiler.
Jason Rumney <jasonr@gnu.org>
parents:
49600
diff
changeset
|
33 you would like to assist by finding and fixing the cause of any bugs |
4f204ad4bdf9
Added note about specific problem observed with the Intel compiler.
Jason Rumney <jasonr@gnu.org>
parents:
49600
diff
changeset
|
34 like this, we recommend the use of the supported compilers mentioned |
4f204ad4bdf9
Added note about specific problem observed with the Intel compiler.
Jason Rumney <jasonr@gnu.org>
parents:
49600
diff
changeset
|
35 in the previous paragraph. |
4f204ad4bdf9
Added note about specific problem observed with the Intel compiler.
Jason Rumney <jasonr@gnu.org>
parents:
49600
diff
changeset
|
36 |
62675
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
37 You will also need a copy of the Posix cp, rm and mv programs. These |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
38 and other useful Posix utilities can be obtained from one of several |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
39 projects: |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
40 |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
41 * http://www.mingw.org/ ( MinGW ) |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
42 * http://www.cygwin.org/ ( Cygwin ) |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
43 * http://unxutils.sourceforge.net/ ( UnxUtils ) |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
44 * http://gnuwin32.sourceforge.net/ ( GnuWin32 ) |
57565
5bab1954e91f
Added note to see INSTALL.CVS, and to make sure touch creates files.
Jason Rumney <jasonr@gnu.org>
parents:
55977
diff
changeset
|
45 |
55896
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
46 If you build Emacs on Windows 9X or ME, not on Windows 2K/XP or |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
47 Windows NT, we suggest to install the Cygwin port of Bash. |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
48 |
62675
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
49 Additional instructions and help for building Emacs on Windows can be |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
50 found at the Emacs Wiki: |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
51 |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
52 http://www.emacswiki.org/cgi-bin/wiki/WThirtyTwoInstallationKit |
25856 | 53 |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
54 For reference, here is a list of which builds of GNU make are known |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
55 to work or not, and whether they work in the presence and/or absence |
41327
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
56 of sh.exe, the Cygwin port of Bash. Note that any version of make |
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
57 that is compiled with Cygwin will only work with Cygwin tools, due to |
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
58 the use of cygwin style paths. This means Cygwin make is unsuitable |
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
59 for building parts of Emacs that need to invoke Emacs itself (leim and |
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
60 "make bootstrap", for example). Also see the Trouble-shooting section |
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
61 below if you decide to go ahead and use Cygwin make. |
42901 | 62 |
63 In addition, using 4NT as your shell is known to fail the build process, | |
64 at least for 4NT version 3.01. Use cmd.exe, the default NT shell, | |
57697 | 65 instead. MSYS sh.exe also appears to cause various problems. If you have |
66 MSYS installed, try "make SHELL=cmd.exe" to force the use of cmd.exe | |
67 instead of sh.exe. | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49565
diff
changeset
|
68 |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
69 sh exists no sh |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
70 |
41327
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
71 cygwin b20.1 make (3.75): fails[1, 5] fails[2, 5] |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
72 MSVC compiled gmake 3.77: okay okay |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
73 MSVC compiled gmake 3.78.1: okay okay |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
74 MSVC compiled gmake 3.79.1: okay okay |
35814
70ef76f45876
Move note [4] to the no-sh column.
Eli Zaretskii <eliz@gnu.org>
parents:
35726
diff
changeset
|
75 mingw32/gcc-2.92.2 make (3.77): okay okay[4] |
41327
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
76 cygwin compiled gmake 3.77: fails[1, 5] fails[2, 5] |
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
77 cygwin compiled make 3.78.1: fails[5] fails[2, 5] |
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
78 cygwin compiled make 3.79.1: fails[3, 5] fails[2?, 5] |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49565
diff
changeset
|
79 mingw32 compiled make 3.79.1: okay okay |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
80 |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
81 Notes: |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
82 |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
83 [1] doesn't cope with makefiles with DOS line endings, so must mount |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
84 emacs source with text!=binary. |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
85 [2] fails when needs to invoke shell commands; okay invoking gcc etc. |
41327
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
86 [3] requires LC_MESSAGES support to build; cannot build with early |
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
87 versions of cygwin. |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
88 [4] may fail on Windows 9X and Windows ME; if so, install Bash. |
41327
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
89 [5] fails when building leim due to the use of cygwin style paths. |
f45165ce5cbc
Update table of versions of make that are suitable
Jason Rumney <jasonr@gnu.org>
parents:
39462
diff
changeset
|
90 May work if building emacs without leim. |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
91 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
92 * Configuring |
25856 | 93 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
94 Configuration of Emacs is now handled by running configure.bat in the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
95 nt subdirectory. It will detect which compiler you have available, |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
96 and generate makefiles accordingly. You can override the compiler |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
97 detection, and control optimization and debug settings, by specifying |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
98 options on the command line when invoking configure. |
25856 | 99 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
100 To configure Emacs to build with GCC or MSVC, whichever is available, |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
101 simply change to the nt subdirectory and run `configure' with no |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
102 options. To see what options are available, run `configure --help'. |
25856 | 103 |
31625
345a3f5a7193
Add note about expected error messages when configure
Andrew Innes <andrewi@gnu.org>
parents:
31083
diff
changeset
|
104 N.B. It is normal to see a few error messages output while configure |
345a3f5a7193
Add note about expected error messages when configure
Andrew Innes <andrewi@gnu.org>
parents:
31083
diff
changeset
|
105 is running, when gcc support is being tested. These cannot be |
345a3f5a7193
Add note about expected error messages when configure
Andrew Innes <andrewi@gnu.org>
parents:
31083
diff
changeset
|
106 surpressed because of limitations in the Windows 9x command.com shell. |
345a3f5a7193
Add note about expected error messages when configure
Andrew Innes <andrewi@gnu.org>
parents:
31083
diff
changeset
|
107 |
49451
c4911d7933ae
Added notes about PNG support.
Jason Rumney <jasonr@gnu.org>
parents:
42901
diff
changeset
|
108 * Optional image library support |
c4911d7933ae
Added notes about PNG support.
Jason Rumney <jasonr@gnu.org>
parents:
42901
diff
changeset
|
109 |
55896
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
110 In addition to its "native" image formats (pbm and xbm), Emacs can |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
111 handle other image types: xpm, tiff, gif, png and jpeg (postscript is |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
112 currently unsupported on Windows). To build Emacs with support for |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
113 them, the corresponding headers must be in the include path when the |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
114 configure script is run. This can be setup using environment |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
115 variables, or by specifying --cflags -I... options on the command-line |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
116 to configure.bat. The configure script will report whether it was |
49565 | 117 able to detect the headers. |
49451
c4911d7933ae
Added notes about PNG support.
Jason Rumney <jasonr@gnu.org>
parents:
42901
diff
changeset
|
118 |
55896
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
119 To use the external image support, the DLLs implementing the |
62675
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
120 functionality must be found when Emacs first needs them, either on the |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
121 PATH, or in the same directory as emacs.exe. Failure to find a |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
122 library is not an error; the associated image format will simply be |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
123 unavailable. Note that once Emacs has determined that a library can |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
124 not be found, there's no way to force it to try again, other than |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
125 restarting. See the variable `image-library-alist' to configure the |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
126 expected names of the libraries. |
55896
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
127 |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
128 Some image libraries have dependencies on one another, or on zlib. |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
129 For example, tiff support depends on the jpeg library. If you did not |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
130 compile the libraries yourself, you must make sure that any dependency |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
131 is in the PATH or otherwise accesible and that the binaries are |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
132 compatible (for example, that they were built with the same compiler). |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
133 |
8b571de37306
Reword the section on image support. Add reference to GnuWin32. Mention
Juanma Barranquero <lekktu@gmail.com>
parents:
52416
diff
changeset
|
134 Binaries for the image libraries (among many others) can be found at |
62675
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
135 the GnuWin32 project. These are built with MinGW, but they can be |
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
136 used with both GCC/MinGW and MSVC builds of Emacs. |
49451
c4911d7933ae
Added notes about PNG support.
Jason Rumney <jasonr@gnu.org>
parents:
42901
diff
changeset
|
137 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
138 * Building |
25856 | 139 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
140 After running configure, simply run the appropriate `make' program for |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
141 your compiler to build Emacs. For MSVC, this is nmake; for GCC, it is |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
142 GNU make. |
25856 | 143 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
144 As the files are compiled, you will see some warning messages |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
145 declaring that some functions don't return a value, or that some data |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
146 conversions will be lossy, etc. You can safely ignore these messages. |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
147 The warnings may be fixed in the main FSF source at some point, but |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
148 until then we will just live with them. |
25856 | 149 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
150 * Installing |
25856 | 151 |
39144
7baf228a27e6
Mention that "make install" can be "nmake install".
Eli Zaretskii <eliz@gnu.org>
parents:
37885
diff
changeset
|
152 To install Emacs after it has compiled, simply run `nmake install' |
7baf228a27e6
Mention that "make install" can be "nmake install".
Eli Zaretskii <eliz@gnu.org>
parents:
37885
diff
changeset
|
153 or `make install', depending on which version of the Make utility |
7baf228a27e6
Mention that "make install" can be "nmake install".
Eli Zaretskii <eliz@gnu.org>
parents:
37885
diff
changeset
|
154 do you have. |
25856 | 155 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
156 By default, Emacs will be installed in the location where it was |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
157 built, but a different location can be specified either using the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
158 --prefix option to configure, or by setting INSTALL_DIR when running |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
159 make, like so: |
25856 | 160 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
161 make install INSTALL_DIR=D:/emacs |
25856 | 162 |
39144
7baf228a27e6
Mention that "make install" can be "nmake install".
Eli Zaretskii <eliz@gnu.org>
parents:
37885
diff
changeset
|
163 (for `nmake', type "nmake install INSTALL_DIR=D:/emacs" instead). |
7baf228a27e6
Mention that "make install" can be "nmake install".
Eli Zaretskii <eliz@gnu.org>
parents:
37885
diff
changeset
|
164 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
165 The install process will run addpm to setup the registry entries, and |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
166 to create a Start menu icon for Emacs. |
25856 | 167 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
168 * Trouble-shooting |
25856 | 169 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
170 The main problems that are likely to be encountered when building |
62675
114ecd5ee47b
Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki
Juanma Barranquero <lekktu@gmail.com>
parents:
57697
diff
changeset
|
171 Emacs stem from using an old version of GCC, or old MinGW or W32 API |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
172 headers. Additionally, cygwin ports of GNU make may require the Emacs |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
173 source tree to be mounted with text!=binary, because the makefiles |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
174 generated by configure.bat necessarily use DOS line endings. Also, |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
175 cygwin ports of make must run in UNIX mode, either by specifying |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
176 --unix on the command line, or MAKE_MODE=UNIX in the environment. |
25856 | 177 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
178 When configure runs, it attempts to detect when GCC itself, or the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
179 headers it is using, are not suitable for building Emacs. GCC version |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
180 2.95 or later is needed, because that is when the Windows port gained |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
181 sufficient support for anonymous structs and unions to cope with some |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
182 definitions from winnt.h that are used by addsection.c. The W32 API |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
183 headers that come with Cygwin b20.1 are incomplete, and do not include |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
184 some definitions required by addsection.c, for instance. Also, older |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
185 releases of the W32 API headers from Anders Norlander contain a typo |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
186 in the definition of IMAGE_FIRST_SECTION in winnt.h, which |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
187 addsection.c relies on. Versions of w32api-xxx.zip from at least |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
188 1999-11-18 onwards are okay. |
25856 | 189 |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
190 If configure succeeds, but make fails, install the Cygwin port of |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
191 Bash, even if the table above indicates that Emacs should be able to |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
192 build without sh.exe. (Some versions of Windows shells are too dumb |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
193 for Makefile's used by Emacs.) |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
194 |
39462
7bc2236b1036
Update as per suggestions by Shayne Steele <steele@cs.fsu.edu>.
Eli Zaretskii <eliz@gnu.org>
parents:
39152
diff
changeset
|
195 If you are using certain Cygwin builds of GCC, such as Cygwin version |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
196 1.1.8, you may need to specify some extra compiler flags like so: |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
197 |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
198 configure --with-gcc --cflags -mwin32 --cflags -D__MSVCRT__ |
36576
9f0620f192bd
Add --ldflags to configure line for building with
Andrew Innes <andrewi@gnu.org>
parents:
35870
diff
changeset
|
199 --ldflags -mwin32 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
200 |
39462
7bc2236b1036
Update as per suggestions by Shayne Steele <steele@cs.fsu.edu>.
Eli Zaretskii <eliz@gnu.org>
parents:
39152
diff
changeset
|
201 However, the latest Cygwin versions, such as 1.3.3, don't need those |
7bc2236b1036
Update as per suggestions by Shayne Steele <steele@cs.fsu.edu>.
Eli Zaretskii <eliz@gnu.org>
parents:
39152
diff
changeset
|
202 switches; you can simply use "configure --with-gcc". |
7bc2236b1036
Update as per suggestions by Shayne Steele <steele@cs.fsu.edu>.
Eli Zaretskii <eliz@gnu.org>
parents:
39152
diff
changeset
|
203 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
204 We will attempt to auto-detect the need for these flags in a future |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
205 release. |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
206 |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
207 * Debugging |
25856 | 208 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
209 You should be able to debug Emacs using the debugger that is |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
210 appropriate for the compiler you used, namely DevStudio or Windbg if |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
211 compiled with MSVC, or gdb if compiled with gcc. |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
212 |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
213 Emacs functions implemented in C use a naming convention that reflects |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
214 their names in lisp. The names of the C routines are the lisp names |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
215 prefixed with 'F', and with dashes converted to underscores. For |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
216 example, the function call-process is implemented in C by |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
217 Fcall_process. Similarly, lisp variables are prefixed with 'V', again |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
218 with dashes converted to underscores. These conventions enable you to |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
219 easily set breakpoints or examine familiar lisp variables by name. |
25856 | 220 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
221 Since Emacs data is often in the form of a lisp object, and the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
222 Lisp_Object type is difficult to examine manually in the MSVC |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
223 debugger, Emacs provides a helper routine called debug_print that |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
224 prints out a readable representation of a Lisp_Object. (If you are |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
225 using gdb, there is a .gdbinit file in the src directory which |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
226 provides definitions that are useful for examining lisp objects. The |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
227 following tips are mainly of interest when using MSVC.) The output |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
228 from debug_print is sent to stderr, and to the debugger via the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
229 OutputDebugString routine. The output sent to stderr should be |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
230 displayed in the console window that was opened when the emacs.exe |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
231 executable was started. The output sent to the debugger should be |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
232 displayed in its "Debug" output window. |
25856 | 233 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
234 When you are in the process of debugging Emacs and you would like to |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
235 examine the contents of a Lisp_Object variable, popup the QuickWatch |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
236 window (QuickWatch has an eyeglass symbol on its button in the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
237 toolbar). In the text field at the top of the window, enter |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
238 debug_print(<variable>) and hit return. For example, start and run |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
239 Emacs in the debugger until it is waiting for user input. Then click |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
240 on the Break button in the debugger to halt execution. Emacs should |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
241 halt in ZwUserGetMessage waiting for an input event. Use the Call |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
242 Stack window to select the procedure w32_msp_pump up the call stack |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
243 (see below for why you have to do this). Open the QuickWatch window |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
244 and enter debug_print(Vexec_path). Evaluating this expression will |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
245 then print out the contents of the lisp variable exec-path. |
25856 | 246 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
247 If QuickWatch reports that the symbol is unknown, then check the call |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
248 stack in the Call Stack window. If the selected frame in the call |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
249 stack is not an Emacs procedure, then the debugger won't recognize |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
250 Emacs symbols. Instead, select a frame that is inside an Emacs |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
251 procedure and try using debug_print again. |
25856 | 252 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
253 If QuickWatch invokes debug_print but nothing happens, then check the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
254 thread that is selected in the debugger. If the selected thread is |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
255 not the last thread to run (the "current" thread), then it cannot be |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
256 used to execute debug_print. Use the Debug menu to select the current |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
257 thread and try using debug_print again. Note that the debugger halts |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
258 execution (e.g., due to a breakpoint) in the context of the current |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
259 thread, so this should only be a problem if you've explicitly switched |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
260 threads. |
37710 | 261 |
262 COPYING PERMISSIONS | |
263 | |
264 Permission is granted to anyone to make or distribute verbatim copies | |
265 of this document as received, in any medium, provided that the | |
266 copyright notice and permission notice are preserved, | |
267 and that the distributor grants the recipient permission | |
268 for further redistribution as permitted by this notice. | |
269 | |
270 Permission is granted to distribute modified versions | |
271 of this document, or of portions of it, | |
272 under the above conditions, provided also that they | |
273 carry prominent notices stating who last changed them, | |
274 and that any new or changed statements about the activities | |
275 of the Free Software Foundation are approved by the Foundation. |