Building and Installing Emacs
- on Windows NT/2000 and Windows 95/98/ME
+ on Windows NT/2K/XP and Windows 95/98/ME
+
+ Copyright (c) 2001,2004 Free Software Foundation, Inc.
+ See the end of the file for copying permissions.
+
+ If you used WinZip to unpack the distribution, we suggest to
+ remove the files and unpack again with a different program!
+ WinZip is known to create some subtle and hard to debug problems,
+ such as converting files to DOS CR-LF format, not creating empty
+ directories, etc. We suggest to use djtarnt.exe from the GNU FTP
+ site.
+
+ If you are building out of CVS, then some files in this directory
+ (.bat files, nmake.defs and makefile.w32-in) may need the line-ends
+ fixing first. The easiest way to do this and avoid future conflicts
+ is to run the following command in this (emacs/nt) directory:
+ cvs update -kb
+ In addition to this file, you should also read INSTALL.CVS in the
+ parent directory, and make sure that you have a version of "touch.exe"
+ in your path, and that it will create files that do not yet exist.
To compile Emacs, you will need either Microsoft Visual C++ 2.0 or
- later, or a Windows port of GCC 2.95 or later with Mingw and W32 API
- support and a port of GNU make. You can use the Cygwin ports of GCC,
- but Emacs requires the Mingw headers and libraries to build.
-
- If you build Emacs on Windows 9X or ME, not on Windows 2000 or
+ later and nmake, or a Windows port of GCC 2.95 or later with Mingw
+ and W32 API support and a port of GNU make. You can use the Cygwin
+ ports of GCC, but Emacs requires the Mingw headers and libraries to
+ build (latest versions of the Cygwin toolkit, at least since v1.3.3,
+ include the MinGW headers and libraries as an integral part).
+
+ Other compilers may work, but specific reports from people that have
+ tried suggest that the Intel C compiler (for example) may produce an
+ Emacs executable with strange filename completion behaviour. Unless
+ you would like to assist by finding and fixing the cause of any bugs
+ like this, we recommend the use of the supported compilers mentioned
+ in the previous paragraph.
+
+ You will also need a copy of the Posix cp, rm and mv programs. These
+ and other useful Posix utilities can be obtained from the Mingw or
+ Cygwin projects.
+
+ If you build Emacs on Windows 9X or ME, not on Windows 2K/XP or
Windows NT, we suggest to install the Cygwin port of Bash.
- Please see http://www.mingw.org for pointers to GCC/Mingw binaries.
+ Please see http://www.mingw.org for pointers to GCC/Mingw and binaries.
For reference, here is a list of which builds of GNU make are known
to work or not, and whether they work in the presence and/or absence
- of sh.exe, the Cygwin port of Bash.
-
+ of sh.exe, the Cygwin port of Bash. Note that any version of make
+ that is compiled with Cygwin will only work with Cygwin tools, due to
+ the use of cygwin style paths. This means Cygwin make is unsuitable
+ for building parts of Emacs that need to invoke Emacs itself (leim and
+ "make bootstrap", for example). Also see the Trouble-shooting section
+ below if you decide to go ahead and use Cygwin make.
+
+ In addition, using 4NT as your shell is known to fail the build process,
+ at least for 4NT version 3.01. Use cmd.exe, the default NT shell,
+ instead. MSYS sh.exe also appears to cause various problems. If you have
+ MSYS installed, try "make SHELL=cmd.exe" to force the use of cmd.exe
+ instead of sh.exe.
+
sh exists no sh
- cygwin b20.1 make (3.75): okay[1] fails[2]
+ cygwin b20.1 make (3.75): fails[1, 5] fails[2, 5]
MSVC compiled gmake 3.77: okay okay
MSVC compiled gmake 3.78.1: okay okay
MSVC compiled gmake 3.79.1: okay okay
mingw32/gcc-2.92.2 make (3.77): okay okay[4]
- cygwin compiled gmake 3.77: okay[1] fails[2]
- cygwin compiled gmake 3.78.1: okay fails[2]
- cygwin compiled gmake 3.79.1: couldn't build make[3]
+ cygwin compiled gmake 3.77: fails[1, 5] fails[2, 5]
+ cygwin compiled make 3.78.1: fails[5] fails[2, 5]
+ cygwin compiled make 3.79.1: fails[3, 5] fails[2?, 5]
+ mingw32 compiled make 3.79.1: okay okay
Notes:
[1] doesn't cope with makefiles with DOS line endings, so must mount
emacs source with text!=binary.
[2] fails when needs to invoke shell commands; okay invoking gcc etc.
- [3] requires LC_MESSAGES support to build; maybe 2.95.x update to
- cygwin provides this?
+ [3] requires LC_MESSAGES support to build; cannot build with early
+ versions of cygwin.
[4] may fail on Windows 9X and Windows ME; if so, install Bash.
+ [5] fails when building leim due to the use of cygwin style paths.
+ May work if building emacs without leim.
* Configuring
is running, when gcc support is being tested. These cannot be
surpressed because of limitations in the Windows 9x command.com shell.
+* Optional image library support
+
+ In addition to its "native" image formats (pbm and xbm), Emacs can
+ handle other image types: xpm, tiff, gif, png and jpeg (postscript is
+ currently unsupported on Windows). To build Emacs with support for
+ them, the corresponding headers must be in the include path when the
+ configure script is run. This can be setup using environment
+ variables, or by specifying --cflags -I... options on the command-line
+ to configure.bat. The configure script will report whether it was
+ able to detect the headers.
+
+ To use the external image support, the DLLs implementing the
+ functionality must be found when Emacs is started, either on the PATH,
+ or in the same directory as emacs.exe. Failure to find a library is
+ not an error; the associated image format will simply be unavailable.
+
+ Some image libraries have dependencies on one another, or on zlib.
+ For example, tiff support depends on the jpeg library. If you did not
+ compile the libraries yourself, you must make sure that any dependency
+ is in the PATH or otherwise accesible and that the binaries are
+ compatible (for example, that they were built with the same compiler).
+
+ Binaries for the image libraries (among many others) can be found at
+ GnuWin32 (http://gnuwin32.sourceforge.net). These are built with
+ MinGW, and so are very compatible with GCC/MinGW builds of Emacs (like
+ the official binary tarballs for Windows). Compatibility with MSVC,
+ on the other hand, is still weak and should not be trusted in
+ production environments; if you really need an MSVC-compiled Emacs
+ with image support, you should try to build the required libraries
+ with the same compiler (though it can be extremely non-trivial, and
+ we'll be interested on hearing of any such effort).
+
* Building
After running configure, simply run the appropriate `make' program for
* Installing
- To install Emacs after it has compiled, simply run `make install'.
+ To install Emacs after it has compiled, simply run `nmake install'
+ or `make install', depending on which version of the Make utility
+ do you have.
By default, Emacs will be installed in the location where it was
built, but a different location can be specified either using the
make install INSTALL_DIR=D:/emacs
+ (for `nmake', type "nmake install INSTALL_DIR=D:/emacs" instead).
+
The install process will run addpm to setup the registry entries, and
to create a Start menu icon for Emacs.
build without sh.exe. (Some versions of Windows shells are too dumb
for Makefile's used by Emacs.)
- If you are using a recent Cygwin build of GCC, such as Cygwin version
+ If you are using certain Cygwin builds of GCC, such as Cygwin version
1.1.8, you may need to specify some extra compiler flags like so:
configure --with-gcc --cflags -mwin32 --cflags -D__MSVCRT__
--ldflags -mwin32
+ However, the latest Cygwin versions, such as 1.3.3, don't need those
+ switches; you can simply use "configure --with-gcc".
+
We will attempt to auto-detect the need for these flags in a future
release.
execution (e.g., due to a breakpoint) in the context of the current
thread, so this should only be a problem if you've explicitly switched
threads.
+
+COPYING PERMISSIONS
+
+ Permission is granted to anyone to make or distribute verbatim copies
+ of this document as received, in any medium, provided that the
+ copyright notice and permission notice are preserved,
+ and that the distributor grants the recipient permission
+ for further redistribution as permitted by this notice.
+
+ Permission is granted to distribute modified versions
+ of this document, or of portions of it,
+ under the above conditions, provided also that they
+ carry prominent notices stating who last changed them,
+ and that any new or changed statements about the activities
+ of the Free Software Foundation are approved by the Foundation.