diff options
Diffstat (limited to 'nt')
| -rw-r--r-- | nt/ChangeLog | 6 | ||||
| -rw-r--r-- | nt/INSTALL | 1080 | ||||
| -rw-r--r-- | nt/INSTALL.MSYS | 673 | ||||
| -rw-r--r-- | nt/INSTALL.OLD | 752 | ||||
| -rw-r--r-- | nt/README | 12 | ||||
| -rw-r--r-- | nt/README.W32 | 16 | ||||
| -rwxr-xr-x | nt/configure.bat | 4 |
7 files changed, 1267 insertions, 1276 deletions
diff --git a/nt/ChangeLog b/nt/ChangeLog index ebc823071a3..e7d9ed99e3c 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2013-08-31 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * INSTALL: Rename from INSTALL.MSYS. | ||
| 4 | * INSTALL.OLD: Rename from INSTALL. | ||
| 5 | * configure.bat: Update for INSTALL name changes. | ||
| 6 | |||
| 1 | 2013-08-25 Vincent Belaïche <vincentb1@users.sourceforge.net> | 7 | 2013-08-25 Vincent Belaïche <vincentb1@users.sourceforge.net> |
| 2 | 8 | ||
| 3 | * configure.bat: Rather than disabling, make configure.bat produce | 9 | * configure.bat: Rather than disabling, make configure.bat produce |
diff --git a/nt/INSTALL b/nt/INSTALL index 594ff9ff752..be36014e3b2 100644 --- a/nt/INSTALL +++ b/nt/INSTALL | |||
| @@ -1,298 +1,495 @@ | |||
| 1 | Building and Installing Emacs on Windows | 1 | Building and Installing Emacs on MS-Windows |
| 2 | (from 95 to 7 and beyond) | 2 | using the MSYS and MinGW tools |
| 3 | 3 | ||
| 4 | Copyright (C) 2001-2013 Free Software Foundation, Inc. | 4 | Copyright (C) 2013 Free Software Foundation, Inc. |
| 5 | See the end of the file for license conditions. | 5 | See the end of the file for license conditions. |
| 6 | 6 | ||
| 7 | *** This method of building Emacs is no longer supported. *** | 7 | The MSYS/MinGW build described here is supported on versions of |
| 8 | Instead, see INSTALL.MSYS. | 8 | Windows starting with Windows 2000 and newer. Windows 9X are not |
| 9 | supported (but the Emacs binary produced by this build will run on | ||
| 10 | Windows 9X as well). | ||
| 9 | 11 | ||
| 10 | * For the impatient | 12 | * For the brave (a.k.a. "impatient"): |
| 11 | 13 | ||
| 12 | Here are the concise instructions for configuring and building the | 14 | For those who have a working MSYS/MinGW development environment and |
| 13 | native Windows binary of Emacs, for those who want to skip the | 15 | are comfortable with running Posix configure scripts, here are the |
| 14 | complex explanations and ``just do it'': | 16 | concise instructions for configuring and building the native Windows |
| 17 | binary of Emacs with these tools. | ||
| 15 | 18 | ||
| 16 | Do not use this recipe with Cygwin. For building on Cygwin, | 19 | Do not use this recipe with Cygwin. For building on Cygwin, use the |
| 17 | use the normal installation instructions, ../INSTALL. | 20 | normal installation instructions, ../INSTALL. |
| 18 | 21 | ||
| 19 | Do not use these instructions with MSYS environment. For building | 22 | 0. Start the MSYS Bash window. Everything else below is done from |
| 20 | the native Windows binary with MinGW and MSYS, follow the | 23 | that window's Bash prompt. |
| 21 | instructions in the file INSTALL.MSYS in this directory. | ||
| 22 | 24 | ||
| 23 | For building without MSYS, if you have a Cygwin or MSYS port of Bash | 25 | 0a. If you are building from the development trunk (as opposed to a |
| 24 | on your Path, you will be better off removing it from PATH. (For | 26 | release tarball), produce the configure script, by typing from |
| 25 | details, search for "MSYS sh.exe" below.) | 27 | the top-level Emacs source directory: |
| 26 | 28 | ||
| 27 | 1. Change to the `nt' directory (the directory of this file): | 29 | ./autogen.sh |
| 28 | 30 | ||
| 29 | cd nt | 31 | 1. If you want to build Emacs outside of the source tree |
| 32 | (recommended), create the build directory and chdir there. | ||
| 30 | 33 | ||
| 31 | 2. Run configure.bat. | 34 | 2. Invoke the MSYS-specific configure script: |
| 32 | 35 | ||
| 33 | 2a.If you use MSVC, set up the build environment by running the | 36 | - If you are building outside the source tree: |
| 34 | SetEnv.cmd batch file from the appropriate SDK directory. (Skip | ||
| 35 | this step if you are using MinGW.) For example: | ||
| 36 | 37 | ||
| 37 | "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /Debug | 38 | /PATH/TO/EMACS/SOURCE/TREE/nt/msysconfig.sh --prefix=PREFIX ... |
| 38 | 39 | ||
| 39 | if you are going to compile a debug version, or | 40 | - If you are building in-place, i.e. inside the source tree: |
| 40 | 41 | ||
| 41 | "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /Release | 42 | ./nt/msysconfig.sh --prefix=PREFIX ... |
| 42 | 43 | ||
| 43 | if you are going to compile an optimized version. | 44 | It is always preferable to use --prefix to configure Emacs for |
| 45 | some specific location of its installed tree; the default | ||
| 46 | /usr/local is not suitable for Windows (see the detailed | ||
| 47 | instructions for the reasons). | ||
| 44 | 48 | ||
| 45 | 2b.From the COMMAND.COM/CMD.EXE command prompt type: | 49 | You can pass other options to the configure script. Here's a |
| 50 | typical example (for an in-place debug build): | ||
| 46 | 51 | ||
| 47 | configure | 52 | CPPFLAGS='-DGLYPH_DEBUG=1' CFLAGS='-O0 -g3' ./nt/msysconfig.sh --prefix=/d/usr/emacs --enable-checking |
| 48 | 53 | ||
| 49 | From a Unixy shell prompt: | 54 | 3. After the configure script finishes, it should display the |
| 55 | resulting configuration. After that, type | ||
| 50 | 56 | ||
| 51 | cmd /c configure.bat | 57 | make |
| 52 | or | ||
| 53 | command.com /c configure.bat | ||
| 54 | 58 | ||
| 55 | 3. Run the Make utility suitable for your environment. If you build | 59 | Use "make -j N" if your MSYS Make supports parallel execution; |
| 56 | with the Microsoft's Visual C compiler: | 60 | the build will take significantly less time in that case. Here N |
| 61 | is the number of simultaneous parallel jobs; use the number of | ||
| 62 | the cores on your system. | ||
| 57 | 63 | ||
| 58 | nmake | 64 | 4. Install the produced binaries: |
| 59 | 65 | ||
| 60 | For the development environments based on GNU GCC (MinGW, MSYS, | 66 | make install |
| 61 | Cygwin - but see notes about Cygwin make below), depending on how | ||
| 62 | Make is called, it could be: | ||
| 63 | 67 | ||
| 64 | make | 68 | If you want the installation tree to go to a place that is |
| 65 | or | 69 | different from the one specified by --prefix, say |
| 66 | mingw32-make | ||
| 67 | or | ||
| 68 | gnumake | ||
| 69 | or | ||
| 70 | gmake | ||
| 71 | 70 | ||
| 72 | (If you are building from Bazaar, say "make bootstrap" or "nmake | 71 | make install prefix=/where/ever/you/want |
| 73 | bootstrap" instead, and avoid using Cygwin make.) | ||
| 74 | 72 | ||
| 75 | With GNU Make, you can use the -j command-line option to have | 73 | That's it! |
| 76 | Make execute several commands at once, like this: | ||
| 77 | 74 | ||
| 78 | gmake -j 2 | 75 | If these short instructions somehow fail, read the rest of this |
| 76 | file. | ||
| 79 | 77 | ||
| 80 | (With versions of GNU Make before 3.82, you need also set the | 78 | * Installing MinGW and MSYS |
| 81 | XMFLAGS variable, like this: | ||
| 82 | 79 | ||
| 83 | gmake -j 2 XMFLAGS="-j 2" | 80 | Make sure you carefully read the following two sections in their |
| 81 | entirety and install/configure the various packages as instructed. | ||
| 82 | A correct installation makes all the rest almost trivial; a botched | ||
| 83 | installation will likely make you miserable for quite some time. | ||
| 84 | 84 | ||
| 85 | The XMFLAGS variable overrides the default behavior of version | 85 | There are two alternative to installing MinGW + MSYS: using the GUI |
| 86 | 3.82 and older of GNU Make on Windows, whereby recursive Make | 86 | installer, called mingw-get, provided by the MinGW project, or |
| 87 | invocations reset the maximum number of simultaneous commands to | 87 | manual installation. The next two sections describe each one of |
| 88 | 1. The above command allows up to 4 simultaneous commands at | 88 | these. |
| 89 | once in the top-level Make, and up to 3 in each one of the | ||
| 90 | recursive Make's.) | ||
| 91 | 89 | ||
| 92 | 4. Generate the Info manuals (only if you are building out of Bazaar, | 90 | ** Installing MinGW and MSYS using mingw-get |
| 93 | and if you have makeinfo.exe installed): | ||
| 94 | 91 | ||
| 95 | make info | 92 | A nice installer, called mingw-get, is available for those who don't |
| 93 | like to mess with manual installations. You can download it from | ||
| 94 | here: | ||
| 96 | 95 | ||
| 97 | (change "make" to "nmake" if you use MSVC). | 96 | https://sourceforge.net/projects/mingw/files/Installer/mingw-get/ |
| 98 | 97 | ||
| 99 | 5. Install the produced binaries: | 98 | (This installer only supports packages downloaded from the MinGW |
| 99 | site; for the rest you will still need the manual method.) | ||
| 100 | 100 | ||
| 101 | make install | 101 | After installing mingw-get, invoke it to install the packages that |
| 102 | are already selected by default on the "Select Components" screen of | ||
| 103 | its wizard. | ||
| 102 | 104 | ||
| 103 | That's it! | 105 | After that, use "mingw-get install PACKAGE" to install the following |
| 106 | additional packages: | ||
| 104 | 107 | ||
| 105 | If these short instructions somehow fail, read the rest of this | 108 | . msys-base |
| 106 | file. | 109 | . mingw-developer-toolkit |
| 107 | 110 | ||
| 108 | * Preliminaries | 111 | (We recommend that you refrain from installing the MSYS Texinfo |
| 112 | package, which is part of msys-base, because it might produce mixed | ||
| 113 | EOL format when installing Info files. Instead, install the MinGW | ||
| 114 | port of Texinfo, see the ezwinports URL below. To uninstall the | ||
| 115 | MSYS Texinfo, after installing it as part of msys-base, invoke the | ||
| 116 | command "mingw-get remove msys-texinfo".) | ||
| 109 | 117 | ||
| 110 | If you want to build a Cygwin port of Emacs, use the instructions in | 118 | At this point, you should be ready to configure and build Emacs in |
| 111 | the INSTALL file in the main Emacs directory (the parent of this | 119 | its basic configuration. Skip to the "Generating the configure |
| 112 | directory). These instructions are for building a native Windows | 120 | script" section for the build instructions. If you want to build it |
| 113 | binary of Emacs. | 121 | with image support and other optional libraries, read about the |
| 122 | optional libraries near the end of this document, before you start | ||
| 123 | the build. Also, consider installing additional MinGW packages that | ||
| 124 | are required/recommended, especially if you are building from the | ||
| 125 | Bazaar repository, as described in the next section. | ||
| 114 | 126 | ||
| 115 | If you used WinZip to unpack the distribution, we suggest to | 127 | ** Installing MinGW and MSYS manually |
| 116 | remove the files and unpack again with a different program! | 128 | |
| 117 | WinZip is known to create some subtle and hard to debug problems, | 129 | *** MinGW |
| 118 | such as converting files to DOS CR-LF format, not creating empty | 130 | |
| 119 | directories, etc. We suggest to use djtarnt.exe from the GNU FTP | 131 | You will need to install the MinGW port of GCC and Binutils, and the |
| 120 | site. For modern formats, such as .tar.xz, we suggest bsdtar.exe | 132 | MinGW runtime and Windows API distributions, to compile Emacs. You |
| 121 | from the libarchive package; its precompiled Windows binaries are | 133 | can find these on the MinGW download/Base page: |
| 122 | available from this site: | 134 | |
| 135 | https://sourceforge.net/projects/mingw/files/MinGW/Base/ | ||
| 136 | |||
| 137 | In general, install the latest stable versions of the following | ||
| 138 | MinGW packages from that page: gcc, binutils, mingw-rt, w32api. You | ||
| 139 | only need the 'bin' and the 'dll' tarballs of each of the above. | ||
| 140 | |||
| 141 | MinGW packages are distributed as .tar.lzma compressed archives. To | ||
| 142 | install the packages manually, we recommend to use the Windows port | ||
| 143 | of the 'bsdtar' program to unpack the tarballs. 'bsdtar' is | ||
| 144 | available as part of the 'libarchive' package from here: | ||
| 123 | 145 | ||
| 124 | http://sourceforge.net/projects/ezwinports/files/ | 146 | http://sourceforge.net/projects/ezwinports/files/ |
| 125 | 147 | ||
| 126 | In addition to this file, if you build a development snapshot, you | 148 | The recommended place to install these packages is a single tree |
| 127 | should also read INSTALL.BZR in the parent directory. | 149 | starting from some directory on a drive other than the system drive |
| 128 | 150 | C:. A typical example would be D:\usr, with D:\usr\bin holding the | |
| 129 | * Supported development environments | 151 | binaries and DLLs (should be added to your Path environment |
| 130 | 152 | variable), D:\usr\include holding the include files, D:\usr\lib | |
| 131 | To compile Emacs, you will need either Microsoft Visual C++ 2.0, or | 153 | holding the static and import libraries, D:\usr\share holding docs, |
| 132 | later and nmake, or a Windows port of GCC 2.95 or later with MinGW | 154 | message catalogs, and package-specific subdirectories, etc. |
| 133 | and Windows API support and a port of GNU Make. You can use the Cygwin | 155 | |
| 134 | ports of GCC, but Emacs requires the MinGW headers and libraries to | 156 | Having all the headers and libraries in a single place will greatly |
| 135 | build (latest versions of the Cygwin toolkit, at least since v1.3.3, | 157 | reduce the number of -I and -L flags you will have to pass to the |
| 136 | include the MinGW headers and libraries as an integral part). | 158 | configure script (see below), as these files will be right where the |
| 137 | 159 | compiler expects them. | |
| 138 | The rest of this file assumes you have a working development | 160 | |
| 139 | environment. If you just installed such an environment, try | 161 | We specifically do NOT recommend installing packages below |
| 140 | building a trivial C "Hello world" program, and see if it works. If | 162 | "C:\Program Files" or "C:\Program Files (x86)". These directories |
| 141 | it doesn't work, resolve that problem first! If you use Microsoft | 163 | are protected on versions of Windows from Vista and on, and you will |
| 142 | Visual Studio .NET 2003, don't forget to run the VCVARS32.BAT batch | 164 | have difficulties updating and maintaining your installation later, |
| 143 | file from the `Bin' subdirectory of the directory where you have | 165 | due to UAC elevation prompts, file virtualization, etc. You *have* |
| 144 | installed VS.NET. With other versions of MSVC, run the SetEnv.cmd | 166 | been warned! |
| 145 | batch file from the `Bin' subdirectory of the directory where you | 167 | |
| 146 | have the SDK installed. | 168 | Additional MinGW packages are required/recommended, especially if |
| 147 | 169 | you are building from the Bazaar repository: | |
| 148 | If you use the MinGW port of GCC and GNU Make to build Emacs, there | 170 | |
| 149 | are some compatibility issues wrt Make and the shell that is run by | 171 | . Texinfo (needed to produce the Info manuals when building from |
| 150 | Make, either the standard COMMAND.COM/CMD.EXE supplied with Windows | 172 | bzr, and for "make install") |
| 151 | or sh.exe, a port of a Unixy shell. For reference, below is a list | 173 | |
| 152 | of which builds of GNU Make are known to work or not, and whether | 174 | Available from http://sourceforge.net/projects/ezwinports/files/. |
| 153 | they work in the presence and/or absence of sh.exe, the Cygwin port | 175 | |
| 154 | of Bash. Note that any version of Make that is compiled with Cygwin | 176 | . gzip (needed to compress files during "make install") |
| 155 | will only work with Cygwin tools, due to the use of Cygwin style | 177 | |
| 156 | paths. This means Cygwin Make is unsuitable for building parts of | 178 | Available from http://gnuwin32.sourceforge.net/packages/gzip.htm. |
| 157 | Emacs that need to invoke Emacs itself (leim and "make bootstrap", | 179 | |
| 158 | for example). Also see the Trouble-shooting section below if you | 180 | . pkg-config (needed for building with some optional libraries, |
| 159 | decide to go ahead and use Cygwin make. | 181 | such as GnuTLS and libxml2) |
| 160 | 182 | ||
| 161 | In addition, using 4NT or TCC as your shell is known to fail the | 183 | Available from http://www.gtk.org/download/win32.php |
| 162 | build process, at least since 4NT version 3.01. Use CMD.EXE, the | 184 | |
| 163 | default Windows shell, instead. MSYS sh.exe also appears to cause | 185 | Each package might list other packages as prerequisites on its |
| 164 | various problems, e.g., it is known to cause failures in commands | 186 | download page (under "Runtime requirements"); download those as |
| 165 | like "cmd /c FOO" in the Makefiles, because it thinks "/c" is a | 187 | well. (Using the mingw-get installer will fetch those prerequisites |
| 166 | Unix-style file name that needs conversion to the Windows format. | 188 | automatically for you.) A missing prerequisite will manifest itself |
| 167 | If you have MSYS installed, try "make SHELL=cmd.exe" to force the | 189 | by the program failing to run and presenting a pop-up dialog that |
| 168 | use of cmd.exe instead of the MSYS sh.exe. | 190 | states the missing or incompatible DLL; be sure to find and install |
| 169 | 191 | these missing DLLs. | |
| 170 | sh exists no sh | 192 | |
| 171 | 193 | Once you think you have MinGW installed, test the installation by | |
| 172 | cygwin b20.1 make (3.75): fails[1, 5] fails[2, 5] | 194 | building a trivial "hello, world!" program, and make sure that it |
| 173 | MSVC compiled gmake 3.77: okay okay | 195 | builds without any error messages and the binary works when run. |
| 174 | MSVC compiled gmake 3.78.1: okay okay | 196 | |
| 175 | MSVC compiled gmake 3.79.1: okay okay | 197 | *** MSYS |
| 176 | mingw32/gcc-2.92.2 make (3.77): okay okay[4] | 198 | |
| 177 | cygwin compiled gmake 3.77: fails[1, 5] fails[2, 5] | 199 | You will need a reasonably full MSYS installation. MSYS is an |
| 178 | cygwin compiled make 3.78.1: fails[5] fails[2, 5] | 200 | environment needed to run the Posix configure scripts and the |
| 179 | cygwin compiled make 3.79.1: fails[3, 5] fails[2?, 5] | 201 | resulting Makefile's, in order to produce native Windows binaries |
| 180 | cygwin compiled make 3.80: okay[6] fails?[7] | 202 | using the MinGW compiler and runtime libraries. Here's the list of |
| 181 | cygwin compiled make 3.81: fails fails?[7] | 203 | MSYS packages that are required: |
| 182 | mingw32 compiled make 3.79.1: okay okay | 204 | |
| 183 | mingw32 compiled make 3.80: okay okay[7] | 205 | . All the packages from the MSYS Base distribution, listed here: |
| 184 | mingw32 compiled make 3.81: okay okay[8] | 206 | |
| 185 | 207 | https://sourceforge.net/projects/mingw/files/MSYS/Base/ | |
| 186 | Notes: | 208 | |
| 187 | 209 | . Additional packages listed below, from the MSYS Extension | |
| 188 | [1] doesn't cope with makefiles with DOS line endings, so must mount | 210 | distribution here: |
| 189 | emacs source with text!=binary. | 211 | |
| 190 | [2] fails when needs to invoke shell commands; okay invoking gcc etc. | 212 | https://sourceforge.net/projects/mingw/files/MSYS/Extension/ |
| 191 | [3] requires LC_MESSAGES support to build; cannot build with early | 213 | |
| 192 | versions of Cygwin. | 214 | - flex |
| 193 | [4] may fail on Windows 9X and Windows ME; if so, install Bash. | 215 | - bison |
| 194 | [5] fails when building leim due to the use of cygwin style paths. | 216 | - m4 |
| 195 | May work if building emacs without leim. | 217 | - perl |
| 196 | [6] need to uncomment 3 lines in nt/gmake.defs that invoke `cygpath' | 218 | - mktemp |
| 197 | (look for "cygpath" near line 85 of gmake.defs). | 219 | |
| 198 | [7] not recommended; please report if you try this combination. | 220 | These should only be needed if you intend to build development |
| 199 | [8] tested only on Windows XP. | 221 | versions of Emacs from the Bazaar repository. |
| 200 | 222 | ||
| 201 | Other compilers may work, but specific reports from people that have | 223 | . Additional packages (needed only if building from the Bazaar |
| 202 | tried suggest that the Intel C compiler (for example) may produce an | 224 | repository): Automake and Autoconf. They are available from |
| 203 | Emacs executable with strange filename completion behavior. Unless | 225 | here: |
| 204 | you would like to assist by finding and fixing the cause of any bugs | 226 | |
| 205 | like this, we recommend the use of the supported compilers mentioned | 227 | http://sourceforge.net/projects/ezwinports/files/automake-1.11.6-msys-bin.zip/download |
| 206 | in the previous paragraph. | 228 | http://sourceforge.net/projects/ezwinports/files/autoconf-2.65-msys-bin.zip/download |
| 207 | 229 | ||
| 208 | You will also need a copy of the POSIX cp, rm and mv programs. These | 230 | MSYS packages are distributed as .tar.lzma compressed archives. To |
| 209 | and other useful POSIX utilities can be obtained from one of several | 231 | install the packages manually, we recommend to use the Windows port |
| 210 | projects: | 232 | of the 'bsdtar' program, already mentioned above. |
| 211 | 233 | ||
| 212 | * http://gnuwin32.sourceforge.net/ ( GnuWin32 ) | 234 | If/when you are confident in your MinGW/MSYS installation, and want |
| 213 | * http://www.mingw.org/ ( MinGW ) | 235 | to speed up the builds, we recommend installing a pre-release |
| 214 | * http://www.cygwin.com/ ( Cygwin ) | 236 | version of Make from here: |
| 215 | * http://unxutils.sourceforge.net/ ( UnxUtils ) | 237 | |
| 216 | 238 | https://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/ | |
| 217 | If you build Emacs on 16-bit versions of Windows (9X or ME), we | 239 | |
| 218 | suggest to install the Cygwin port of Bash. That is because the | 240 | These are snapshot builds of many packages, but you only need |
| 219 | native Windows shell COMMAND.COM is too limited; the Emacs build | 241 | make.exe from there. The advantage of this make.exe is that it |
| 220 | procedure tries very hard to support even such limited shells, but | 242 | supports parallel builds, so you can use "make -j N" to considerably |
| 221 | as none of the Windows developers of Emacs work on Windows 9X, we | 243 | speed up your builds. |
| 222 | cannot guarantee that it works without a more powerful shell. | 244 | |
| 223 | 245 | Several users reported that MSYS 1.0.18 causes Make to hang in | |
| 224 | Additional instructions and help for building Emacs on Windows can be | 246 | parallel builds. If you bump into this, we suggest to downgrade to |
| 225 | found at the Emacs Wiki: | 247 | MSYS 1.0.17, which doesn't have that problem. |
| 226 | 248 | ||
| 227 | http://www.emacswiki.org/cgi-bin/wiki/WThirtyTwoInstallationKit | 249 | For each of these packages, install the 'bin' and 'dll' tarballs of |
| 228 | 250 | their latest stable releases. If there's an 'ext' tarball (e.g., | |
| 229 | and on these URLs: | 251 | msysCORE and Coreutils have it), download and install those as well. |
| 230 | 252 | ||
| 231 | http://ourcomments.org/Emacs/w32-build-emacs.html | 253 | Each package might list other packages as prerequisites on its |
| 232 | http://derekslager.com/blog/posts/2007/01/emacs-hack-3-compile-emacs-from-cvs-on-windows.ashx | 254 | download page (under "Runtime requirements"); download those as |
| 233 | 255 | well. (Using the mingw-get installer will fetch those prerequisites | |
| 234 | Both of those pages were written before Emacs switched from CVS to | 256 | automatically for you.) A missing prerequisite will manifest itself |
| 235 | Bazaar, but the parts about building Emacs still apply in Bazaar. | 257 | by the program failing to run and presenting a pop-up dialog that |
| 236 | The second URL has instructions for building with MSVC, as well as | 258 | states the missing or incompatible DLL; be sure to find and install |
| 237 | with MinGW, while the first URL covers only MinGW, but has more | 259 | these missing DLLs. |
| 238 | details about it. | 260 | |
| 239 | 261 | MSYS packages should be installed in a separate tree from MinGW. | |
| 240 | * Configuring | 262 | For example, use D:\MSYS or D:\usr\MSYS as the top-level directory |
| 241 | 263 | from which you unpack all of the MSYS packages. | |
| 242 | Configuration of Emacs is now handled by running configure.bat in the | 264 | |
| 243 | `nt' subdirectory. It will detect which compiler you have available, | 265 | Do NOT add the MSYS bin directory to your Windows Path! Only the |
| 244 | and generate makefiles accordingly. You can override the compiler | 266 | MinGW bin directory should be on Path. When you install MSYS, it |
| 245 | detection, and control optimization and debug settings, by specifying | 267 | creates a shortcut on your desktop that invokes the MSYS Bash shell |
| 246 | options on the command line when invoking configure. | 268 | in a Command Prompt window; that shell is already set up so that the |
| 247 | 269 | MSYS bin directory is on PATH ahead of any other directory. Thus, | |
| 248 | To configure Emacs to build with GCC or MSVC, whichever is available, | 270 | Bash will find MSYS executables first, which is exactly what you |
| 249 | simply change to the `nt' subdirectory and run `configure.bat' with no | 271 | need. |
| 250 | options. To see what options are available, run `configure --help'. | 272 | |
| 251 | Do NOT use the --no-debug option to configure.bat unless you are | 273 | At this point, you are ready to build Emacs in its basic |
| 252 | absolutely sure the produced binaries will never need to be run under | 274 | configuration. If you want to build it with image support and other |
| 253 | a debugger. | 275 | optional libraries, read about that near the end of this document. |
| 254 | 276 | ||
| 255 | Because of limitations of the stock Windows command shells, special | 277 | * Generating the configure script |
| 256 | care is needed to pass some characters in the arguments of the | 278 | |
| 257 | --cflags and --ldflags options. Backslashes should not be used in | 279 | If you are building a release or pretest tarball, skip this section, |
| 258 | file names passed to the compiler and linker via these options. Use | 280 | because the configure script is already present in the tarball. |
| 259 | forward slashes instead. If the arguments to these two options | 281 | |
| 260 | include the `=' character, like when passing a -DFOO=bar preprocessor | 282 | To build a development snapshot from the Emacs Bazaar repository, |
| 261 | option, the argument with the `=' character should be enclosed in | 283 | you will first need to generate the configure script and a few other |
| 262 | quotes, like this: | 284 | auto-generated files. (If this step, described below, somehow |
| 263 | 285 | fails, you can use the files in the autogen/ directory instead, but | |
| 264 | configure --cflags "-DFOO=bar" | 286 | they might be outdated, and, most importantly, you are well advised |
| 265 | 287 | not to disregard any failures in your local build procedures, as | |
| 266 | Support for options that include the `=' character require "command | 288 | these are likely to be symptoms of incorrect installation that will |
| 267 | extensions" to be enabled. (They are enabled by default, but your | 289 | bite you down the road.) |
| 268 | system administrator could have changed that. See "cmd /?" for | 290 | |
| 269 | details.) If command extensions are disabled, a warning message might | 291 | To generate the configure script, type this at the MSYS Bash prompt |
| 270 | be displayed informing you that "using parameters that include the = | 292 | from the top-level directory of the Emacs tree: |
| 271 | character by enclosing them in quotes will not be supported." | 293 | |
| 272 | 294 | ./autogen.sh | |
| 273 | You may also use the --cflags and --ldflags options to pass | 295 | |
| 274 | additional parameters to the compiler and linker, respectively; they | 296 | If successful, this command should produce the following output: |
| 275 | are frequently used to pass -I and -L flags to specify supplementary | 297 | |
| 276 | include and library directories. If a directory name includes | 298 | $ ./autogen.sh |
| 277 | spaces, you will need to enclose it in quotes, as follows | 299 | Checking whether you have the necessary tools... |
| 278 | -I"C:/Program Files/GnuTLS-2.10.1/include". Note that only the | 300 | (Read INSTALL.BZR for more details on building Emacs) |
| 279 | directory name is enclosed in quotes, not the entire argument. Also | 301 | |
| 280 | note that this functionality is only supported if command extensions | 302 | Checking for autoconf (need at least version 2.65)... |
| 281 | are available. If command extensions are disabled and you attempt to | 303 | ok |
| 282 | use this functionality you may see the following warning message | 304 | Checking for automake (need at least version 1.11)... |
| 283 | "Error in --cflags argument: ... Backslashes and quotes cannot be | 305 | ok |
| 284 | used with --cflags. Please use forward slashes for filenames and | 306 | Your system has the required tools, running autoreconf... |
| 285 | paths (e.g. when passing directories to -I)." | 307 | You can now run `./configure'. |
| 286 | 308 | ||
| 287 | N.B. It is normal to see a few error messages output while configure | 309 | * Configuring Emacs for MinGW: |
| 288 | is running, when gcc support is being tested. These cannot be | 310 | |
| 289 | suppressed because of limitations in the Windows 9X command.com shell. | 311 | Now it's time to run the configure script. You can do that either |
| 290 | 312 | from a separate build directory that is outside of the Emacs source | |
| 291 | You are encouraged to look at the file config.log which shows details | 313 | tree (recommended), or from inside the source tree. The former is |
| 292 | for failed tests, after configure.bat finishes. Any unexplained failure | 314 | recommended because it allows you to have several different builds, |
| 293 | should be investigated and perhaps reported as a bug (see the section | 315 | e.g., an optimized build and an unoptimized one, of the same |
| 294 | about reporting bugs in the file README in this directory and in the | 316 | revision of the source tree; the source tree will be left in its |
| 295 | Emacs manual). | 317 | pristine state, without any build products. |
| 318 | |||
| 319 | You invoke the configure script like this: | ||
| 320 | |||
| 321 | /PATH/TO/EMACS/SOURCE/TREE/nt/msysconfig.sh --prefix=PREFIX ... | ||
| 322 | |||
| 323 | or, if you are building in-place, i.e. inside the source tree: | ||
| 324 | |||
| 325 | ./nt/msysconfig.sh --prefix=PREFIX ... | ||
| 326 | |||
| 327 | Here PREFIX is the place where you eventually want to install Emacs | ||
| 328 | once built, e.g. /d/usr. We recommend to always use --prefix when | ||
| 329 | building Emacs on Windows, because the default '/usr/local' is not | ||
| 330 | appropriate for Windows: it will be mapped by MSYS to something like | ||
| 331 | C:\MSYS\local, and it will defeat the purpose of PREFIX, which is to | ||
| 332 | install programs in a single coherent tree resembling Posix systems. | ||
| 333 | Such a single-tree installation makes sure all the other programs | ||
| 334 | and packages ported from GNU or Unix systems will work seamlessly | ||
| 335 | together. Where exactly is the root of that tree on your system is | ||
| 336 | something only you, the user who builds Emacs, can know, and the | ||
| 337 | Emacs build process cannot guess, because usually there's no | ||
| 338 | '/usr/local' directory on any drive on Windows systems. | ||
| 339 | |||
| 340 | Do NOT use Windows-style x:/foo/bar file names on the configure | ||
| 341 | script command line; use the MSYS-style /x/foo/bar instead. Using | ||
| 342 | Windows-style file names was reported to cause subtle and hard to | ||
| 343 | figure out problems during the build. This applies both to the | ||
| 344 | command switches, such as --prefix=, and to the absolute file name | ||
| 345 | of msysconfig.sh, if you are building outside of the source tree. | ||
| 346 | |||
| 347 | You can pass additional options to the configure script, for the | ||
| 348 | full list type | ||
| 349 | |||
| 350 | ./nt/msysconfig.sh --help | ||
| 351 | |||
| 352 | As explained in the help text, you may need to tell the script what | ||
| 353 | are the optional flags to invoke the compiler. This is needed if | ||
| 354 | some of your headers and libraries, e.g., those belonging to | ||
| 355 | optional image libraries, are installed in places where the compiler | ||
| 356 | normally doesn't look for them. (Remember that advice above to | ||
| 357 | avoid such situations? here's is where you will start paying for | ||
| 358 | disregarding that recommendation.) For example, if you have libpng | ||
| 359 | headers in C:\emacs\libs\libpng-1.2.37-lib\include and jpeg library | ||
| 360 | headers in C:\emacs\libs\jpeg-6b-4-lib\include, you will need to say | ||
| 361 | something like this: | ||
| 362 | |||
| 363 | CPPFLAGS='-I/c/emacs/libs/libpng-1.2.37-lib/include -I/c/emacs/libs/jpeg-6b-4-lib/include' ./nt/msysconfig.sh --prefix=PREFIX | ||
| 364 | |||
| 365 | which is quite a mouth-full, especially if you have more directories | ||
| 366 | to specify... Perhaps you may wish to revisit your installation | ||
| 367 | decisions now. | ||
| 368 | |||
| 369 | If you have a global site-lisp directory from previous Emacs | ||
| 370 | installation, and you want Emacs to continue using it, specify it | ||
| 371 | via the --enable-locallisppath switch to msysconfig.sh, like this: | ||
| 372 | |||
| 373 | ./nt/msysconfig.sh --prefix=PREFIX --enable-locallisppath="/d/usr/share/emacs/VERSION/site-lisp:/d/wherever/site-lisp" | ||
| 374 | |||
| 375 | Use the normal MSYS /d/foo/bar style to specify directories by their | ||
| 376 | absolute file names. | ||
| 377 | |||
| 378 | A few frequently used options are needed when you want to produce an | ||
| 379 | unoptimized binary with runtime checks enabled: | ||
| 380 | |||
| 381 | CPPFLAGS='-DGLYPH_DEBUG=1' CFLAGS='-O0 -g3' ./nt/msysconfig.sh --prefix=PREFIX --enable-checking | ||
| 382 | |||
| 383 | Once invoked, the configure script will run for some time, and, if | ||
| 384 | successful, will eventually produce a summary of the configuration | ||
| 385 | like this: | ||
| 386 | |||
| 387 | Configured for `i686-pc-mingw32'. | ||
| 388 | |||
| 389 | Where should the build process find the source code? /path/to/emacs/sources | ||
| 390 | What compiler should emacs be built with? gcc -std=gnu99 -O0 -g3 | ||
| 391 | Should Emacs use the GNU version of malloc? yes | ||
| 392 | Should Emacs use a relocating allocator for buffers? yes | ||
| 393 | Should Emacs use mmap(2) for buffer allocation? no | ||
| 394 | What window system should Emacs use? w32 | ||
| 395 | What toolkit should Emacs use? none | ||
| 396 | Where do we find X Windows header files? NONE | ||
| 397 | Where do we find X Windows libraries? NONE | ||
| 398 | Does Emacs use -lXaw3d? no | ||
| 399 | Does Emacs use -lXpm? yes | ||
| 400 | Does Emacs use -ljpeg? yes | ||
| 401 | Does Emacs use -ltiff? yes | ||
| 402 | Does Emacs use a gif library? yes | ||
| 403 | Does Emacs use -lpng? yes | ||
| 404 | Does Emacs use -lrsvg-2? no | ||
| 405 | Does Emacs use imagemagick? no | ||
| 406 | Does Emacs use -lgpm? no | ||
| 407 | Does Emacs use -ldbus? no | ||
| 408 | Does Emacs use -lgconf? no | ||
| 409 | Does Emacs use GSettings? no | ||
| 410 | Does Emacs use -lselinux? no | ||
| 411 | Does Emacs use -lgnutls? yes | ||
| 412 | Does Emacs use -lxml2? yes | ||
| 413 | Does Emacs use -lfreetype? no | ||
| 414 | Does Emacs use -lm17n-flt? no | ||
| 415 | Does Emacs use -lotf? no | ||
| 416 | Does Emacs use -lxft? no | ||
| 417 | Does Emacs use toolkit scroll bars? yes | ||
| 418 | |||
| 419 | You are almost there, hang on. | ||
| 420 | |||
| 421 | If the output is significantly different, or if configure finishes | ||
| 422 | prematurely and displays some error message, you should examine the | ||
| 423 | configuration log in config.log and find the reason for the failure. | ||
| 424 | |||
| 425 | Once you succeeded in configuring Emacs, and just want to rebuild it | ||
| 426 | after updating your local repository from the main repository, you | ||
| 427 | don't need to re-run the configure script manually, unless you want | ||
| 428 | to change the configure-time options. Just typing "make" will | ||
| 429 | re-run configure if necessary with the exact same options you | ||
| 430 | specified originally, and then go on to invoking Make, described | ||
| 431 | below. | ||
| 432 | |||
| 433 | * Running Make. | ||
| 434 | |||
| 435 | This is simple: just type "make" and sit back, watching the fun. | ||
| 436 | |||
| 437 | If you installed a snapshot build of Make, the build will be much | ||
| 438 | faster if you type "make -j N" instead, where N is the number of | ||
| 439 | independent processing units on your machine. E.g., on a core i7 | ||
| 440 | system try using N of 6 or even 8. (If this hangs, see the notes | ||
| 441 | above about downgrading to MSYS 1.0.17.) | ||
| 442 | |||
| 443 | When Make finishes, you can install the produced binaries: | ||
| 444 | |||
| 445 | make install | ||
| 446 | |||
| 447 | or, if you want the installed tree to go in a place different from | ||
| 448 | the configured one, type | ||
| 449 | |||
| 450 | make install prefix=WHEREVER | ||
| 451 | |||
| 452 | Congrats! You have built and installed your own Emacs! | ||
| 453 | |||
| 454 | * Make targets | ||
| 455 | |||
| 456 | The following make targets may be used by users building the source | ||
| 457 | distribution, or users who have checked out of Bazaar after | ||
| 458 | an initial bootstrapping. | ||
| 459 | |||
| 460 | make | ||
| 461 | Builds Emacs from the available sources and pre-compiled lisp files. | ||
| 462 | |||
| 463 | make install | ||
| 464 | Installs the built programs and the auxiliary files. | ||
| 465 | |||
| 466 | make clean | ||
| 467 | Removes object and executable files produced by the build process in | ||
| 468 | the current configuration. After "make clean", you can rebuild with | ||
| 469 | the same configuration using make. useful when you want to be sure | ||
| 470 | that all of the products are built from coherent sources. | ||
| 471 | |||
| 472 | make distclean | ||
| 473 | In addition to the files removed by make clean, this also removes | ||
| 474 | Makefiles and other generated files to get back to the state of a | ||
| 475 | freshly unpacked source distribution. After make distclean, it is | ||
| 476 | necessary to run the configure script followed by "make", in order | ||
| 477 | to rebuild. | ||
| 478 | |||
| 479 | The following targets are intended only for use with the Bazaar sources. | ||
| 480 | |||
| 481 | make bootstrap | ||
| 482 | Removes all the auto-generated files and all the *.elc byte-compiled | ||
| 483 | files, and builds Emacs from scratch. Useful when some change in | ||
| 484 | basic Emacs functionality makes byte compilation of updated files | ||
| 485 | fail. | ||
| 486 | |||
| 487 | make maintainer-clean | ||
| 488 | Removes everything that can be recreated, including compiled Lisp | ||
| 489 | files, to get back to the state of a fresh Bazaar tree. After make | ||
| 490 | maintainer-clean, it is necessary to run configure and "make" or | ||
| 491 | "make bootstrap" to rebuild. Occasionally it may be necessary to | ||
| 492 | run this target after an update. | ||
| 296 | 493 | ||
| 297 | * Optional image library support | 494 | * Optional image library support |
| 298 | 495 | ||
| @@ -301,19 +498,28 @@ | |||
| 301 | support for svg. | 498 | support for svg. |
| 302 | 499 | ||
| 303 | To build Emacs with support for them, the corresponding headers must | 500 | To build Emacs with support for them, the corresponding headers must |
| 304 | be in the include path when the configure script is run. This can | 501 | be in the include path and libraries should be where the linker |
| 305 | be setup using environment variables, or by specifying --cflags | 502 | looks for them, when the configure script is run. If needed, this |
| 306 | -I... options on the command-line to configure.bat. The configure | 503 | can be set up using the CPPFLAGS and CFLAGS variable specified on |
| 307 | script will report whether it was able to detect the headers. If | 504 | the configure command line. The configure script will report |
| 308 | the results of this testing appear to be incorrect, please look for | 505 | whether it was able to detect the headers and libraries. If the |
| 506 | results of this testing appear to be incorrect, please look for | ||
| 309 | details in the file config.log: it will show the failed test | 507 | details in the file config.log: it will show the failed test |
| 310 | programs and compiler error messages that should explain what is | 508 | programs and compiler error messages that should explain what is |
| 311 | wrong. (Usually, any such failures happen because some headers are | 509 | wrong. (Usually, any such failures happen because some headers are |
| 312 | missing due to bad packaging of the image support libraries.) | 510 | missing due to bad packaging of the image support libraries.) |
| 313 | 511 | ||
| 314 | Note that any file path passed to the compiler or linker must use | 512 | Note that any file path passed to the compiler or linker must use |
| 315 | forward slashes; using backslashes will cause compiler warnings or | 513 | forward slashes, or double each backslash, as that is how Bash |
| 316 | errors about unrecognized escape sequences. | 514 | works. |
| 515 | |||
| 516 | If the configure script finds the necessary headers and libraries, | ||
| 517 | but they are for some reason incompatible, or if you want to omit | ||
| 518 | support for some image library that is installed on your system for | ||
| 519 | some other reason, use the --without-PACKAGE option to configure, | ||
| 520 | such as --without-gif to omit GIF, --without-tiff to omit TIFF, etc. | ||
| 521 | Passing the --help option to the configure script displays all of | ||
| 522 | the supported --without-PACKAGE options. | ||
| 317 | 523 | ||
| 318 | To use the external image support, the DLLs implementing the | 524 | To use the external image support, the DLLs implementing the |
| 319 | functionality must be found when Emacs first needs them, either on the | 525 | functionality must be found when Emacs first needs them, either on the |
| @@ -331,20 +537,13 @@ | |||
| 331 | compatible (for example, that they were built with the same compiler). | 537 | compatible (for example, that they were built with the same compiler). |
| 332 | 538 | ||
| 333 | Binaries for the image libraries (among many others) can be found at | 539 | Binaries for the image libraries (among many others) can be found at |
| 334 | the GnuWin32 project. PNG, JPEG and TIFF libraries are also | 540 | the GnuWin32 project. The PNG libraries are also included with GTK, |
| 335 | included with GTK, which is installed along with other Free Software | 541 | which is installed along with other Free Software that requires it. |
| 336 | that requires it. These are built with MinGW, but they can be used | 542 | Note specifically that, due to some packaging snafus in the |
| 337 | with both GCC/MinGW and MSVC builds of Emacs. See the info on | 543 | GnuWin32-supplied image libraries, you will need to download |
| 338 | http://ourcomments.org/Emacs/w32-build-emacs.html, under "How to Get | ||
| 339 | Images Support", for more details about installing image support | ||
| 340 | libraries. Note specifically that, due to some packaging snafus in | ||
| 341 | the GnuWin32-supplied image libraries, you will need to download | ||
| 342 | _source_ packages for some of the libraries in order to get the | 544 | _source_ packages for some of the libraries in order to get the |
| 343 | header files necessary for building Emacs with image support. | 545 | header files necessary for building Emacs with image support. |
| 344 | 546 | ||
| 345 | If GTK 2.0 is installed, addpm will arrange for its image libraries | ||
| 346 | to be on the DLL search path for Emacs. | ||
| 347 | |||
| 348 | For PNG images, we recommend to use versions 1.4.x and later of | 547 | For PNG images, we recommend to use versions 1.4.x and later of |
| 349 | libpng, because previous versions had security issues. You can find | 548 | libpng, because previous versions had security issues. You can find |
| 350 | precompiled libraries and headers on the GTK download page for | 549 | precompiled libraries and headers on the GTK download page for |
| @@ -364,9 +563,19 @@ | |||
| 364 | 563 | ||
| 365 | * Optional GnuTLS support | 564 | * Optional GnuTLS support |
| 366 | 565 | ||
| 367 | If configure.bat finds the gnutls/gnutls.h file in the include path, | 566 | To compile with GnuTLS, you will need pkg-config to be installed, as |
| 368 | Emacs is built with GnuTLS support by default; to avoid that you can | 567 | the configure script invokes pkg-config to find out which compiler |
| 369 | pass the argument --without-gnutls. | 568 | switches to use for GnuTLS. See above for the URL where you can |
| 569 | find pkg-config for Windows. | ||
| 570 | |||
| 571 | You will also need to install the p11-kit package, which is a | ||
| 572 | dependency of GnuTLS, and its header files are needed for | ||
| 573 | compilation of programs that use GnuTLS. You can find p11-kit on | ||
| 574 | the same site as GnuTLS, see the URL below. | ||
| 575 | |||
| 576 | If the configure script finds the GnuTLS header files and libraries | ||
| 577 | on your system, Emacs is built with GnuTLS support by default; to | ||
| 578 | avoid that you can pass the argument --without-gnutls. | ||
| 370 | 579 | ||
| 371 | In order to support GnuTLS at runtime, a GnuTLS-enabled Emacs must | 580 | In order to support GnuTLS at runtime, a GnuTLS-enabled Emacs must |
| 372 | be able to find the relevant DLLs during startup; failure to do so | 581 | be able to find the relevant DLLs during startup; failure to do so |
| @@ -378,9 +587,14 @@ | |||
| 378 | 587 | ||
| 379 | * Optional libxml2 support | 588 | * Optional libxml2 support |
| 380 | 589 | ||
| 381 | If configure.bat finds the libxml/HTMLparser.h file in the include path, | 590 | To compile with libxml2, you will need pkg-config to be installed, |
| 382 | Emacs is built with libxml2 support by default; to avoid that you can | 591 | as the configure script invokes pkg-config to find out which |
| 383 | pass the argument --without-libxml2. | 592 | compiler switches to use for libxml2. See above for the URL where |
| 593 | you can find pkg-config for Windows. | ||
| 594 | |||
| 595 | If the configure script finds the libxml2 header files and libraries | ||
| 596 | on your system, Emacs is built with libxml2 support by default; to | ||
| 597 | avoid that you can pass the argument --without-libxml2. | ||
| 384 | 598 | ||
| 385 | In order to support libxml2 at runtime, a libxml2-enabled Emacs must | 599 | In order to support libxml2 at runtime, a libxml2-enabled Emacs must |
| 386 | be able to find the relevant DLLs during startup; failure to do so | 600 | be able to find the relevant DLLs during startup; failure to do so |
| @@ -392,18 +606,10 @@ | |||
| 392 | 606 | ||
| 393 | http://sourceforge.net/projects/ezwinports/files/ | 607 | http://sourceforge.net/projects/ezwinports/files/ |
| 394 | 608 | ||
| 395 | To compile Emacs with libxml2 from that site, you will need to pass | 609 | For runtime support of libxml2, you will also need to install the |
| 396 | the "--cflags -I/path/to/include/libxml2" option to configure.bat, | 610 | libiconv "development" tarball, because the libiconv headers need to |
| 397 | because libxml2 header files are installed in the include/libxml2 | 611 | be available to the compiler when you compile with libxml2 support. |
| 398 | subdirectory of the directory where you unzip the binary | 612 | A MinGW port of libiconv can be found on the MinGW site: |
| 399 | distribution. Other binary distributions might use other | ||
| 400 | directories, although include/libxml2 is the canonical place where | ||
| 401 | libxml2 headers are installed on Posix platforms. | ||
| 402 | |||
| 403 | You will also need to install the libiconv "development" tarball, | ||
| 404 | because the libiconv headers need to be available to the compiler | ||
| 405 | when you compile with libxml2 support. A MinGW port of libiconv can | ||
| 406 | be found on the MinGW site: | ||
| 407 | 613 | ||
| 408 | http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/ | 614 | http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/ |
| 409 | 615 | ||
| @@ -412,16 +618,18 @@ | |||
| 412 | 618 | ||
| 413 | * Experimental SVG support | 619 | * Experimental SVG support |
| 414 | 620 | ||
| 621 | To compile with SVG, you will need pkg-config to be installed, as | ||
| 622 | the configure script invokes pkg-config to find out which compiler | ||
| 623 | switches to use for SVG. See above for the URL where you can find | ||
| 624 | pkg-config for Windows. | ||
| 625 | |||
| 415 | SVG support is currently experimental, and not built by default. | 626 | SVG support is currently experimental, and not built by default. |
| 416 | Specify --with-svg and ensure you have all the dependencies in your | 627 | Specify --with-rsvg and ensure you have all the dependencies in your |
| 417 | include path. Unless you have built a minimalist librsvg yourself | 628 | include path. Unless you have built a minimalist librsvg yourself |
| 418 | (untested), librsvg depends on a significant chunk of GTK+ to build, | 629 | (untested), librsvg depends on a significant chunk of GTK+ to build, |
| 419 | plus a few Gnome libraries, libxml2, libbz2 and zlib at runtime. The | 630 | plus a few Gnome libraries, libxml2, libbz2 and zlib at runtime. The |
| 420 | easiest way to obtain the dependencies required for building is to | 631 | easiest way to obtain the dependencies required for building is to |
| 421 | download a pre-bundled GTK+ development environment for Windows. | 632 | download a pre-bundled GTK+ development environment for Windows. |
| 422 | GTK puts its header files all over the place, so you will need to | ||
| 423 | run pkgconfig to list the include path you will need (either passed | ||
| 424 | to configure.bat as --cflags options, or set in the environment). | ||
| 425 | 633 | ||
| 426 | To use librsvg at runtime, ensure that librsvg and its dependencies | 634 | To use librsvg at runtime, ensure that librsvg and its dependencies |
| 427 | are on your PATH. If you didn't build librsvg yourself, you will | 635 | are on your PATH. If you didn't build librsvg yourself, you will |
| @@ -445,294 +653,6 @@ | |||
| 445 | maybe a problem with the way Cairo or librsvg is using it that | 653 | maybe a problem with the way Cairo or librsvg is using it that |
| 446 | doesn't show up on other platforms. | 654 | doesn't show up on other platforms. |
| 447 | 655 | ||
| 448 | * Optional extra runtime checks | ||
| 449 | |||
| 450 | The configure.bat option --enable-checking builds Emacs with some | ||
| 451 | optional extra runtime checks and assertions enabled. This may be | ||
| 452 | useful for debugging. | ||
| 453 | |||
| 454 | * Optional extra libraries | ||
| 455 | |||
| 456 | You can pass --lib LIBNAME option to configure.bat to cause Emacs to | ||
| 457 | link with the specified library. You can use this option more than once. | ||
| 458 | |||
| 459 | * Building | ||
| 460 | |||
| 461 | After running configure, simply run the appropriate `make' program for | ||
| 462 | your compiler to build Emacs. For MSVC, this is nmake; for GCC, it is | ||
| 463 | GNU make. (If you are building out of Bazaar, say "make bootstrap" or | ||
| 464 | "nmake bootstrap" instead.) | ||
| 465 | |||
| 466 | As the files are compiled, you will see some warning messages | ||
| 467 | declaring that some functions don't return a value, or that some data | ||
| 468 | conversions will be lossy, etc. You can safely ignore these messages. | ||
| 469 | The warnings may be fixed in the main FSF source at some point, but | ||
| 470 | until then we will just live with them. | ||
| 471 | |||
| 472 | With GNU Make, you can use the -j command-line option to have Make | ||
| 473 | execute several commands at once, like this: | ||
| 474 | |||
| 475 | gmake -j 4 XMFLAGS="-j 3" | ||
| 476 | |||
| 477 | The XMFLAGS variable overrides the default behavior of GNU Make on | ||
| 478 | Windows, whereby recursive Make invocations reset the maximum number | ||
| 479 | of simultaneous commands to 1. The above command allows up to 4 | ||
| 480 | simultaneous commands at once in the top-level Make, and up to 3 in | ||
| 481 | each one of the recursive Make's; you can use other numbers of jobs, | ||
| 482 | if you wish. | ||
| 483 | |||
| 484 | If you are building from Bazaar, the following commands will produce | ||
| 485 | the Info manuals (which are not part of the Bazaar sources): | ||
| 486 | |||
| 487 | make info | ||
| 488 | or | ||
| 489 | nmake info | ||
| 490 | |||
| 491 | Note that you will need makeinfo.exe (from the GNU Texinfo package) | ||
| 492 | in order for this command to succeed. | ||
| 493 | |||
| 494 | * Installing | ||
| 495 | |||
| 496 | To install Emacs after it has compiled, simply run `nmake install' | ||
| 497 | or `make install', depending on which version of the Make utility | ||
| 498 | do you have. | ||
| 499 | |||
| 500 | By default, Emacs will be installed in the location where it was | ||
| 501 | built, but a different location can be specified either using the | ||
| 502 | --prefix option to configure, or by setting INSTALL_DIR when running | ||
| 503 | make, like so: | ||
| 504 | |||
| 505 | make install INSTALL_DIR=D:/emacs | ||
| 506 | |||
| 507 | (for `nmake', type "nmake install INSTALL_DIR=D:/emacs" instead). | ||
| 508 | |||
| 509 | The install process will run addpm to setup the registry entries, and | ||
| 510 | to create a Start menu icon for Emacs. | ||
| 511 | |||
| 512 | * Make targets | ||
| 513 | |||
| 514 | The following make targets may be used by users building the source | ||
| 515 | distribution, or users who have checked out of Bazaar after | ||
| 516 | an initial bootstrapping. | ||
| 517 | |||
| 518 | make | ||
| 519 | Builds Emacs from the available sources and pre-compiled lisp files. | ||
| 520 | |||
| 521 | make install | ||
| 522 | Installs programs to the bin directory, and runs addpm to create | ||
| 523 | Start Menu icons. | ||
| 524 | |||
| 525 | make clean | ||
| 526 | Removes object and executable files produced by the build process in | ||
| 527 | the current configuration. After make clean, you can rebuild with | ||
| 528 | the same configuration using make. | ||
| 529 | |||
| 530 | make distclean | ||
| 531 | In addition to the files removed by make clean, this also removes | ||
| 532 | Makefiles and other generated files to get back to the state of a | ||
| 533 | freshly unpacked source distribution. Note that this will not remove | ||
| 534 | installed files, or the results of builds performed with different | ||
| 535 | compiler or optimization options than the current configuration. | ||
| 536 | After make distclean, it is necessary to run configure.bat followed | ||
| 537 | by make to rebuild. | ||
| 538 | |||
| 539 | make cleanall | ||
| 540 | Removes object and executable files that may have been created by | ||
| 541 | previous builds with different configure options, in addition to | ||
| 542 | the files produced by the current configuration. | ||
| 543 | |||
| 544 | make realclean | ||
| 545 | Removes the installed files in the bin subdirectory in addition to | ||
| 546 | the files removed by make cleanall. | ||
| 547 | |||
| 548 | make dist | ||
| 549 | Builds Emacs from the available sources and pre-compiled lisp files. | ||
| 550 | Packages Emacs binaries as full distribution and barebin distribution. | ||
| 551 | |||
| 552 | The following targets are intended only for use with the Bazaar sources. | ||
| 553 | |||
| 554 | make bootstrap | ||
| 555 | Creates a temporary emacs binary with lisp source files and | ||
| 556 | uses it to compile the lisp files. Once the lisp files are built, | ||
| 557 | emacs is redumped with the compiled lisp. | ||
| 558 | |||
| 559 | make recompile | ||
| 560 | Recompiles any changed lisp files after an update. This saves | ||
| 561 | doing a full bootstrap after every update. If this or a subsequent | ||
| 562 | make fail, you probably need to perform a full bootstrap, though | ||
| 563 | running this target multiple times may eventually sort out the | ||
| 564 | interdependencies. | ||
| 565 | |||
| 566 | make maintainer-clean | ||
| 567 | Removes everything that can be recreated, including compiled lisp | ||
| 568 | files, to get back to the state of a fresh Bazaar tree. After make | ||
| 569 | maintainer-clean, it is necessary to run configure.bat and make | ||
| 570 | bootstrap to rebuild. Occasionally it may be necessary to run this | ||
| 571 | target after an update. | ||
| 572 | |||
| 573 | * Creating binary distributions | ||
| 574 | |||
| 575 | Binary distributions (full and barebin distributions) can be | ||
| 576 | automatically built and packaged from source tarballs or a bzr | ||
| 577 | checkout. | ||
| 578 | |||
| 579 | When building Emacs binary distributions, the --distfiles argument | ||
| 580 | to configure.bat specifies files to be included in the bin directory | ||
| 581 | of the binary distributions. This is intended for libraries that are | ||
| 582 | not built as part of Emacs, e.g. image libraries. | ||
| 583 | |||
| 584 | For example, specifying | ||
| 585 | |||
| 586 | --distfiles D:\distfiles\libXpm.dll | ||
| 587 | |||
| 588 | results in libXpm.dll being copied from D:\distfiles to the | ||
| 589 | bin directory before packaging starts. | ||
| 590 | |||
| 591 | Multiple files can be specified using multiple --distfiles arguments: | ||
| 592 | |||
| 593 | --distfiles D:\distfiles\libXpm.dll --distfiles C:\jpeglib\jpeg.dll | ||
| 594 | |||
| 595 | For packaging the binary distributions, the 'dist' make target uses | ||
| 596 | 7-Zip (http://www.7-zip.org), which must be installed and available | ||
| 597 | on the Windows Path. | ||
| 598 | |||
| 599 | |||
| 600 | * Trouble-shooting | ||
| 601 | |||
| 602 | The main problems that are likely to be encountered when building | ||
| 603 | Emacs stem from using an old version of GCC, or old MinGW or Windows API | ||
| 604 | headers. Additionally, Cygwin ports of GNU make may require the Emacs | ||
| 605 | source tree to be mounted with text!=binary, because the makefiles | ||
| 606 | generated by configure.bat necessarily use DOS line endings. Also, | ||
| 607 | Cygwin ports of make must run in UNIX mode, either by specifying | ||
| 608 | --unix on the command line, or MAKE_MODE=UNIX in the environment. | ||
| 609 | |||
| 610 | When configure runs, it attempts to detect when GCC itself, or the | ||
| 611 | headers it is using, are not suitable for building Emacs. GCC version | ||
| 612 | 2.95 or later is needed, because that is when the Windows port gained | ||
| 613 | sufficient support for anonymous structs and unions to cope with some | ||
| 614 | definitions from winnt.h that are used by addsection.c. | ||
| 615 | Older versions of the Windows API headers that come with Cygwin and MinGW | ||
| 616 | may be missing some definitions required by Emacs, or broken in other | ||
| 617 | ways. In particular, uniscribe APIs were added to MinGW CVS only on | ||
| 618 | 2006-03-26, so releases from before then cannot be used. | ||
| 619 | |||
| 620 | When in doubt about correctness of what configure did, look at the file | ||
| 621 | config.log, which shows all the failed test programs and compiler | ||
| 622 | messages associated with the failures. If that doesn't give a clue, | ||
| 623 | please report the problems, together with the relevant fragments from | ||
| 624 | config.log, as bugs. | ||
| 625 | |||
| 626 | If configure succeeds, but make fails, install the Cygwin port of | ||
| 627 | Bash, even if the table above indicates that Emacs should be able to | ||
| 628 | build without sh.exe. (Some versions of Windows shells are too dumb | ||
| 629 | for Makefile's used by Emacs.) | ||
| 630 | |||
| 631 | If you are using certain Cygwin builds of GCC, such as Cygwin version | ||
| 632 | 1.1.8, you may need to specify some extra compiler flags like so: | ||
| 633 | |||
| 634 | configure --with-gcc --cflags -mwin32 --cflags -D__MSVCRT__ | ||
| 635 | --ldflags -mwin32 | ||
| 636 | |||
| 637 | However, the latest Cygwin versions, such as 1.3.3, don't need those | ||
| 638 | switches; you can simply use "configure --with-gcc". | ||
| 639 | |||
| 640 | We will attempt to auto-detect the need for these flags in a future | ||
| 641 | release. | ||
| 642 | |||
| 643 | * Debugging | ||
| 644 | |||
| 645 | You should be able to debug Emacs using the debugger that is | ||
| 646 | appropriate for the compiler you used, namely DevStudio or Windbg if | ||
| 647 | compiled with MSVC, or GDB if compiled with GCC. (GDB for Windows | ||
| 648 | is available from the MinGW site, http://www.mingw.org/download.shtml.) | ||
| 649 | |||
| 650 | When Emacs aborts due to a fatal internal error, Emacs on Windows | ||
| 651 | pops up an Emacs Abort Dialog asking you whether you want to debug | ||
| 652 | Emacs or terminate it. If Emacs was built with MSVC, click YES | ||
| 653 | twice, and Windbg or the DevStudio debugger will start up | ||
| 654 | automatically. If Emacs was built with GCC, first start GDB and | ||
| 655 | attach it to the Emacs process with the "gdb -p EMACS-PID" command, | ||
| 656 | where EMACS-PID is the Emacs process ID (which you can see in the | ||
| 657 | Windows Task Manager), type the "continue" command inside GDB, and | ||
| 658 | only then click YES on the abort dialog. This will pass control to | ||
| 659 | the debugger, and you will be able to debug the cause of the fatal | ||
| 660 | error. | ||
| 661 | |||
| 662 | The single most important thing to find out when Emacs aborts or | ||
| 663 | crashes is where did that happen in the Emacs code. This is called | ||
| 664 | "backtrace". | ||
| 665 | |||
| 666 | Emacs on Windows uses more than one thread. When Emacs aborts due | ||
| 667 | to a fatal error, the current thread may not be the application | ||
| 668 | thread running Emacs code. Therefore, to produce a meaningful | ||
| 669 | backtrace from a debugger, you need to instruct it to show the | ||
| 670 | backtrace for every thread. With GDB, you do it like this: | ||
| 671 | |||
| 672 | (gdb) thread apply all backtrace | ||
| 673 | |||
| 674 | To run Emacs under a debugger to begin with, simply start it from | ||
| 675 | the debugger. With GDB, chdir to the `src' directory (if you have | ||
| 676 | the source tree) or to a directory with the `.gdbinit' file (if you | ||
| 677 | don't have the source tree), and type these commands: | ||
| 678 | |||
| 679 | C:\whatever\src> gdb x:\path\to\emacs.exe | ||
| 680 | (gdb) run <ARGUMENTS TO EMACS> | ||
| 681 | |||
| 682 | Thereafter, use Emacs as usual; you can minimize the debugger | ||
| 683 | window, if you like. The debugger will take control if and when | ||
| 684 | Emacs crashes. | ||
| 685 | |||
| 686 | Emacs functions implemented in C use a naming convention that reflects | ||
| 687 | their names in lisp. The names of the C routines are the lisp names | ||
| 688 | prefixed with 'F', and with dashes converted to underscores. For | ||
| 689 | example, the function call-process is implemented in C by | ||
| 690 | Fcall_process. Similarly, lisp variables are prefixed with 'V', again | ||
| 691 | with dashes converted to underscores. These conventions enable you to | ||
| 692 | easily set breakpoints or examine familiar lisp variables by name. | ||
| 693 | |||
| 694 | Since Emacs data is often in the form of a lisp object, and the | ||
| 695 | Lisp_Object type is difficult to examine manually in a debugger, | ||
| 696 | Emacs provides a helper routine called debug_print that prints out a | ||
| 697 | readable representation of a Lisp_Object. If you are using GDB, | ||
| 698 | there is a .gdbinit file in the src directory which provides | ||
| 699 | definitions that are useful for examining lisp objects. Therefore, | ||
| 700 | the following tips are mainly of interest when using MSVC. | ||
| 701 | |||
| 702 | The output from debug_print is sent to stderr, and to the debugger | ||
| 703 | via the OutputDebugString routine. The output sent to stderr should | ||
| 704 | be displayed in the console window that was opened when the | ||
| 705 | emacs.exe executable was started. The output sent to the debugger | ||
| 706 | should be displayed in its "Debug" output window. | ||
| 707 | |||
| 708 | When you are in the process of debugging Emacs and you would like to | ||
| 709 | examine the contents of a Lisp_Object variable, pop up the QuickWatch | ||
| 710 | window (QuickWatch has an eyeglass symbol on its button in the | ||
| 711 | toolbar). In the text field at the top of the window, enter | ||
| 712 | debug_print(<variable>) and hit return. For example, start and run | ||
| 713 | Emacs in the debugger until it is waiting for user input. Then click | ||
| 714 | on the Break button in the debugger to halt execution. Emacs should | ||
| 715 | halt in ZwUserGetMessage waiting for an input event. Use the Call | ||
| 716 | Stack window to select the procedure w32_msp_pump up the call stack | ||
| 717 | (see below for why you have to do this). Open the QuickWatch window | ||
| 718 | and enter debug_print(Vexec_path). Evaluating this expression will | ||
| 719 | then print out the contents of the lisp variable exec-path. | ||
| 720 | |||
| 721 | If QuickWatch reports that the symbol is unknown, then check the call | ||
| 722 | stack in the Call Stack window. If the selected frame in the call | ||
| 723 | stack is not an Emacs procedure, then the debugger won't recognize | ||
| 724 | Emacs symbols. Instead, select a frame that is inside an Emacs | ||
| 725 | procedure and try using debug_print again. | ||
| 726 | |||
| 727 | If QuickWatch invokes debug_print but nothing happens, then check the | ||
| 728 | thread that is selected in the debugger. If the selected thread is | ||
| 729 | not the last thread to run (the "current" thread), then it cannot be | ||
| 730 | used to execute debug_print. Use the Debug menu to select the current | ||
| 731 | thread and try using debug_print again. Note that the debugger halts | ||
| 732 | execution (e.g., due to a breakpoint) in the context of the current | ||
| 733 | thread, so this should only be a problem if you've explicitly switched | ||
| 734 | threads. | ||
| 735 | |||
| 736 | 656 | ||
| 737 | This file is part of GNU Emacs. | 657 | This file is part of GNU Emacs. |
| 738 | 658 | ||
diff --git a/nt/INSTALL.MSYS b/nt/INSTALL.MSYS deleted file mode 100644 index 420b8be75f8..00000000000 --- a/nt/INSTALL.MSYS +++ /dev/null | |||
| @@ -1,673 +0,0 @@ | |||
| 1 | Building and Installing Emacs on MS-Windows | ||
| 2 | using the MSYS and MinGW tools | ||
| 3 | |||
| 4 | Copyright (C) 2013 Free Software Foundation, Inc. | ||
| 5 | See the end of the file for license conditions. | ||
| 6 | |||
| 7 | The MSYS/MinGW build described here is supported on versions of | ||
| 8 | Windows starting with Windows 2000 and newer. Windows 9X are not | ||
| 9 | supported (but the Emacs binary produced by this build will run on | ||
| 10 | Windows 9X as well). | ||
| 11 | |||
| 12 | * For the brave (a.k.a. "impatient"): | ||
| 13 | |||
| 14 | For those who have a working MSYS/MinGW development environment and | ||
| 15 | are comfortable with running Posix configure scripts, here are the | ||
| 16 | concise instructions for configuring and building the native Windows | ||
| 17 | binary of Emacs with these tools. | ||
| 18 | |||
| 19 | Do not use this recipe with Cygwin. For building on Cygwin, use the | ||
| 20 | normal installation instructions, ../INSTALL. | ||
| 21 | |||
| 22 | Do not use these instructions if you don't have MSYS installed; for | ||
| 23 | that, see the file INSTALL in this directory. | ||
| 24 | |||
| 25 | 0. Start the MSYS Bash window. Everything else below is done from | ||
| 26 | that window's Bash prompt. | ||
| 27 | |||
| 28 | 0a. If you are building from the development trunk (as opposed to a | ||
| 29 | release tarball), produce the configure script, by typing from | ||
| 30 | the top-level Emacs source directory: | ||
| 31 | |||
| 32 | ./autogen.sh | ||
| 33 | |||
| 34 | 1. If you want to build Emacs outside of the source tree | ||
| 35 | (recommended), create the build directory and chdir there. | ||
| 36 | |||
| 37 | 2. Invoke the MSYS-specific configure script: | ||
| 38 | |||
| 39 | - If you are building outside the source tree: | ||
| 40 | |||
| 41 | /PATH/TO/EMACS/SOURCE/TREE/nt/msysconfig.sh --prefix=PREFIX ... | ||
| 42 | |||
| 43 | - If you are building in-place, i.e. inside the source tree: | ||
| 44 | |||
| 45 | ./nt/msysconfig.sh --prefix=PREFIX ... | ||
| 46 | |||
| 47 | It is always preferable to use --prefix to configure Emacs for | ||
| 48 | some specific location of its installed tree; the default | ||
| 49 | /usr/local is not suitable for Windows (see the detailed | ||
| 50 | instructions for the reasons). | ||
| 51 | |||
| 52 | You can pass other options to the configure script. Here's a | ||
| 53 | typical example (for an in-place debug build): | ||
| 54 | |||
| 55 | CPPFLAGS='-DGLYPH_DEBUG=1' CFLAGS='-O0 -g3' ./nt/msysconfig.sh --prefix=/d/usr/emacs --enable-checking | ||
| 56 | |||
| 57 | 3. After the configure script finishes, it should display the | ||
| 58 | resulting configuration. After that, type | ||
| 59 | |||
| 60 | make | ||
| 61 | |||
| 62 | Use "make -j N" if your MSYS Make supports parallel execution; | ||
| 63 | the build will take significantly less time in that case. Here N | ||
| 64 | is the number of simultaneous parallel jobs; use the number of | ||
| 65 | the cores on your system. | ||
| 66 | |||
| 67 | 4. Install the produced binaries: | ||
| 68 | |||
| 69 | make install | ||
| 70 | |||
| 71 | If you want the installation tree to go to a place that is | ||
| 72 | different from the one specified by --prefix, say | ||
| 73 | |||
| 74 | make install prefix=/where/ever/you/want | ||
| 75 | |||
| 76 | That's it! | ||
| 77 | |||
| 78 | If these short instructions somehow fail, read the rest of this | ||
| 79 | file. | ||
| 80 | |||
| 81 | * Installing MinGW and MSYS | ||
| 82 | |||
| 83 | Make sure you carefully read the following two sections in their | ||
| 84 | entirety and install/configure the various packages as instructed. | ||
| 85 | A correct installation makes all the rest almost trivial; a botched | ||
| 86 | installation will likely make you miserable for quite some time. | ||
| 87 | |||
| 88 | There are two alternative to installing MinGW + MSYS: using the GUI | ||
| 89 | installer, called mingw-get, provided by the MinGW project, or | ||
| 90 | manual installation. The next two sections describe each one of | ||
| 91 | these. | ||
| 92 | |||
| 93 | ** Installing MinGW and MSYS using mingw-get | ||
| 94 | |||
| 95 | A nice installer, called mingw-get, is available for those who don't | ||
| 96 | like to mess with manual installations. You can download it from | ||
| 97 | here: | ||
| 98 | |||
| 99 | https://sourceforge.net/projects/mingw/files/Installer/mingw-get/ | ||
| 100 | |||
| 101 | (This installer only supports packages downloaded from the MinGW | ||
| 102 | site; for the rest you will still need the manual method.) | ||
| 103 | |||
| 104 | After installing mingw-get, invoke it to install the packages that | ||
| 105 | are already selected by default on the "Select Components" screen of | ||
| 106 | its wizard. | ||
| 107 | |||
| 108 | After that, use "mingw-get install PACKAGE" to install the following | ||
| 109 | additional packages: | ||
| 110 | |||
| 111 | . msys-base | ||
| 112 | . mingw-developer-toolkit | ||
| 113 | |||
| 114 | (We recommend that you refrain from installing the MSYS Texinfo | ||
| 115 | package, which is part of msys-base, because it might produce mixed | ||
| 116 | EOL format when installing Info files. Instead, install the MinGW | ||
| 117 | port of Texinfo, see the ezwinports URL below. To uninstall the | ||
| 118 | MSYS Texinfo, after installing it as part of msys-base, invoke the | ||
| 119 | command "mingw-get remove msys-texinfo".) | ||
| 120 | |||
| 121 | At this point, you should be ready to configure and build Emacs in | ||
| 122 | its basic configuration. Skip to the "Generating the configure | ||
| 123 | script" section for the build instructions. If you want to build it | ||
| 124 | with image support and other optional libraries, read about the | ||
| 125 | optional libraries near the end of this document, before you start | ||
| 126 | the build. Also, consider installing additional MinGW packages that | ||
| 127 | are required/recommended, especially if you are building from the | ||
| 128 | Bazaar repository, as described in the next section. | ||
| 129 | |||
| 130 | ** Installing MinGW and MSYS manually | ||
| 131 | |||
| 132 | *** MinGW | ||
| 133 | |||
| 134 | You will need to install the MinGW port of GCC and Binutils, and the | ||
| 135 | MinGW runtime and Windows API distributions, to compile Emacs. You | ||
| 136 | can find these on the MinGW download/Base page: | ||
| 137 | |||
| 138 | https://sourceforge.net/projects/mingw/files/MinGW/Base/ | ||
| 139 | |||
| 140 | In general, install the latest stable versions of the following | ||
| 141 | MinGW packages from that page: gcc, binutils, mingw-rt, w32api. You | ||
| 142 | only need the 'bin' and the 'dll' tarballs of each of the above. | ||
| 143 | |||
| 144 | MinGW packages are distributed as .tar.lzma compressed archives. To | ||
| 145 | install the packages manually, we recommend to use the Windows port | ||
| 146 | of the 'bsdtar' program to unpack the tarballs. 'bsdtar' is | ||
| 147 | available as part of the 'libarchive' package from here: | ||
| 148 | |||
| 149 | http://sourceforge.net/projects/ezwinports/files/ | ||
| 150 | |||
| 151 | The recommended place to install these packages is a single tree | ||
| 152 | starting from some directory on a drive other than the system drive | ||
| 153 | C:. A typical example would be D:\usr, with D:\usr\bin holding the | ||
| 154 | binaries and DLLs (should be added to your Path environment | ||
| 155 | variable), D:\usr\include holding the include files, D:\usr\lib | ||
| 156 | holding the static and import libraries, D:\usr\share holding docs, | ||
| 157 | message catalogs, and package-specific subdirectories, etc. | ||
| 158 | |||
| 159 | Having all the headers and libraries in a single place will greatly | ||
| 160 | reduce the number of -I and -L flags you will have to pass to the | ||
| 161 | configure script (see below), as these files will be right where the | ||
| 162 | compiler expects them. | ||
| 163 | |||
| 164 | We specifically do NOT recommend installing packages below | ||
| 165 | "C:\Program Files" or "C:\Program Files (x86)". These directories | ||
| 166 | are protected on versions of Windows from Vista and on, and you will | ||
| 167 | have difficulties updating and maintaining your installation later, | ||
| 168 | due to UAC elevation prompts, file virtualization, etc. You *have* | ||
| 169 | been warned! | ||
| 170 | |||
| 171 | Additional MinGW packages are required/recommended, especially if | ||
| 172 | you are building from the Bazaar repository: | ||
| 173 | |||
| 174 | . Texinfo (needed to produce the Info manuals when building from | ||
| 175 | bzr, and for "make install") | ||
| 176 | |||
| 177 | Available from http://sourceforge.net/projects/ezwinports/files/. | ||
| 178 | |||
| 179 | . gzip (needed to compress files during "make install") | ||
| 180 | |||
| 181 | Available from http://gnuwin32.sourceforge.net/packages/gzip.htm. | ||
| 182 | |||
| 183 | . pkg-config (needed for building with some optional libraries, | ||
| 184 | such as GnuTLS and libxml2) | ||
| 185 | |||
| 186 | Available from http://www.gtk.org/download/win32.php | ||
| 187 | |||
| 188 | Each package might list other packages as prerequisites on its | ||
| 189 | download page (under "Runtime requirements"); download those as | ||
| 190 | well. (Using the mingw-get installer will fetch those prerequisites | ||
| 191 | automatically for you.) A missing prerequisite will manifest itself | ||
| 192 | by the program failing to run and presenting a pop-up dialog that | ||
| 193 | states the missing or incompatible DLL; be sure to find and install | ||
| 194 | these missing DLLs. | ||
| 195 | |||
| 196 | Once you think you have MinGW installed, test the installation by | ||
| 197 | building a trivial "hello, world!" program, and make sure that it | ||
| 198 | builds without any error messages and the binary works when run. | ||
| 199 | |||
| 200 | *** MSYS | ||
| 201 | |||
| 202 | You will need a reasonably full MSYS installation. MSYS is an | ||
| 203 | environment needed to run the Posix configure scripts and the | ||
| 204 | resulting Makefile's, in order to produce native Windows binaries | ||
| 205 | using the MinGW compiler and runtime libraries. Here's the list of | ||
| 206 | MSYS packages that are required: | ||
| 207 | |||
| 208 | . All the packages from the MSYS Base distribution, listed here: | ||
| 209 | |||
| 210 | https://sourceforge.net/projects/mingw/files/MSYS/Base/ | ||
| 211 | |||
| 212 | . Additional packages listed below, from the MSYS Extension | ||
| 213 | distribution here: | ||
| 214 | |||
| 215 | https://sourceforge.net/projects/mingw/files/MSYS/Extension/ | ||
| 216 | |||
| 217 | - flex | ||
| 218 | - bison | ||
| 219 | - m4 | ||
| 220 | - perl | ||
| 221 | - mktemp | ||
| 222 | |||
| 223 | These should only be needed if you intend to build development | ||
| 224 | versions of Emacs from the Bazaar repository. | ||
| 225 | |||
| 226 | . Additional packages (needed only if building from the Bazaar | ||
| 227 | repository): Automake and Autoconf. They are available from | ||
| 228 | here: | ||
| 229 | |||
| 230 | http://sourceforge.net/projects/ezwinports/files/automake-1.11.6-msys-bin.zip/download | ||
| 231 | http://sourceforge.net/projects/ezwinports/files/autoconf-2.65-msys-bin.zip/download | ||
| 232 | |||
| 233 | MSYS packages are distributed as .tar.lzma compressed archives. To | ||
| 234 | install the packages manually, we recommend to use the Windows port | ||
| 235 | of the 'bsdtar' program, already mentioned above. | ||
| 236 | |||
| 237 | If/when you are confident in your MinGW/MSYS installation, and want | ||
| 238 | to speed up the builds, we recommend installing a pre-release | ||
| 239 | version of Make from here: | ||
| 240 | |||
| 241 | https://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/ | ||
| 242 | |||
| 243 | These are snapshot builds of many packages, but you only need | ||
| 244 | make.exe from there. The advantage of this make.exe is that it | ||
| 245 | supports parallel builds, so you can use "make -j N" to considerably | ||
| 246 | speed up your builds. | ||
| 247 | |||
| 248 | Several users reported that MSYS 1.0.18 causes Make to hang in | ||
| 249 | parallel builds. If you bump into this, we suggest to downgrade to | ||
| 250 | MSYS 1.0.17, which doesn't have that problem. | ||
| 251 | |||
| 252 | For each of these packages, install the 'bin' and 'dll' tarballs of | ||
| 253 | their latest stable releases. If there's an 'ext' tarball (e.g., | ||
| 254 | msysCORE and Coreutils have it), download and install those as well. | ||
| 255 | |||
| 256 | Each package might list other packages as prerequisites on its | ||
| 257 | download page (under "Runtime requirements"); download those as | ||
| 258 | well. (Using the mingw-get installer will fetch those prerequisites | ||
| 259 | automatically for you.) A missing prerequisite will manifest itself | ||
| 260 | by the program failing to run and presenting a pop-up dialog that | ||
| 261 | states the missing or incompatible DLL; be sure to find and install | ||
| 262 | these missing DLLs. | ||
| 263 | |||
| 264 | MSYS packages should be installed in a separate tree from MinGW. | ||
| 265 | For example, use D:\MSYS or D:\usr\MSYS as the top-level directory | ||
| 266 | from which you unpack all of the MSYS packages. | ||
| 267 | |||
| 268 | Do NOT add the MSYS bin directory to your Windows Path! Only the | ||
| 269 | MinGW bin directory should be on Path. When you install MSYS, it | ||
| 270 | creates a shortcut on your desktop that invokes the MSYS Bash shell | ||
| 271 | in a Command Prompt window; that shell is already set up so that the | ||
| 272 | MSYS bin directory is on PATH ahead of any other directory. Thus, | ||
| 273 | Bash will find MSYS executables first, which is exactly what you | ||
| 274 | need. | ||
| 275 | |||
| 276 | At this point, you are ready to build Emacs in its basic | ||
| 277 | configuration. If you want to build it with image support and other | ||
| 278 | optional libraries, read about that near the end of this document. | ||
| 279 | |||
| 280 | * Generating the configure script | ||
| 281 | |||
| 282 | If you are building a release or pretest tarball, skip this section, | ||
| 283 | because the configure script is already present in the tarball. | ||
| 284 | |||
| 285 | To build a development snapshot from the Emacs Bazaar repository, | ||
| 286 | you will first need to generate the configure script and a few other | ||
| 287 | auto-generated files. (If this step, described below, somehow | ||
| 288 | fails, you can use the files in the autogen/ directory instead, but | ||
| 289 | they might be outdated, and, most importantly, you are well advised | ||
| 290 | not to disregard any failures in your local build procedures, as | ||
| 291 | these are likely to be symptoms of incorrect installation that will | ||
| 292 | bite you down the road.) | ||
| 293 | |||
| 294 | To generate the configure script, type this at the MSYS Bash prompt | ||
| 295 | from the top-level directory of the Emacs tree: | ||
| 296 | |||
| 297 | ./autogen.sh | ||
| 298 | |||
| 299 | If successful, this command should produce the following output: | ||
| 300 | |||
| 301 | $ ./autogen.sh | ||
| 302 | Checking whether you have the necessary tools... | ||
| 303 | (Read INSTALL.BZR for more details on building Emacs) | ||
| 304 | |||
| 305 | Checking for autoconf (need at least version 2.65)... | ||
| 306 | ok | ||
| 307 | Checking for automake (need at least version 1.11)... | ||
| 308 | ok | ||
| 309 | Your system has the required tools, running autoreconf... | ||
| 310 | You can now run `./configure'. | ||
| 311 | |||
| 312 | * Configuring Emacs for MinGW: | ||
| 313 | |||
| 314 | Now it's time to run the configure script. You can do that either | ||
| 315 | from a separate build directory that is outside of the Emacs source | ||
| 316 | tree (recommended), or from inside the source tree. The former is | ||
| 317 | recommended because it allows you to have several different builds, | ||
| 318 | e.g., an optimized build and an unoptimized one, of the same | ||
| 319 | revision of the source tree; the source tree will be left in its | ||
| 320 | pristine state, without any build products. | ||
| 321 | |||
| 322 | You invoke the configure script like this: | ||
| 323 | |||
| 324 | /PATH/TO/EMACS/SOURCE/TREE/nt/msysconfig.sh --prefix=PREFIX ... | ||
| 325 | |||
| 326 | or, if you are building in-place, i.e. inside the source tree: | ||
| 327 | |||
| 328 | ./nt/msysconfig.sh --prefix=PREFIX ... | ||
| 329 | |||
| 330 | Here PREFIX is the place where you eventually want to install Emacs | ||
| 331 | once built, e.g. /d/usr. We recommend to always use --prefix when | ||
| 332 | building Emacs on Windows, because the default '/usr/local' is not | ||
| 333 | appropriate for Windows: it will be mapped by MSYS to something like | ||
| 334 | C:\MSYS\local, and it will defeat the purpose of PREFIX, which is to | ||
| 335 | install programs in a single coherent tree resembling Posix systems. | ||
| 336 | Such a single-tree installation makes sure all the other programs | ||
| 337 | and packages ported from GNU or Unix systems will work seamlessly | ||
| 338 | together. Where exactly is the root of that tree on your system is | ||
| 339 | something only you, the user who builds Emacs, can know, and the | ||
| 340 | Emacs build process cannot guess, because usually there's no | ||
| 341 | '/usr/local' directory on any drive on Windows systems. | ||
| 342 | |||
| 343 | Do NOT use Windows-style x:/foo/bar file names on the configure | ||
| 344 | script command line; use the MSYS-style /x/foo/bar instead. Using | ||
| 345 | Windows-style file names was reported to cause subtle and hard to | ||
| 346 | figure out problems during the build. This applies both to the | ||
| 347 | command switches, such as --prefix=, and to the absolute file name | ||
| 348 | of msysconfig.sh, if you are building outside of the source tree. | ||
| 349 | |||
| 350 | You can pass additional options to the configure script, for the | ||
| 351 | full list type | ||
| 352 | |||
| 353 | ./nt/msysconfig.sh --help | ||
| 354 | |||
| 355 | As explained in the help text, you may need to tell the script what | ||
| 356 | are the optional flags to invoke the compiler. This is needed if | ||
| 357 | some of your headers and libraries, e.g., those belonging to | ||
| 358 | optional image libraries, are installed in places where the compiler | ||
| 359 | normally doesn't look for them. (Remember that advice above to | ||
| 360 | avoid such situations? here's is where you will start paying for | ||
| 361 | disregarding that recommendation.) For example, if you have libpng | ||
| 362 | headers in C:\emacs\libs\libpng-1.2.37-lib\include and jpeg library | ||
| 363 | headers in C:\emacs\libs\jpeg-6b-4-lib\include, you will need to say | ||
| 364 | something like this: | ||
| 365 | |||
| 366 | CPPFLAGS='-I/c/emacs/libs/libpng-1.2.37-lib/include -I/c/emacs/libs/jpeg-6b-4-lib/include' ./nt/msysconfig.sh --prefix=PREFIX | ||
| 367 | |||
| 368 | which is quite a mouth-full, especially if you have more directories | ||
| 369 | to specify... Perhaps you may wish to revisit your installation | ||
| 370 | decisions now. | ||
| 371 | |||
| 372 | If you have a global site-lisp directory from previous Emacs | ||
| 373 | installation, and you want Emacs to continue using it, specify it | ||
| 374 | via the --enable-locallisppath switch to msysconfig.sh, like this: | ||
| 375 | |||
| 376 | ./nt/msysconfig.sh --prefix=PREFIX --enable-locallisppath="/d/usr/share/emacs/VERSION/site-lisp:/d/wherever/site-lisp" | ||
| 377 | |||
| 378 | Use the normal MSYS /d/foo/bar style to specify directories by their | ||
| 379 | absolute file names. | ||
| 380 | |||
| 381 | A few frequently used options are needed when you want to produce an | ||
| 382 | unoptimized binary with runtime checks enabled: | ||
| 383 | |||
| 384 | CPPFLAGS='-DGLYPH_DEBUG=1' CFLAGS='-O0 -g3' ./nt/msysconfig.sh --prefix=PREFIX --enable-checking | ||
| 385 | |||
| 386 | Once invoked, the configure script will run for some time, and, if | ||
| 387 | successful, will eventually produce a summary of the configuration | ||
| 388 | like this: | ||
| 389 | |||
| 390 | Configured for `i686-pc-mingw32'. | ||
| 391 | |||
| 392 | Where should the build process find the source code? /path/to/emacs/sources | ||
| 393 | What compiler should emacs be built with? gcc -std=gnu99 -O0 -g3 | ||
| 394 | Should Emacs use the GNU version of malloc? yes | ||
| 395 | Should Emacs use a relocating allocator for buffers? yes | ||
| 396 | Should Emacs use mmap(2) for buffer allocation? no | ||
| 397 | What window system should Emacs use? w32 | ||
| 398 | What toolkit should Emacs use? none | ||
| 399 | Where do we find X Windows header files? NONE | ||
| 400 | Where do we find X Windows libraries? NONE | ||
| 401 | Does Emacs use -lXaw3d? no | ||
| 402 | Does Emacs use -lXpm? yes | ||
| 403 | Does Emacs use -ljpeg? yes | ||
| 404 | Does Emacs use -ltiff? yes | ||
| 405 | Does Emacs use a gif library? yes | ||
| 406 | Does Emacs use -lpng? yes | ||
| 407 | Does Emacs use -lrsvg-2? no | ||
| 408 | Does Emacs use imagemagick? no | ||
| 409 | Does Emacs use -lgpm? no | ||
| 410 | Does Emacs use -ldbus? no | ||
| 411 | Does Emacs use -lgconf? no | ||
| 412 | Does Emacs use GSettings? no | ||
| 413 | Does Emacs use -lselinux? no | ||
| 414 | Does Emacs use -lgnutls? yes | ||
| 415 | Does Emacs use -lxml2? yes | ||
| 416 | Does Emacs use -lfreetype? no | ||
| 417 | Does Emacs use -lm17n-flt? no | ||
| 418 | Does Emacs use -lotf? no | ||
| 419 | Does Emacs use -lxft? no | ||
| 420 | Does Emacs use toolkit scroll bars? yes | ||
| 421 | |||
| 422 | You are almost there, hang on. | ||
| 423 | |||
| 424 | If the output is significantly different, or if configure finishes | ||
| 425 | prematurely and displays some error message, you should examine the | ||
| 426 | configuration log in config.log and find the reason for the failure. | ||
| 427 | |||
| 428 | Once you succeeded in configuring Emacs, and just want to rebuild it | ||
| 429 | after updating your local repository from the main repository, you | ||
| 430 | don't need to re-run the configure script manually, unless you want | ||
| 431 | to change the configure-time options. Just typing "make" will | ||
| 432 | re-run configure if necessary with the exact same options you | ||
| 433 | specified originally, and then go on to invoking Make, described | ||
| 434 | below. | ||
| 435 | |||
| 436 | * Running Make. | ||
| 437 | |||
| 438 | This is simple: just type "make" and sit back, watching the fun. | ||
| 439 | |||
| 440 | If you installed a snapshot build of Make, the build will be much | ||
| 441 | faster if you type "make -j N" instead, where N is the number of | ||
| 442 | independent processing units on your machine. E.g., on a core i7 | ||
| 443 | system try using N of 6 or even 8. (If this hangs, see the notes | ||
| 444 | above about downgrading to MSYS 1.0.17.) | ||
| 445 | |||
| 446 | When Make finishes, you can install the produced binaries: | ||
| 447 | |||
| 448 | make install | ||
| 449 | |||
| 450 | or, if you want the installed tree to go in a place different from | ||
| 451 | the configured one, type | ||
| 452 | |||
| 453 | make install prefix=WHEREVER | ||
| 454 | |||
| 455 | Congrats! You have built and installed your own Emacs! | ||
| 456 | |||
| 457 | * Make targets | ||
| 458 | |||
| 459 | The following make targets may be used by users building the source | ||
| 460 | distribution, or users who have checked out of Bazaar after | ||
| 461 | an initial bootstrapping. | ||
| 462 | |||
| 463 | make | ||
| 464 | Builds Emacs from the available sources and pre-compiled lisp files. | ||
| 465 | |||
| 466 | make install | ||
| 467 | Installs the built programs and the auxiliary files. | ||
| 468 | |||
| 469 | make clean | ||
| 470 | Removes object and executable files produced by the build process in | ||
| 471 | the current configuration. After "make clean", you can rebuild with | ||
| 472 | the same configuration using make. useful when you want to be sure | ||
| 473 | that all of the products are built from coherent sources. | ||
| 474 | |||
| 475 | make distclean | ||
| 476 | In addition to the files removed by make clean, this also removes | ||
| 477 | Makefiles and other generated files to get back to the state of a | ||
| 478 | freshly unpacked source distribution. After make distclean, it is | ||
| 479 | necessary to run the configure script followed by "make", in order | ||
| 480 | to rebuild. | ||
| 481 | |||
| 482 | The following targets are intended only for use with the Bazaar sources. | ||
| 483 | |||
| 484 | make bootstrap | ||
| 485 | Removes all the auto-generated files and all the *.elc byte-compiled | ||
| 486 | files, and builds Emacs from scratch. Useful when some change in | ||
| 487 | basic Emacs functionality makes byte compilation of updated files | ||
| 488 | fail. | ||
| 489 | |||
| 490 | make maintainer-clean | ||
| 491 | Removes everything that can be recreated, including compiled Lisp | ||
| 492 | files, to get back to the state of a fresh Bazaar tree. After make | ||
| 493 | maintainer-clean, it is necessary to run configure and "make" or | ||
| 494 | "make bootstrap" to rebuild. Occasionally it may be necessary to | ||
| 495 | run this target after an update. | ||
| 496 | |||
| 497 | * Optional image library support | ||
| 498 | |||
| 499 | In addition to its "native" image formats (pbm and xbm), Emacs can | ||
| 500 | handle other image types: xpm, tiff, gif, png, jpeg and experimental | ||
| 501 | support for svg. | ||
| 502 | |||
| 503 | To build Emacs with support for them, the corresponding headers must | ||
| 504 | be in the include path and libraries should be where the linker | ||
| 505 | looks for them, when the configure script is run. If needed, this | ||
| 506 | can be set up using the CPPFLAGS and CFLAGS variable specified on | ||
| 507 | the configure command line. The configure script will report | ||
| 508 | whether it was able to detect the headers and libraries. If the | ||
| 509 | results of this testing appear to be incorrect, please look for | ||
| 510 | details in the file config.log: it will show the failed test | ||
| 511 | programs and compiler error messages that should explain what is | ||
| 512 | wrong. (Usually, any such failures happen because some headers are | ||
| 513 | missing due to bad packaging of the image support libraries.) | ||
| 514 | |||
| 515 | Note that any file path passed to the compiler or linker must use | ||
| 516 | forward slashes, or double each backslash, as that is how Bash | ||
| 517 | works. | ||
| 518 | |||
| 519 | If the configure script finds the necessary headers and libraries, | ||
| 520 | but they are for some reason incompatible, or if you want to omit | ||
| 521 | support for some image library that is installed on your system for | ||
| 522 | some other reason, use the --without-PACKAGE option to configure, | ||
| 523 | such as --without-gif to omit GIF, --without-tiff to omit TIFF, etc. | ||
| 524 | Passing the --help option to the configure script displays all of | ||
| 525 | the supported --without-PACKAGE options. | ||
| 526 | |||
| 527 | To use the external image support, the DLLs implementing the | ||
| 528 | functionality must be found when Emacs first needs them, either on the | ||
| 529 | PATH, or in the same directory as emacs.exe. Failure to find a | ||
| 530 | library is not an error; the associated image format will simply be | ||
| 531 | unavailable. Note that once Emacs has determined that a library can | ||
| 532 | not be found, there's no way to force it to try again, other than | ||
| 533 | restarting. See the variable `dynamic-library-alist' to configure the | ||
| 534 | expected names of the libraries. | ||
| 535 | |||
| 536 | Some image libraries have dependencies on one another, or on zlib. | ||
| 537 | For example, tiff support depends on the jpeg library. If you did not | ||
| 538 | compile the libraries yourself, you must make sure that any dependency | ||
| 539 | is in the PATH or otherwise accessible and that the binaries are | ||
| 540 | compatible (for example, that they were built with the same compiler). | ||
| 541 | |||
| 542 | Binaries for the image libraries (among many others) can be found at | ||
| 543 | the GnuWin32 project. The PNG libraries are also included with GTK, | ||
| 544 | which is installed along with other Free Software that requires it. | ||
| 545 | Note specifically that, due to some packaging snafus in the | ||
| 546 | GnuWin32-supplied image libraries, you will need to download | ||
| 547 | _source_ packages for some of the libraries in order to get the | ||
| 548 | header files necessary for building Emacs with image support. | ||
| 549 | |||
| 550 | For PNG images, we recommend to use versions 1.4.x and later of | ||
| 551 | libpng, because previous versions had security issues. You can find | ||
| 552 | precompiled libraries and headers on the GTK download page for | ||
| 553 | Windows (http://www.gtk.org/download/win32.php). | ||
| 554 | |||
| 555 | Versions 1.4.0 and later of libpng are binary incompatible with | ||
| 556 | earlier versions, so Emacs will only look for libpng libraries which | ||
| 557 | are compatible with the version it was compiled against. That | ||
| 558 | version is given by the value of the Lisp variable `libpng-version'; | ||
| 559 | e.g., 10403 means version 1.4.3. The variable `dynamic-library-alist' | ||
| 560 | is automatically set to name only those DLL names that are known to | ||
| 561 | be compatible with the version given by `libpng-version'. If PNG | ||
| 562 | support does not work for you even though you have the support DLL | ||
| 563 | installed, check the name of the installed DLL against | ||
| 564 | `dynamic-library-alist' and the value of `libpng-version', and | ||
| 565 | download compatible DLLs if needed. | ||
| 566 | |||
| 567 | * Optional GnuTLS support | ||
| 568 | |||
| 569 | To compile with GnuTLS, you will need pkg-config to be installed, as | ||
| 570 | the configure script invokes pkg-config to find out which compiler | ||
| 571 | switches to use for GnuTLS. See above for the URL where you can | ||
| 572 | find pkg-config for Windows. | ||
| 573 | |||
| 574 | You will also need to install the p11-kit package, which is a | ||
| 575 | dependency of GnuTLS, and its header files are needed for | ||
| 576 | compilation of programs that use GnuTLS. You can find p11-kit on | ||
| 577 | the same site as GnuTLS, see the URL below. | ||
| 578 | |||
| 579 | If the configure script finds the GnuTLS header files and libraries | ||
| 580 | on your system, Emacs is built with GnuTLS support by default; to | ||
| 581 | avoid that you can pass the argument --without-gnutls. | ||
| 582 | |||
| 583 | In order to support GnuTLS at runtime, a GnuTLS-enabled Emacs must | ||
| 584 | be able to find the relevant DLLs during startup; failure to do so | ||
| 585 | is not an error, but GnuTLS won't be available to the running | ||
| 586 | session. | ||
| 587 | |||
| 588 | You can get pre-built binaries (including any required DLL and the | ||
| 589 | header files) at http://sourceforge.net/projects/ezwinports/files/. | ||
| 590 | |||
| 591 | * Optional libxml2 support | ||
| 592 | |||
| 593 | To compile with libxml2, you will need pkg-config to be installed, | ||
| 594 | as the configure script invokes pkg-config to find out which | ||
| 595 | compiler switches to use for libxml2. See above for the URL where | ||
| 596 | you can find pkg-config for Windows. | ||
| 597 | |||
| 598 | If the configure script finds the libxml2 header files and libraries | ||
| 599 | on your system, Emacs is built with libxml2 support by default; to | ||
| 600 | avoid that you can pass the argument --without-libxml2. | ||
| 601 | |||
| 602 | In order to support libxml2 at runtime, a libxml2-enabled Emacs must | ||
| 603 | be able to find the relevant DLLs during startup; failure to do so | ||
| 604 | is not an error, but libxml2 features won't be available to the | ||
| 605 | running session. | ||
| 606 | |||
| 607 | One place where you can get pre-built Windows binaries of libxml2 | ||
| 608 | (including any required DLL and the header files) is here: | ||
| 609 | |||
| 610 | http://sourceforge.net/projects/ezwinports/files/ | ||
| 611 | |||
| 612 | For runtime support of libxml2, you will also need to install the | ||
| 613 | libiconv "development" tarball, because the libiconv headers need to | ||
| 614 | be available to the compiler when you compile with libxml2 support. | ||
| 615 | A MinGW port of libiconv can be found on the MinGW site: | ||
| 616 | |||
| 617 | http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/ | ||
| 618 | |||
| 619 | You need the libiconv-X.Y.Z-N-mingw32-dev.tar.lzma tarball from that | ||
| 620 | site. | ||
| 621 | |||
| 622 | * Experimental SVG support | ||
| 623 | |||
| 624 | To compile with SVG, you will need pkg-config to be installed, as | ||
| 625 | the configure script invokes pkg-config to find out which compiler | ||
| 626 | switches to use for SVG. See above for the URL where you can find | ||
| 627 | pkg-config for Windows. | ||
| 628 | |||
| 629 | SVG support is currently experimental, and not built by default. | ||
| 630 | Specify --with-rsvg and ensure you have all the dependencies in your | ||
| 631 | include path. Unless you have built a minimalist librsvg yourself | ||
| 632 | (untested), librsvg depends on a significant chunk of GTK+ to build, | ||
| 633 | plus a few Gnome libraries, libxml2, libbz2 and zlib at runtime. The | ||
| 634 | easiest way to obtain the dependencies required for building is to | ||
| 635 | download a pre-bundled GTK+ development environment for Windows. | ||
| 636 | |||
| 637 | To use librsvg at runtime, ensure that librsvg and its dependencies | ||
| 638 | are on your PATH. If you didn't build librsvg yourself, you will | ||
| 639 | need to check with where you downloaded it from for the | ||
| 640 | dependencies, as there are different build options. If it is a | ||
| 641 | short list, then it most likely only lists the immediate | ||
| 642 | dependencies of librsvg, but the dependencies themselves have | ||
| 643 | dependencies - so don't download individual libraries from GTK+, | ||
| 644 | download and install the whole thing. If you think you've got all | ||
| 645 | the dependencies and SVG support is still not working, check your | ||
| 646 | PATH for other libraries that shadow the ones you downloaded. | ||
| 647 | Libraries of the same name from different sources may not be | ||
| 648 | compatible, this problem was encountered with libbzip2 from GnuWin32 | ||
| 649 | with libcroco from gnome.org. | ||
| 650 | |||
| 651 | If you can see etc/images/splash.svg, then you have managed to get | ||
| 652 | SVG support working. Congratulations for making it through DLL hell | ||
| 653 | to this point. You'll probably find that some SVG images crash | ||
| 654 | Emacs. Problems have been observed in some images that contain | ||
| 655 | text, they seem to be a problem in the Windows port of Pango, or | ||
| 656 | maybe a problem with the way Cairo or librsvg is using it that | ||
| 657 | doesn't show up on other platforms. | ||
| 658 | |||
| 659 | |||
| 660 | This file is part of GNU Emacs. | ||
| 661 | |||
| 662 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 663 | it under the terms of the GNU General Public License as published by | ||
| 664 | the Free Software Foundation, either version 3 of the License, or | ||
| 665 | (at your option) any later version. | ||
| 666 | |||
| 667 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 668 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 669 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 670 | GNU General Public License for more details. | ||
| 671 | |||
| 672 | You should have received a copy of the GNU General Public License | ||
| 673 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
diff --git a/nt/INSTALL.OLD b/nt/INSTALL.OLD new file mode 100644 index 00000000000..20162de8b3e --- /dev/null +++ b/nt/INSTALL.OLD | |||
| @@ -0,0 +1,752 @@ | |||
| 1 | Building and Installing Emacs on Windows | ||
| 2 | (from 95 to 7 and beyond) | ||
| 3 | |||
| 4 | Copyright (C) 2001-2013 Free Software Foundation, Inc. | ||
| 5 | See the end of the file for license conditions. | ||
| 6 | |||
| 7 | *** This method of building Emacs is no longer supported. *** | ||
| 8 | It may fail to produce a correctly working Emacs. | ||
| 9 | Do not report bugs associated with this build method. | ||
| 10 | Instead, follow the new instructions in INSTALL. | ||
| 11 | |||
| 12 | * For the impatient | ||
| 13 | |||
| 14 | Here are the concise instructions for configuring and building the | ||
| 15 | native Windows binary of Emacs, for those who want to skip the | ||
| 16 | complex explanations and ``just do it'': | ||
| 17 | |||
| 18 | Do not use this recipe with Cygwin. For building on Cygwin, | ||
| 19 | use the normal installation instructions, ../INSTALL. | ||
| 20 | |||
| 21 | Do not use these instructions with MSYS environment. For building | ||
| 22 | the native Windows binary with MinGW and MSYS, follow the | ||
| 23 | instructions in the file INSTALL in this directory. | ||
| 24 | |||
| 25 | For building without MSYS, if you have a Cygwin or MSYS port of Bash | ||
| 26 | on your Path, you will be better off removing it from PATH. (For | ||
| 27 | details, search for "MSYS sh.exe" below.) | ||
| 28 | |||
| 29 | 1. Change to the `nt' directory (the directory of this file): | ||
| 30 | |||
| 31 | cd nt | ||
| 32 | |||
| 33 | 2. Run configure.bat. | ||
| 34 | |||
| 35 | 2a.If you use MSVC, set up the build environment by running the | ||
| 36 | SetEnv.cmd batch file from the appropriate SDK directory. (Skip | ||
| 37 | this step if you are using MinGW.) For example: | ||
| 38 | |||
| 39 | "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /Debug | ||
| 40 | |||
| 41 | if you are going to compile a debug version, or | ||
| 42 | |||
| 43 | "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /Release | ||
| 44 | |||
| 45 | if you are going to compile an optimized version. | ||
| 46 | |||
| 47 | 2b.From the COMMAND.COM/CMD.EXE command prompt type: | ||
| 48 | |||
| 49 | configure | ||
| 50 | |||
| 51 | From a Unixy shell prompt: | ||
| 52 | |||
| 53 | cmd /c configure.bat | ||
| 54 | or | ||
| 55 | command.com /c configure.bat | ||
| 56 | |||
| 57 | 3. Run the Make utility suitable for your environment. If you build | ||
| 58 | with the Microsoft's Visual C compiler: | ||
| 59 | |||
| 60 | nmake | ||
| 61 | |||
| 62 | For the development environments based on GNU GCC (MinGW, MSYS, | ||
| 63 | Cygwin - but see notes about Cygwin make below), depending on how | ||
| 64 | Make is called, it could be: | ||
| 65 | |||
| 66 | make | ||
| 67 | or | ||
| 68 | mingw32-make | ||
| 69 | or | ||
| 70 | gnumake | ||
| 71 | or | ||
| 72 | gmake | ||
| 73 | |||
| 74 | (If you are building from Bazaar, say "make bootstrap" or "nmake | ||
| 75 | bootstrap" instead, and avoid using Cygwin make.) | ||
| 76 | |||
| 77 | With GNU Make, you can use the -j command-line option to have | ||
| 78 | Make execute several commands at once, like this: | ||
| 79 | |||
| 80 | gmake -j 2 | ||
| 81 | |||
| 82 | (With versions of GNU Make before 3.82, you need also set the | ||
| 83 | XMFLAGS variable, like this: | ||
| 84 | |||
| 85 | gmake -j 2 XMFLAGS="-j 2" | ||
| 86 | |||
| 87 | The XMFLAGS variable overrides the default behavior of version | ||
| 88 | 3.82 and older of GNU Make on Windows, whereby recursive Make | ||
| 89 | invocations reset the maximum number of simultaneous commands to | ||
| 90 | 1. The above command allows up to 4 simultaneous commands at | ||
| 91 | once in the top-level Make, and up to 3 in each one of the | ||
| 92 | recursive Make's.) | ||
| 93 | |||
| 94 | 4. Generate the Info manuals (only if you are building out of Bazaar, | ||
| 95 | and if you have makeinfo.exe installed): | ||
| 96 | |||
| 97 | make info | ||
| 98 | |||
| 99 | (change "make" to "nmake" if you use MSVC). | ||
| 100 | |||
| 101 | 5. Install the produced binaries: | ||
| 102 | |||
| 103 | make install | ||
| 104 | |||
| 105 | That's it! | ||
| 106 | |||
| 107 | If these short instructions somehow fail, read the rest of this | ||
| 108 | file. | ||
| 109 | |||
| 110 | * Preliminaries | ||
| 111 | |||
| 112 | If you want to build a Cygwin port of Emacs, use the instructions in | ||
| 113 | the INSTALL file in the main Emacs directory (the parent of this | ||
| 114 | directory). These instructions are for building a native Windows | ||
| 115 | binary of Emacs. | ||
| 116 | |||
| 117 | If you used WinZip to unpack the distribution, we suggest to | ||
| 118 | remove the files and unpack again with a different program! | ||
| 119 | WinZip is known to create some subtle and hard to debug problems, | ||
| 120 | such as converting files to DOS CR-LF format, not creating empty | ||
| 121 | directories, etc. We suggest to use djtarnt.exe from the GNU FTP | ||
| 122 | site. For modern formats, such as .tar.xz, we suggest bsdtar.exe | ||
| 123 | from the libarchive package; its precompiled Windows binaries are | ||
| 124 | available from this site: | ||
| 125 | |||
| 126 | http://sourceforge.net/projects/ezwinports/files/ | ||
| 127 | |||
| 128 | In addition to this file, if you build a development snapshot, you | ||
| 129 | should also read INSTALL.BZR in the parent directory. | ||
| 130 | |||
| 131 | * Supported development environments | ||
| 132 | |||
| 133 | To compile Emacs, you will need either Microsoft Visual C++ 2.0, or | ||
| 134 | later and nmake, or a Windows port of GCC 2.95 or later with MinGW | ||
| 135 | and Windows API support and a port of GNU Make. You can use the Cygwin | ||
| 136 | ports of GCC, but Emacs requires the MinGW headers and libraries to | ||
| 137 | build (latest versions of the Cygwin toolkit, at least since v1.3.3, | ||
| 138 | include the MinGW headers and libraries as an integral part). | ||
| 139 | |||
| 140 | The rest of this file assumes you have a working development | ||
| 141 | environment. If you just installed such an environment, try | ||
| 142 | building a trivial C "Hello world" program, and see if it works. If | ||
| 143 | it doesn't work, resolve that problem first! If you use Microsoft | ||
| 144 | Visual Studio .NET 2003, don't forget to run the VCVARS32.BAT batch | ||
| 145 | file from the `Bin' subdirectory of the directory where you have | ||
| 146 | installed VS.NET. With other versions of MSVC, run the SetEnv.cmd | ||
| 147 | batch file from the `Bin' subdirectory of the directory where you | ||
| 148 | have the SDK installed. | ||
| 149 | |||
| 150 | If you use the MinGW port of GCC and GNU Make to build Emacs, there | ||
| 151 | are some compatibility issues wrt Make and the shell that is run by | ||
| 152 | Make, either the standard COMMAND.COM/CMD.EXE supplied with Windows | ||
| 153 | or sh.exe, a port of a Unixy shell. For reference, below is a list | ||
| 154 | of which builds of GNU Make are known to work or not, and whether | ||
| 155 | they work in the presence and/or absence of sh.exe, the Cygwin port | ||
| 156 | of Bash. Note that any version of Make that is compiled with Cygwin | ||
| 157 | will only work with Cygwin tools, due to the use of Cygwin style | ||
| 158 | paths. This means Cygwin Make is unsuitable for building parts of | ||
| 159 | Emacs that need to invoke Emacs itself (leim and "make bootstrap", | ||
| 160 | for example). Also see the Trouble-shooting section below if you | ||
| 161 | decide to go ahead and use Cygwin make. | ||
| 162 | |||
| 163 | In addition, using 4NT or TCC as your shell is known to fail the | ||
| 164 | build process, at least since 4NT version 3.01. Use CMD.EXE, the | ||
| 165 | default Windows shell, instead. MSYS sh.exe also appears to cause | ||
| 166 | various problems, e.g., it is known to cause failures in commands | ||
| 167 | like "cmd /c FOO" in the Makefiles, because it thinks "/c" is a | ||
| 168 | Unix-style file name that needs conversion to the Windows format. | ||
| 169 | If you have MSYS installed, try "make SHELL=cmd.exe" to force the | ||
| 170 | use of cmd.exe instead of the MSYS sh.exe. | ||
| 171 | |||
| 172 | sh exists no sh | ||
| 173 | |||
| 174 | cygwin b20.1 make (3.75): fails[1, 5] fails[2, 5] | ||
| 175 | MSVC compiled gmake 3.77: okay okay | ||
| 176 | MSVC compiled gmake 3.78.1: okay okay | ||
| 177 | MSVC compiled gmake 3.79.1: okay okay | ||
| 178 | mingw32/gcc-2.92.2 make (3.77): okay okay[4] | ||
| 179 | cygwin compiled gmake 3.77: fails[1, 5] fails[2, 5] | ||
| 180 | cygwin compiled make 3.78.1: fails[5] fails[2, 5] | ||
| 181 | cygwin compiled make 3.79.1: fails[3, 5] fails[2?, 5] | ||
| 182 | cygwin compiled make 3.80: okay[6] fails?[7] | ||
| 183 | cygwin compiled make 3.81: fails fails?[7] | ||
| 184 | mingw32 compiled make 3.79.1: okay okay | ||
| 185 | mingw32 compiled make 3.80: okay okay[7] | ||
| 186 | mingw32 compiled make 3.81: okay okay[8] | ||
| 187 | |||
| 188 | Notes: | ||
| 189 | |||
| 190 | [1] doesn't cope with makefiles with DOS line endings, so must mount | ||
| 191 | emacs source with text!=binary. | ||
| 192 | [2] fails when needs to invoke shell commands; okay invoking gcc etc. | ||
| 193 | [3] requires LC_MESSAGES support to build; cannot build with early | ||
| 194 | versions of Cygwin. | ||
| 195 | [4] may fail on Windows 9X and Windows ME; if so, install Bash. | ||
| 196 | [5] fails when building leim due to the use of cygwin style paths. | ||
| 197 | May work if building emacs without leim. | ||
| 198 | [6] need to uncomment 3 lines in nt/gmake.defs that invoke `cygpath' | ||
| 199 | (look for "cygpath" near line 85 of gmake.defs). | ||
| 200 | [7] not recommended; please report if you try this combination. | ||
| 201 | [8] tested only on Windows XP. | ||
| 202 | |||
| 203 | Other compilers may work, but specific reports from people that have | ||
| 204 | tried suggest that the Intel C compiler (for example) may produce an | ||
| 205 | Emacs executable with strange filename completion behavior. Unless | ||
| 206 | you would like to assist by finding and fixing the cause of any bugs | ||
| 207 | like this, we recommend the use of the supported compilers mentioned | ||
| 208 | in the previous paragraph. | ||
| 209 | |||
| 210 | You will also need a copy of the POSIX cp, rm and mv programs. These | ||
| 211 | and other useful POSIX utilities can be obtained from one of several | ||
| 212 | projects: | ||
| 213 | |||
| 214 | * http://gnuwin32.sourceforge.net/ ( GnuWin32 ) | ||
| 215 | * http://www.mingw.org/ ( MinGW ) | ||
| 216 | * http://www.cygwin.com/ ( Cygwin ) | ||
| 217 | * http://unxutils.sourceforge.net/ ( UnxUtils ) | ||
| 218 | |||
| 219 | If you build Emacs on 16-bit versions of Windows (9X or ME), we | ||
| 220 | suggest to install the Cygwin port of Bash. That is because the | ||
| 221 | native Windows shell COMMAND.COM is too limited; the Emacs build | ||
| 222 | procedure tries very hard to support even such limited shells, but | ||
| 223 | as none of the Windows developers of Emacs work on Windows 9X, we | ||
| 224 | cannot guarantee that it works without a more powerful shell. | ||
| 225 | |||
| 226 | Additional instructions and help for building Emacs on Windows can be | ||
| 227 | found at the Emacs Wiki: | ||
| 228 | |||
| 229 | http://www.emacswiki.org/cgi-bin/wiki/WThirtyTwoInstallationKit | ||
| 230 | |||
| 231 | and on these URLs: | ||
| 232 | |||
| 233 | http://ourcomments.org/Emacs/w32-build-emacs.html | ||
| 234 | http://derekslager.com/blog/posts/2007/01/emacs-hack-3-compile-emacs-from-cvs-on-windows.ashx | ||
| 235 | |||
| 236 | Both of those pages were written before Emacs switched from CVS to | ||
| 237 | Bazaar, but the parts about building Emacs still apply in Bazaar. | ||
| 238 | The second URL has instructions for building with MSVC, as well as | ||
| 239 | with MinGW, while the first URL covers only MinGW, but has more | ||
| 240 | details about it. | ||
| 241 | |||
| 242 | * Configuring | ||
| 243 | |||
| 244 | Configuration of Emacs is now handled by running configure.bat in the | ||
| 245 | `nt' subdirectory. It will detect which compiler you have available, | ||
| 246 | and generate makefiles accordingly. You can override the compiler | ||
| 247 | detection, and control optimization and debug settings, by specifying | ||
| 248 | options on the command line when invoking configure. | ||
| 249 | |||
| 250 | To configure Emacs to build with GCC or MSVC, whichever is available, | ||
| 251 | simply change to the `nt' subdirectory and run `configure.bat' with no | ||
| 252 | options. To see what options are available, run `configure --help'. | ||
| 253 | Do NOT use the --no-debug option to configure.bat unless you are | ||
| 254 | absolutely sure the produced binaries will never need to be run under | ||
| 255 | a debugger. | ||
| 256 | |||
| 257 | Because of limitations of the stock Windows command shells, special | ||
| 258 | care is needed to pass some characters in the arguments of the | ||
| 259 | --cflags and --ldflags options. Backslashes should not be used in | ||
| 260 | file names passed to the compiler and linker via these options. Use | ||
| 261 | forward slashes instead. If the arguments to these two options | ||
| 262 | include the `=' character, like when passing a -DFOO=bar preprocessor | ||
| 263 | option, the argument with the `=' character should be enclosed in | ||
| 264 | quotes, like this: | ||
| 265 | |||
| 266 | configure --cflags "-DFOO=bar" | ||
| 267 | |||
| 268 | Support for options that include the `=' character require "command | ||
| 269 | extensions" to be enabled. (They are enabled by default, but your | ||
| 270 | system administrator could have changed that. See "cmd /?" for | ||
| 271 | details.) If command extensions are disabled, a warning message might | ||
| 272 | be displayed informing you that "using parameters that include the = | ||
| 273 | character by enclosing them in quotes will not be supported." | ||
| 274 | |||
| 275 | You may also use the --cflags and --ldflags options to pass | ||
| 276 | additional parameters to the compiler and linker, respectively; they | ||
| 277 | are frequently used to pass -I and -L flags to specify supplementary | ||
| 278 | include and library directories. If a directory name includes | ||
| 279 | spaces, you will need to enclose it in quotes, as follows | ||
| 280 | -I"C:/Program Files/GnuTLS-2.10.1/include". Note that only the | ||
| 281 | directory name is enclosed in quotes, not the entire argument. Also | ||
| 282 | note that this functionality is only supported if command extensions | ||
| 283 | are available. If command extensions are disabled and you attempt to | ||
| 284 | use this functionality you may see the following warning message | ||
| 285 | "Error in --cflags argument: ... Backslashes and quotes cannot be | ||
| 286 | used with --cflags. Please use forward slashes for filenames and | ||
| 287 | paths (e.g. when passing directories to -I)." | ||
| 288 | |||
| 289 | N.B. It is normal to see a few error messages output while configure | ||
| 290 | is running, when gcc support is being tested. These cannot be | ||
| 291 | suppressed because of limitations in the Windows 9X command.com shell. | ||
| 292 | |||
| 293 | You are encouraged to look at the file config.log which shows details | ||
| 294 | for failed tests, after configure.bat finishes. Any unexplained failure | ||
| 295 | should be investigated and perhaps reported as a bug (see the section | ||
| 296 | about reporting bugs in the file README in this directory and in the | ||
| 297 | Emacs manual). | ||
| 298 | |||
| 299 | * Optional image library support | ||
| 300 | |||
| 301 | In addition to its "native" image formats (pbm and xbm), Emacs can | ||
| 302 | handle other image types: xpm, tiff, gif, png, jpeg and experimental | ||
| 303 | support for svg. | ||
| 304 | |||
| 305 | To build Emacs with support for them, the corresponding headers must | ||
| 306 | be in the include path when the configure script is run. This can | ||
| 307 | be setup using environment variables, or by specifying --cflags | ||
| 308 | -I... options on the command-line to configure.bat. The configure | ||
| 309 | script will report whether it was able to detect the headers. If | ||
| 310 | the results of this testing appear to be incorrect, please look for | ||
| 311 | details in the file config.log: it will show the failed test | ||
| 312 | programs and compiler error messages that should explain what is | ||
| 313 | wrong. (Usually, any such failures happen because some headers are | ||
| 314 | missing due to bad packaging of the image support libraries.) | ||
| 315 | |||
| 316 | Note that any file path passed to the compiler or linker must use | ||
| 317 | forward slashes; using backslashes will cause compiler warnings or | ||
| 318 | errors about unrecognized escape sequences. | ||
| 319 | |||
| 320 | To use the external image support, the DLLs implementing the | ||
| 321 | functionality must be found when Emacs first needs them, either on the | ||
| 322 | PATH, or in the same directory as emacs.exe. Failure to find a | ||
| 323 | library is not an error; the associated image format will simply be | ||
| 324 | unavailable. Note that once Emacs has determined that a library can | ||
| 325 | not be found, there's no way to force it to try again, other than | ||
| 326 | restarting. See the variable `dynamic-library-alist' to configure the | ||
| 327 | expected names of the libraries. | ||
| 328 | |||
| 329 | Some image libraries have dependencies on one another, or on zlib. | ||
| 330 | For example, tiff support depends on the jpeg library. If you did not | ||
| 331 | compile the libraries yourself, you must make sure that any dependency | ||
| 332 | is in the PATH or otherwise accessible and that the binaries are | ||
| 333 | compatible (for example, that they were built with the same compiler). | ||
| 334 | |||
| 335 | Binaries for the image libraries (among many others) can be found at | ||
| 336 | the GnuWin32 project. PNG, JPEG and TIFF libraries are also | ||
| 337 | included with GTK, which is installed along with other Free Software | ||
| 338 | that requires it. These are built with MinGW, but they can be used | ||
| 339 | with both GCC/MinGW and MSVC builds of Emacs. See the info on | ||
| 340 | http://ourcomments.org/Emacs/w32-build-emacs.html, under "How to Get | ||
| 341 | Images Support", for more details about installing image support | ||
| 342 | libraries. Note specifically that, due to some packaging snafus in | ||
| 343 | the GnuWin32-supplied image libraries, you will need to download | ||
| 344 | _source_ packages for some of the libraries in order to get the | ||
| 345 | header files necessary for building Emacs with image support. | ||
| 346 | |||
| 347 | If GTK 2.0 is installed, addpm will arrange for its image libraries | ||
| 348 | to be on the DLL search path for Emacs. | ||
| 349 | |||
| 350 | For PNG images, we recommend to use versions 1.4.x and later of | ||
| 351 | libpng, because previous versions had security issues. You can find | ||
| 352 | precompiled libraries and headers on the GTK download page for | ||
| 353 | Windows (http://www.gtk.org/download/win32.php). | ||
| 354 | |||
| 355 | Versions 1.4.0 and later of libpng are binary incompatible with | ||
| 356 | earlier versions, so Emacs will only look for libpng libraries which | ||
| 357 | are compatible with the version it was compiled against. That | ||
| 358 | version is given by the value of the Lisp variable `libpng-version'; | ||
| 359 | e.g., 10403 means version 1.4.3. The variable `dynamic-library-alist' | ||
| 360 | is automatically set to name only those DLL names that are known to | ||
| 361 | be compatible with the version given by `libpng-version'. If PNG | ||
| 362 | support does not work for you even though you have the support DLL | ||
| 363 | installed, check the name of the installed DLL against | ||
| 364 | `dynamic-library-alist' and the value of `libpng-version', and | ||
| 365 | download compatible DLLs if needed. | ||
| 366 | |||
| 367 | * Optional GnuTLS support | ||
| 368 | |||
| 369 | If configure.bat finds the gnutls/gnutls.h file in the include path, | ||
| 370 | Emacs is built with GnuTLS support by default; to avoid that you can | ||
| 371 | pass the argument --without-gnutls. | ||
| 372 | |||
| 373 | In order to support GnuTLS at runtime, a GnuTLS-enabled Emacs must | ||
| 374 | be able to find the relevant DLLs during startup; failure to do so | ||
| 375 | is not an error, but GnuTLS won't be available to the running | ||
| 376 | session. | ||
| 377 | |||
| 378 | You can get pre-built binaries (including any required DLL and the | ||
| 379 | header files) at http://sourceforge.net/projects/ezwinports/files/. | ||
| 380 | |||
| 381 | * Optional libxml2 support | ||
| 382 | |||
| 383 | If configure.bat finds the libxml/HTMLparser.h file in the include path, | ||
| 384 | Emacs is built with libxml2 support by default; to avoid that you can | ||
| 385 | pass the argument --without-libxml2. | ||
| 386 | |||
| 387 | In order to support libxml2 at runtime, a libxml2-enabled Emacs must | ||
| 388 | be able to find the relevant DLLs during startup; failure to do so | ||
| 389 | is not an error, but libxml2 features won't be available to the | ||
| 390 | running session. | ||
| 391 | |||
| 392 | One place where you can get pre-built Windows binaries of libxml2 | ||
| 393 | (including any required DLL and the header files) is here: | ||
| 394 | |||
| 395 | http://sourceforge.net/projects/ezwinports/files/ | ||
| 396 | |||
| 397 | To compile Emacs with libxml2 from that site, you will need to pass | ||
| 398 | the "--cflags -I/path/to/include/libxml2" option to configure.bat, | ||
| 399 | because libxml2 header files are installed in the include/libxml2 | ||
| 400 | subdirectory of the directory where you unzip the binary | ||
| 401 | distribution. Other binary distributions might use other | ||
| 402 | directories, although include/libxml2 is the canonical place where | ||
| 403 | libxml2 headers are installed on Posix platforms. | ||
| 404 | |||
| 405 | You will also need to install the libiconv "development" tarball, | ||
| 406 | because the libiconv headers need to be available to the compiler | ||
| 407 | when you compile with libxml2 support. A MinGW port of libiconv can | ||
| 408 | be found on the MinGW site: | ||
| 409 | |||
| 410 | http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/ | ||
| 411 | |||
| 412 | You need the libiconv-X.Y.Z-N-mingw32-dev.tar.lzma tarball from that | ||
| 413 | site. | ||
| 414 | |||
| 415 | * Experimental SVG support | ||
| 416 | |||
| 417 | SVG support is currently experimental, and not built by default. | ||
| 418 | Specify --with-svg and ensure you have all the dependencies in your | ||
| 419 | include path. Unless you have built a minimalist librsvg yourself | ||
| 420 | (untested), librsvg depends on a significant chunk of GTK+ to build, | ||
| 421 | plus a few Gnome libraries, libxml2, libbz2 and zlib at runtime. The | ||
| 422 | easiest way to obtain the dependencies required for building is to | ||
| 423 | download a pre-bundled GTK+ development environment for Windows. | ||
| 424 | GTK puts its header files all over the place, so you will need to | ||
| 425 | run pkgconfig to list the include path you will need (either passed | ||
| 426 | to configure.bat as --cflags options, or set in the environment). | ||
| 427 | |||
| 428 | To use librsvg at runtime, ensure that librsvg and its dependencies | ||
| 429 | are on your PATH. If you didn't build librsvg yourself, you will | ||
| 430 | need to check with where you downloaded it from for the | ||
| 431 | dependencies, as there are different build options. If it is a | ||
| 432 | short list, then it most likely only lists the immediate | ||
| 433 | dependencies of librsvg, but the dependencies themselves have | ||
| 434 | dependencies - so don't download individual libraries from GTK+, | ||
| 435 | download and install the whole thing. If you think you've got all | ||
| 436 | the dependencies and SVG support is still not working, check your | ||
| 437 | PATH for other libraries that shadow the ones you downloaded. | ||
| 438 | Libraries of the same name from different sources may not be | ||
| 439 | compatible, this problem was encountered with libbzip2 from GnuWin32 | ||
| 440 | with libcroco from gnome.org. | ||
| 441 | |||
| 442 | If you can see etc/images/splash.svg, then you have managed to get | ||
| 443 | SVG support working. Congratulations for making it through DLL hell | ||
| 444 | to this point. You'll probably find that some SVG images crash | ||
| 445 | Emacs. Problems have been observed in some images that contain | ||
| 446 | text, they seem to be a problem in the Windows port of Pango, or | ||
| 447 | maybe a problem with the way Cairo or librsvg is using it that | ||
| 448 | doesn't show up on other platforms. | ||
| 449 | |||
| 450 | * Optional extra runtime checks | ||
| 451 | |||
| 452 | The configure.bat option --enable-checking builds Emacs with some | ||
| 453 | optional extra runtime checks and assertions enabled. This may be | ||
| 454 | useful for debugging. | ||
| 455 | |||
| 456 | * Optional extra libraries | ||
| 457 | |||
| 458 | You can pass --lib LIBNAME option to configure.bat to cause Emacs to | ||
| 459 | link with the specified library. You can use this option more than once. | ||
| 460 | |||
| 461 | * Building | ||
| 462 | |||
| 463 | After running configure, simply run the appropriate `make' program for | ||
| 464 | your compiler to build Emacs. For MSVC, this is nmake; for GCC, it is | ||
| 465 | GNU make. (If you are building out of Bazaar, say "make bootstrap" or | ||
| 466 | "nmake bootstrap" instead.) | ||
| 467 | |||
| 468 | As the files are compiled, you will see some warning messages | ||
| 469 | declaring that some functions don't return a value, or that some data | ||
| 470 | conversions will be lossy, etc. You can safely ignore these messages. | ||
| 471 | The warnings may be fixed in the main FSF source at some point, but | ||
| 472 | until then we will just live with them. | ||
| 473 | |||
| 474 | With GNU Make, you can use the -j command-line option to have Make | ||
| 475 | execute several commands at once, like this: | ||
| 476 | |||
| 477 | gmake -j 4 XMFLAGS="-j 3" | ||
| 478 | |||
| 479 | The XMFLAGS variable overrides the default behavior of GNU Make on | ||
| 480 | Windows, whereby recursive Make invocations reset the maximum number | ||
| 481 | of simultaneous commands to 1. The above command allows up to 4 | ||
| 482 | simultaneous commands at once in the top-level Make, and up to 3 in | ||
| 483 | each one of the recursive Make's; you can use other numbers of jobs, | ||
| 484 | if you wish. | ||
| 485 | |||
| 486 | If you are building from Bazaar, the following commands will produce | ||
| 487 | the Info manuals (which are not part of the Bazaar sources): | ||
| 488 | |||
| 489 | make info | ||
| 490 | or | ||
| 491 | nmake info | ||
| 492 | |||
| 493 | Note that you will need makeinfo.exe (from the GNU Texinfo package) | ||
| 494 | in order for this command to succeed. | ||
| 495 | |||
| 496 | * Installing | ||
| 497 | |||
| 498 | To install Emacs after it has compiled, simply run `nmake install' | ||
| 499 | or `make install', depending on which version of the Make utility | ||
| 500 | do you have. | ||
| 501 | |||
| 502 | By default, Emacs will be installed in the location where it was | ||
| 503 | built, but a different location can be specified either using the | ||
| 504 | --prefix option to configure, or by setting INSTALL_DIR when running | ||
| 505 | make, like so: | ||
| 506 | |||
| 507 | make install INSTALL_DIR=D:/emacs | ||
| 508 | |||
| 509 | (for `nmake', type "nmake install INSTALL_DIR=D:/emacs" instead). | ||
| 510 | |||
| 511 | The install process will run addpm to setup the registry entries, and | ||
| 512 | to create a Start menu icon for Emacs. | ||
| 513 | |||
| 514 | * Make targets | ||
| 515 | |||
| 516 | The following make targets may be used by users building the source | ||
| 517 | distribution, or users who have checked out of Bazaar after | ||
| 518 | an initial bootstrapping. | ||
| 519 | |||
| 520 | make | ||
| 521 | Builds Emacs from the available sources and pre-compiled lisp files. | ||
| 522 | |||
| 523 | make install | ||
| 524 | Installs programs to the bin directory, and runs addpm to create | ||
| 525 | Start Menu icons. | ||
| 526 | |||
| 527 | make clean | ||
| 528 | Removes object and executable files produced by the build process in | ||
| 529 | the current configuration. After make clean, you can rebuild with | ||
| 530 | the same configuration using make. | ||
| 531 | |||
| 532 | make distclean | ||
| 533 | In addition to the files removed by make clean, this also removes | ||
| 534 | Makefiles and other generated files to get back to the state of a | ||
| 535 | freshly unpacked source distribution. Note that this will not remove | ||
| 536 | installed files, or the results of builds performed with different | ||
| 537 | compiler or optimization options than the current configuration. | ||
| 538 | After make distclean, it is necessary to run configure.bat followed | ||
| 539 | by make to rebuild. | ||
| 540 | |||
| 541 | make cleanall | ||
| 542 | Removes object and executable files that may have been created by | ||
| 543 | previous builds with different configure options, in addition to | ||
| 544 | the files produced by the current configuration. | ||
| 545 | |||
| 546 | make realclean | ||
| 547 | Removes the installed files in the bin subdirectory in addition to | ||
| 548 | the files removed by make cleanall. | ||
| 549 | |||
| 550 | make dist | ||
| 551 | Builds Emacs from the available sources and pre-compiled lisp files. | ||
| 552 | Packages Emacs binaries as full distribution and barebin distribution. | ||
| 553 | |||
| 554 | The following targets are intended only for use with the Bazaar sources. | ||
| 555 | |||
| 556 | make bootstrap | ||
| 557 | Creates a temporary emacs binary with lisp source files and | ||
| 558 | uses it to compile the lisp files. Once the lisp files are built, | ||
| 559 | emacs is redumped with the compiled lisp. | ||
| 560 | |||
| 561 | make recompile | ||
| 562 | Recompiles any changed lisp files after an update. This saves | ||
| 563 | doing a full bootstrap after every update. If this or a subsequent | ||
| 564 | make fail, you probably need to perform a full bootstrap, though | ||
| 565 | running this target multiple times may eventually sort out the | ||
| 566 | interdependencies. | ||
| 567 | |||
| 568 | make maintainer-clean | ||
| 569 | Removes everything that can be recreated, including compiled lisp | ||
| 570 | files, to get back to the state of a fresh Bazaar tree. After make | ||
| 571 | maintainer-clean, it is necessary to run configure.bat and make | ||
| 572 | bootstrap to rebuild. Occasionally it may be necessary to run this | ||
| 573 | target after an update. | ||
| 574 | |||
| 575 | * Creating binary distributions | ||
| 576 | |||
| 577 | Binary distributions (full and barebin distributions) can be | ||
| 578 | automatically built and packaged from source tarballs or a bzr | ||
| 579 | checkout. | ||
| 580 | |||
| 581 | When building Emacs binary distributions, the --distfiles argument | ||
| 582 | to configure.bat specifies files to be included in the bin directory | ||
| 583 | of the binary distributions. This is intended for libraries that are | ||
| 584 | not built as part of Emacs, e.g. image libraries. | ||
| 585 | |||
| 586 | For example, specifying | ||
| 587 | |||
| 588 | --distfiles D:\distfiles\libXpm.dll | ||
| 589 | |||
| 590 | results in libXpm.dll being copied from D:\distfiles to the | ||
| 591 | bin directory before packaging starts. | ||
| 592 | |||
| 593 | Multiple files can be specified using multiple --distfiles arguments: | ||
| 594 | |||
| 595 | --distfiles D:\distfiles\libXpm.dll --distfiles C:\jpeglib\jpeg.dll | ||
| 596 | |||
| 597 | For packaging the binary distributions, the 'dist' make target uses | ||
| 598 | 7-Zip (http://www.7-zip.org), which must be installed and available | ||
| 599 | on the Windows Path. | ||
| 600 | |||
| 601 | |||
| 602 | * Trouble-shooting | ||
| 603 | |||
| 604 | The main problems that are likely to be encountered when building | ||
| 605 | Emacs stem from using an old version of GCC, or old MinGW or Windows API | ||
| 606 | headers. Additionally, Cygwin ports of GNU make may require the Emacs | ||
| 607 | source tree to be mounted with text!=binary, because the makefiles | ||
| 608 | generated by configure.bat necessarily use DOS line endings. Also, | ||
| 609 | Cygwin ports of make must run in UNIX mode, either by specifying | ||
| 610 | --unix on the command line, or MAKE_MODE=UNIX in the environment. | ||
| 611 | |||
| 612 | When configure runs, it attempts to detect when GCC itself, or the | ||
| 613 | headers it is using, are not suitable for building Emacs. GCC version | ||
| 614 | 2.95 or later is needed, because that is when the Windows port gained | ||
| 615 | sufficient support for anonymous structs and unions to cope with some | ||
| 616 | definitions from winnt.h that are used by addsection.c. | ||
| 617 | Older versions of the Windows API headers that come with Cygwin and MinGW | ||
| 618 | may be missing some definitions required by Emacs, or broken in other | ||
| 619 | ways. In particular, uniscribe APIs were added to MinGW CVS only on | ||
| 620 | 2006-03-26, so releases from before then cannot be used. | ||
| 621 | |||
| 622 | When in doubt about correctness of what configure did, look at the file | ||
| 623 | config.log, which shows all the failed test programs and compiler | ||
| 624 | messages associated with the failures. If that doesn't give a clue, | ||
| 625 | please report the problems, together with the relevant fragments from | ||
| 626 | config.log, as bugs. | ||
| 627 | |||
| 628 | If configure succeeds, but make fails, install the Cygwin port of | ||
| 629 | Bash, even if the table above indicates that Emacs should be able to | ||
| 630 | build without sh.exe. (Some versions of Windows shells are too dumb | ||
| 631 | for Makefile's used by Emacs.) | ||
| 632 | |||
| 633 | If you are using certain Cygwin builds of GCC, such as Cygwin version | ||
| 634 | 1.1.8, you may need to specify some extra compiler flags like so: | ||
| 635 | |||
| 636 | configure --with-gcc --cflags -mwin32 --cflags -D__MSVCRT__ | ||
| 637 | --ldflags -mwin32 | ||
| 638 | |||
| 639 | However, the latest Cygwin versions, such as 1.3.3, don't need those | ||
| 640 | switches; you can simply use "configure --with-gcc". | ||
| 641 | |||
| 642 | We will attempt to auto-detect the need for these flags in a future | ||
| 643 | release. | ||
| 644 | |||
| 645 | * Debugging | ||
| 646 | |||
| 647 | You should be able to debug Emacs using the debugger that is | ||
| 648 | appropriate for the compiler you used, namely DevStudio or Windbg if | ||
| 649 | compiled with MSVC, or GDB if compiled with GCC. (GDB for Windows | ||
| 650 | is available from the MinGW site, http://www.mingw.org/download.shtml.) | ||
| 651 | |||
| 652 | When Emacs aborts due to a fatal internal error, Emacs on Windows | ||
| 653 | pops up an Emacs Abort Dialog asking you whether you want to debug | ||
| 654 | Emacs or terminate it. If Emacs was built with MSVC, click YES | ||
| 655 | twice, and Windbg or the DevStudio debugger will start up | ||
| 656 | automatically. If Emacs was built with GCC, first start GDB and | ||
| 657 | attach it to the Emacs process with the "gdb -p EMACS-PID" command, | ||
| 658 | where EMACS-PID is the Emacs process ID (which you can see in the | ||
| 659 | Windows Task Manager), type the "continue" command inside GDB, and | ||
| 660 | only then click YES on the abort dialog. This will pass control to | ||
| 661 | the debugger, and you will be able to debug the cause of the fatal | ||
| 662 | error. | ||
| 663 | |||
| 664 | The single most important thing to find out when Emacs aborts or | ||
| 665 | crashes is where did that happen in the Emacs code. This is called | ||
| 666 | "backtrace". | ||
| 667 | |||
| 668 | Emacs on Windows uses more than one thread. When Emacs aborts due | ||
| 669 | to a fatal error, the current thread may not be the application | ||
| 670 | thread running Emacs code. Therefore, to produce a meaningful | ||
| 671 | backtrace from a debugger, you need to instruct it to show the | ||
| 672 | backtrace for every thread. With GDB, you do it like this: | ||
| 673 | |||
| 674 | (gdb) thread apply all backtrace | ||
| 675 | |||
| 676 | To run Emacs under a debugger to begin with, simply start it from | ||
| 677 | the debugger. With GDB, chdir to the `src' directory (if you have | ||
| 678 | the source tree) or to a directory with the `.gdbinit' file (if you | ||
| 679 | don't have the source tree), and type these commands: | ||
| 680 | |||
| 681 | C:\whatever\src> gdb x:\path\to\emacs.exe | ||
| 682 | (gdb) run <ARGUMENTS TO EMACS> | ||
| 683 | |||
| 684 | Thereafter, use Emacs as usual; you can minimize the debugger | ||
| 685 | window, if you like. The debugger will take control if and when | ||
| 686 | Emacs crashes. | ||
| 687 | |||
| 688 | Emacs functions implemented in C use a naming convention that reflects | ||
| 689 | their names in lisp. The names of the C routines are the lisp names | ||
| 690 | prefixed with 'F', and with dashes converted to underscores. For | ||
| 691 | example, the function call-process is implemented in C by | ||
| 692 | Fcall_process. Similarly, lisp variables are prefixed with 'V', again | ||
| 693 | with dashes converted to underscores. These conventions enable you to | ||
| 694 | easily set breakpoints or examine familiar lisp variables by name. | ||
| 695 | |||
| 696 | Since Emacs data is often in the form of a lisp object, and the | ||
| 697 | Lisp_Object type is difficult to examine manually in a debugger, | ||
| 698 | Emacs provides a helper routine called debug_print that prints out a | ||
| 699 | readable representation of a Lisp_Object. If you are using GDB, | ||
| 700 | there is a .gdbinit file in the src directory which provides | ||
| 701 | definitions that are useful for examining lisp objects. Therefore, | ||
| 702 | the following tips are mainly of interest when using MSVC. | ||
| 703 | |||
| 704 | The output from debug_print is sent to stderr, and to the debugger | ||
| 705 | via the OutputDebugString routine. The output sent to stderr should | ||
| 706 | be displayed in the console window that was opened when the | ||
| 707 | emacs.exe executable was started. The output sent to the debugger | ||
| 708 | should be displayed in its "Debug" output window. | ||
| 709 | |||
| 710 | When you are in the process of debugging Emacs and you would like to | ||
| 711 | examine the contents of a Lisp_Object variable, pop up the QuickWatch | ||
| 712 | window (QuickWatch has an eyeglass symbol on its button in the | ||
| 713 | toolbar). In the text field at the top of the window, enter | ||
| 714 | debug_print(<variable>) and hit return. For example, start and run | ||
| 715 | Emacs in the debugger until it is waiting for user input. Then click | ||
| 716 | on the Break button in the debugger to halt execution. Emacs should | ||
| 717 | halt in ZwUserGetMessage waiting for an input event. Use the Call | ||
| 718 | Stack window to select the procedure w32_msp_pump up the call stack | ||
| 719 | (see below for why you have to do this). Open the QuickWatch window | ||
| 720 | and enter debug_print(Vexec_path). Evaluating this expression will | ||
| 721 | then print out the contents of the lisp variable exec-path. | ||
| 722 | |||
| 723 | If QuickWatch reports that the symbol is unknown, then check the call | ||
| 724 | stack in the Call Stack window. If the selected frame in the call | ||
| 725 | stack is not an Emacs procedure, then the debugger won't recognize | ||
| 726 | Emacs symbols. Instead, select a frame that is inside an Emacs | ||
| 727 | procedure and try using debug_print again. | ||
| 728 | |||
| 729 | If QuickWatch invokes debug_print but nothing happens, then check the | ||
| 730 | thread that is selected in the debugger. If the selected thread is | ||
| 731 | not the last thread to run (the "current" thread), then it cannot be | ||
| 732 | used to execute debug_print. Use the Debug menu to select the current | ||
| 733 | thread and try using debug_print again. Note that the debugger halts | ||
| 734 | execution (e.g., due to a breakpoint) in the context of the current | ||
| 735 | thread, so this should only be a problem if you've explicitly switched | ||
| 736 | threads. | ||
| 737 | |||
| 738 | |||
| 739 | This file is part of GNU Emacs. | ||
| 740 | |||
| 741 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 742 | it under the terms of the GNU General Public License as published by | ||
| 743 | the Free Software Foundation, either version 3 of the License, or | ||
| 744 | (at your option) any later version. | ||
| 745 | |||
| 746 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 747 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 748 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 749 | GNU General Public License for more details. | ||
| 750 | |||
| 751 | You should have received a copy of the GNU General Public License | ||
| 752 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| @@ -67,10 +67,10 @@ | |||
| 67 | 67 | ||
| 68 | * Further information | 68 | * Further information |
| 69 | 69 | ||
| 70 | There is a web page that serves as a FAQ for the Windows port of | 70 | The FAQ for the MS Windows port of Emacs is distributed with Emacs |
| 71 | Emacs (a.k.a. NTEmacs) at: | 71 | (info manual "efaq-w32"), and also available at |
| 72 | 72 | ||
| 73 | http://www.gnu.org/software/emacs/windows/ntemacs.html | 73 | http://www.gnu.org/software/emacs/manual/efaq-w32.html |
| 74 | 74 | ||
| 75 | There is also a mailing list for discussing issues related to this | 75 | There is also a mailing list for discussing issues related to this |
| 76 | port of Emacs. For information about the list, see this Web page: | 76 | port of Emacs. For information about the list, see this Web page: |
| @@ -108,11 +108,7 @@ | |||
| 108 | 108 | ||
| 109 | Use the built in bug reporting functionality in Emacs so that it | 109 | Use the built in bug reporting functionality in Emacs so that it |
| 110 | will be seen by the right people. You can use the command M-x | 110 | will be seen by the right people. You can use the command M-x |
| 111 | report-emacs-bug to create and send the bug report, but in some | 111 | report-emacs-bug to create and send the bug report. |
| 112 | cases there is a function to report bugs in a specific package; | ||
| 113 | e.g. M-x gnus-bug for Gnus, M-x c-submit-bug-report for C/C++/Java | ||
| 114 | mode, etc. | ||
| 115 | |||
| 116 | 112 | ||
| 117 | This file is part of GNU Emacs. | 113 | This file is part of GNU Emacs. |
| 118 | 114 | ||
diff --git a/nt/README.W32 b/nt/README.W32 index a2881ce1914..d81a308ae05 100644 --- a/nt/README.W32 +++ b/nt/README.W32 | |||
| @@ -18,12 +18,6 @@ See the end of the file for license conditions. | |||
| 18 | this file as part of the Emacs source distribution, please read | 18 | this file as part of the Emacs source distribution, please read |
| 19 | those 2 files and not this one. | 19 | those 2 files and not this one. |
| 20 | 20 | ||
| 21 | Answers to frequently asked questions, and further information about | ||
| 22 | this port of GNU Emacs and related software packages can be found via | ||
| 23 | http: | ||
| 24 | |||
| 25 | http://www.gnu.org/software/emacs/windows/ | ||
| 26 | |||
| 27 | * Preliminaries | 21 | * Preliminaries |
| 28 | 22 | ||
| 29 | Along with this file should be six subdirectories (bin, etc, info, | 23 | Along with this file should be six subdirectories (bin, etc, info, |
| @@ -242,14 +236,10 @@ See the end of the file for license conditions. | |||
| 242 | 236 | ||
| 243 | * Further information | 237 | * Further information |
| 244 | 238 | ||
| 245 | If you have access to the World Wide Web, I would recommend pointing | 239 | The FAQ for the MS Windows port of Emacs is distributed with Emacs |
| 246 | your favorite web browser to the following document (if you haven't | 240 | (info manual "efaq-w32"), and also available at |
| 247 | already): | ||
| 248 | |||
| 249 | http://www.gnu.org/software/emacs/windows/ | ||
| 250 | 241 | ||
| 251 | This document serves as an FAQ and a source for further information | 242 | http://www.gnu.org/software/emacs/manual/efaq-w32.html |
| 252 | about the Windows port and related software packages. | ||
| 253 | 243 | ||
| 254 | In addition to the FAQ, there is a mailing list for discussing issues | 244 | In addition to the FAQ, there is a mailing list for discussing issues |
| 255 | related to the Windows port of Emacs. For information about the | 245 | related to the Windows port of Emacs. For information about the |
diff --git a/nt/configure.bat b/nt/configure.bat index 8f717fd4168..f98396bb81e 100755 --- a/nt/configure.bat +++ b/nt/configure.bat | |||
| @@ -60,7 +60,7 @@ rem [8] tested only on Windows XP. | |||
| 60 | rem | 60 | rem |
| 61 | echo **************************************************************** | 61 | echo **************************************************************** |
| 62 | echo *** THIS METHOD OF BUILDING EMACS IS NO LONGER SUPPORTED. ** | 62 | echo *** THIS METHOD OF BUILDING EMACS IS NO LONGER SUPPORTED. ** |
| 63 | echo *** INSTEAD, FOLLOW THE INSTRUCTIONS FROM INSTALL.MSYS. ** | 63 | echo *** INSTEAD, FOLLOW THE INSTRUCTIONS FROM INSTALL. ** |
| 64 | echo **************************************************************** | 64 | echo **************************************************************** |
| 65 | :confirm_continue | 65 | :confirm_continue |
| 66 | set /p answer=Continue running this script at your own risks ? (Y/N) | 66 | set /p answer=Continue running this script at your own risks ? (Y/N) |
| @@ -191,7 +191,7 @@ echo. | |||
| 191 | echo. IMPORTANT: This method of building Emacs for MS-Windows is deprecated, | 191 | echo. IMPORTANT: This method of building Emacs for MS-Windows is deprecated, |
| 192 | echo. and could be removed in a future version of Emacs. The preferred way | 192 | echo. and could be removed in a future version of Emacs. The preferred way |
| 193 | echo to build Emacs for MS-Windows from now on is using the MSYS environment | 193 | echo to build Emacs for MS-Windows from now on is using the MSYS environment |
| 194 | echo. and MinGW development tools. Please see nt/INSTALL.MSYS for details. | 194 | echo. and MinGW development tools. Please see nt/INSTALL for details. |
| 195 | goto end | 195 | goto end |
| 196 | 196 | ||
| 197 | rem ---------------------------------------------------------------------- | 197 | rem ---------------------------------------------------------------------- |