]> code.delx.au - gnu-emacs/blob - nt/INSTALL
Merge from origin/emacs-24
[gnu-emacs] / nt / INSTALL
1 Building and Installing Emacs on MS-Windows
2 using the MSYS and MinGW tools
3
4 Copyright (C) 2013-2015 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 XP and newer. Building on Windows 2000
9 and Windows 9X is not supported (but the Emacs binary produced by this
10 build will run on Windows 9X and newer systems).
11
12 Do not use this recipe with Cygwin. For building on Cygwin, use the
13 normal installation instructions, ../INSTALL.
14
15 * For the brave (a.k.a. "impatient"):
16
17 For those who have a working MSYS/MinGW development environment and
18 are comfortable with running Posix configure scripts, here are the
19 concise instructions for configuring and building the native Windows
20 binary of Emacs with these tools:
21
22 0. Start the MSYS Bash window. Everything else below is done from
23 that window's Bash prompt.
24
25 0a. If you are building from the development trunk (as opposed to a
26 release tarball), produce the configure script, by typing from
27 the top-level Emacs source directory:
28
29 ./autogen.sh
30
31 1. If you want to build Emacs outside of the source tree
32 (recommended), create the build directory and chdir there.
33
34 2. Invoke the configure script:
35
36 - If you are building outside the source tree:
37
38 /PATH/TO/EMACS/SOURCE/TREE/configure --prefix=PREFIX ...
39
40 - If you are building in-place, i.e. inside the source tree:
41
42 ./configure --prefix=PREFIX ...
43
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). The prefix must be absolute.
48
49 You can pass other options to the configure script. Here's a
50 typical example (for an in-place debug build):
51
52 CFLAGS='-O0 -g3' ./configure --prefix=/d/usr/emacs --enable-checking='yes,glyphs'
53
54 3. After the configure script finishes, it should display the
55 resulting configuration. After that, type
56
57 make
58
59 Use "make -j N" if your MSYS Make supports parallel execution;
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.
63
64 4. Install the produced binaries:
65
66 make install
67
68 If you want the installation tree to go to a place that is
69 different from the one specified by --prefix, say
70
71 make install prefix=/where/ever/you/want
72
73 That's it!
74
75 If these short instructions somehow fail, read the rest of this
76 file.
77
78 * Installing MinGW and MSYS
79
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
85 There are two alternatives to installing MinGW + MSYS: using the GUI
86 installer, called mingw-get, provided by the MinGW project, or
87 manual installation. The next two sections describe each one of
88 these.
89
90 ** Installing MinGW and MSYS using mingw-get
91
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:
95
96 https://sourceforge.net/projects/mingw/files/Installer/mingw-get/
97
98 (This installer only supports packages downloaded from the MinGW
99 site; for the rest you will still need the manual method.)
100
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.
104
105 After that, use "mingw-get install PACKAGE" to install the following
106 additional packages:
107
108 . msys-base
109 . mingw-developer-toolkit
110
111 When the installation ends, perform the post-installation steps
112 described on this page of the MinGW site:
113
114 http://www.mingw.org/wiki/Getting_Started
115
116 in the "After Installing You Should ..." section. These steps are
117 important for making your installation complete, and in particular
118 will produce a desktop shortcut for running the MSYS Bash shell,
119 from which you will configure and build Emacs. Once you've made the
120 shortcut, double-click on it to open the MSYS Bash shell window,
121 where you will proceed with the rest of these instructions.
122
123 In addition, we suggest to modify your system-wide Path variable to
124 include the 'bin' subdirectory of your top-level MinGW installation
125 directory, the one you specified to mingw-get ("C:\MinGW" by
126 default). This will allow you to invoke the MinGW development
127 tools, like GCC, from the Windows cmd.exe shell windows or from
128 other Windows programs (including Emacs, after you build and install
129 it).
130
131 (We recommend that you refrain from installing the MSYS Texinfo
132 package, which is part of msys-base, because it might produce mixed
133 EOL format when installing Info files. Instead, install the MinGW
134 port of Texinfo, see the ezwinports URL below. To uninstall the
135 MSYS Texinfo, after installing it as part of msys-base, invoke the
136 command "mingw-get remove msys-texinfo", or mark "msys-texinfo" for
137 removal in the mingw-get GUI, then select Installation->Apply Changes.)
138
139 At this point, you should be ready to configure and build Emacs in
140 its basic configuration. Skip to the "Generating the configure
141 script" section for the build instructions. If you want to build it
142 with image support and other optional libraries, read about the
143 optional libraries near the end of this document, before you start
144 the build. Also, consider installing additional MinGW packages that
145 are required/recommended, especially if you are building from the
146 repository, as described in the next section.
147
148 ** Installing MinGW and MSYS manually
149
150 *** MinGW
151
152 You will need to install the MinGW port of GCC and Binutils, and the
153 MinGW runtime and Windows API distributions, to compile Emacs. You
154 can find these on the MinGW download/Base page:
155
156 https://sourceforge.net/projects/mingw/files/MinGW/Base/
157
158 In general, install the latest stable versions of the following
159 MinGW packages from that page: gcc, binutils, mingw-rt, w32api. You
160 only need the 'bin' and the 'dll' tarballs of each of the above.
161
162 MinGW packages are distributed as .tar.lzma compressed archives. To
163 install the packages manually, we recommend to use the Windows port
164 of the 'bsdtar' program to unpack the tarballs. 'bsdtar' is
165 available as part of the 'libarchive' package from here:
166
167 http://sourceforge.net/projects/ezwinports/files/
168
169 The recommended place to install these packages is a single tree
170 starting from some directory on a drive other than the system drive
171 C:. A typical example would be D:\usr, with D:\usr\bin holding the
172 binaries and DLLs (should be added to your Path environment
173 variable), D:\usr\include holding the include files, D:\usr\lib
174 holding the static and import libraries, D:\usr\share holding docs,
175 message catalogs, and package-specific subdirectories, etc.
176
177 Having all the headers and libraries in a single place will greatly
178 reduce the number of -I and -L flags you will have to pass to the
179 configure script (see below), as these files will be right where the
180 compiler expects them.
181
182 We specifically do NOT recommend installing packages below
183 "C:\Program Files" or "C:\Program Files (x86)". These directories
184 are protected on versions of Windows from Vista and on, and you will
185 have difficulties updating and maintaining your installation later,
186 due to UAC elevation prompts, file virtualization, etc. You *have*
187 been warned!
188
189 Additional MinGW packages are required/recommended, especially if
190 you are building from the repository:
191
192 . Texinfo (needed to produce the Info manuals when building from
193 the repository, and for "make install")
194
195 Available from http://sourceforge.net/projects/ezwinports/files/.
196
197 . pkg-config (invoked by the configure script to look for optional
198 packages)
199
200 Available from http://www.gtk.org/download/win32.php
201
202 . gzip (needed to compress files during "make install")
203
204 Available from http://gnuwin32.sourceforge.net/packages/gzip.htm.
205
206 Each package might list other packages as prerequisites on its
207 download page (under "Runtime requirements"); download those as
208 well. (Using the mingw-get installer will fetch those prerequisites
209 automatically for you.) A missing prerequisite will manifest itself
210 by the program failing to run and presenting a pop-up dialog that
211 states the missing or incompatible DLL; be sure to find and install
212 these missing DLLs.
213
214 Once you think you have MinGW installed, test the installation by
215 building a trivial "hello, world!" program, and make sure that it
216 builds without any error messages and the binary works when run.
217
218 *** MSYS
219
220 You will need a reasonably full MSYS installation. MSYS is an
221 environment needed to run the Posix configure scripts and the
222 resulting Makefile's, in order to produce native Windows binaries
223 using the MinGW compiler and runtime libraries. Here's the list of
224 MSYS packages that are required:
225
226 . All the packages from the MSYS Base distribution, listed here:
227
228 https://sourceforge.net/projects/mingw/files/MSYS/Base/
229
230 . Additional packages listed below, from the MSYS Extension
231 distribution here:
232
233 https://sourceforge.net/projects/mingw/files/MSYS/Extension/
234
235 - flex
236 - bison
237 - m4
238 - perl
239 - mktemp
240
241 These should only be needed if you intend to build development
242 versions of Emacs from the repository.
243
244 . Additional packages (needed only if building from the
245 repository): Automake and Autoconf. They are available from
246 here:
247
248 http://sourceforge.net/projects/ezwinports/files/automake-1.11.6-msys-bin.zip/download
249 http://sourceforge.net/projects/ezwinports/files/autoconf-2.65-msys-bin.zip/download
250
251 MSYS packages are distributed as .tar.lzma compressed archives. To
252 install the packages manually, we recommend to use the Windows port
253 of the 'bsdtar' program, already mentioned above.
254
255 MSYS packages should be installed in a separate tree from MinGW.
256 For example, use D:\MSYS or D:\usr\MSYS as the top-level directory
257 from which you unpack all of the MSYS packages.
258
259 After installing Automake and Autoconf, make sure any of the *.m4
260 files you might have in your MinGW installation also exist in the
261 MSYS installation tree, in the share/aclocal directory. Those *.m4
262 files which exist in the MinGW tree, but not in the MSYS tree should
263 be copied there.
264
265 If/when you are confident in your MinGW/MSYS installation, and want
266 to speed up the builds, we recommend installing a pre-release
267 version of Make from here:
268
269 https://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/
270
271 These are snapshot builds of many packages, but you only need
272 make.exe from there. The advantage of this make.exe is that it
273 supports parallel builds, so you can use "make -j N" to considerably
274 speed up your builds.
275
276 Several users reported that MSYS 1.0.18 causes Make to hang in
277 parallel builds. If you bump into this, we suggest to downgrade to
278 MSYS 1.0.17, which doesn't have that problem.
279
280 For each of these packages, install the 'bin' and 'dll' tarballs of
281 their latest stable releases. If there's an 'ext' tarball (e.g.,
282 msysCORE and Coreutils have it), download and install those as well.
283
284 Each package might list other packages as prerequisites on its
285 download page (under "Runtime requirements"); download those as
286 well. (Using the mingw-get installer will fetch those prerequisites
287 automatically for you.) A missing prerequisite will manifest itself
288 by the program failing to run and presenting a pop-up dialog that
289 states the missing or incompatible DLL; be sure to find and install
290 these missing DLLs.
291
292 Do NOT add the MSYS bin directory to your Windows Path! Only the
293 MinGW bin directory should be on Path. When you install MSYS, it
294 creates a shortcut on your desktop that invokes the MSYS Bash shell
295 in a Command Prompt window; that shell is already set up so that the
296 MSYS bin directory is on PATH ahead of any other directory. Thus,
297 Bash will find MSYS executables first, which is exactly what you
298 need.
299
300 * Starting the MSYS Bash shell
301
302 For most reliable and predictable results, we recommend to start
303 Bash by clicking the "MSYS" icon on your desktop. That icon is
304 created when you install MSYS, and using it is the official way of
305 running the MSYS tools.
306
307 For other methods of starting the shell, make sure Bash is invoked
308 with the "--login" command-line switch.
309
310 When the shell window opens and you get the shell prompt, change to
311 the directory where you intend to build Emacs.
312
313 At this point, you are ready to build Emacs in its basic
314 configuration. If you want to build it with image support and other
315 optional libraries, read about that near the end of this document.
316
317 * Generating the configure script
318
319 If you are building a release or pretest tarball, skip this section,
320 because the configure script is already present in the tarball.
321
322 To build a development snapshot from the Emacs repository,
323 you will first need to generate the configure script and a few other
324 auto-generated files.
325
326 To generate the configure script, type this at the MSYS Bash prompt
327 from the top-level directory of the Emacs source tree:
328
329 ./autogen.sh
330
331 If successful, this command should produce the following output:
332
333 $ ./autogen.sh
334 Checking whether you have the necessary tools...
335 (Read INSTALL.REPO for more details on building Emacs)
336
337 Checking for autoconf (need at least version 2.65)...
338 ok
339 Checking for automake (need at least version 1.11)...
340 ok
341 Your system has the required tools, running autoreconf...
342 You can now run `./configure'.
343
344 * Configuring Emacs for MinGW:
345
346 Now it's time to run the configure script. You can do that either
347 from a separate build directory that is outside of the Emacs source
348 tree (recommended), or from inside the source tree. The former is
349 recommended because it allows you to have several different builds,
350 e.g., an optimized build and an unoptimized one, of the same
351 revision of the source tree; the source tree will be left in its
352 pristine state, without any build products.
353
354 You invoke the configure script like this:
355
356 /PATH/TO/EMACS/SOURCE/TREE/configure --prefix=PREFIX ...
357
358 or, if you are building in-place, i.e. inside the source tree:
359
360 ./configure --prefix=PREFIX ...
361
362 Here PREFIX is the place where you eventually want to install Emacs
363 once built, e.g. /d/usr. We recommend to always use --prefix when
364 building Emacs on Windows, because the default '/usr/local' is not
365 appropriate for Windows: it will be mapped by MSYS to something like
366 C:\MSYS\local, and it will defeat the purpose of PREFIX, which is to
367 install programs in a single coherent tree resembling Posix systems.
368 Such a single-tree installation makes sure all the other programs
369 and packages ported from GNU or Unix systems will work seamlessly
370 together. Where exactly is the root of that tree on your system is
371 something only you, the user who builds Emacs, can know, and the
372 Emacs build process cannot guess, because usually there's no
373 '/usr/local' directory on any drive on Windows systems.
374
375 Do NOT use Windows-style x:/foo/bar file names on the configure
376 script command line; use the MSYS-style /x/foo/bar instead. Using
377 Windows-style file names was reported to cause subtle and hard to
378 figure out problems during the build. This applies both to the
379 command switches, such as --prefix=, and to the absolute file name
380 of 'configure', if you are building outside of the source tree.
381
382 You can pass additional options to the configure script, for the
383 full list type
384
385 ./configure --help
386
387 As explained in the help text, you may need to tell the script what
388 are the optional flags to invoke the compiler. This is needed if
389 some of your headers and libraries, e.g., those belonging to
390 optional image libraries, are installed in places where the compiler
391 normally doesn't look for them. (Remember that advice above to
392 avoid such situations? here's is where you will start paying for
393 disregarding that recommendation.) For example, if you have libpng
394 headers in C:\emacs\libs\libpng-1.2.37-lib\include and jpeg library
395 headers in C:\emacs\libs\jpeg-6b-4-lib\include, you will need to say
396 something like this:
397
398 CPPFLAGS='-I/c/emacs/libs/libpng-1.2.37-lib/include -I/c/emacs/libs/jpeg-6b-4-lib/include' ./configure --prefix=PREFIX
399
400 which is quite a mouth-full, especially if you have more directories
401 to specify... Perhaps you may wish to revisit your installation
402 decisions now.
403
404 If you have a global site-lisp directory from previous Emacs
405 installation, and you want Emacs to continue using it, specify it
406 via the --enable-locallisppath switch to 'configure', like this:
407
408 ./configure --prefix=PREFIX --enable-locallisppath="/d/usr/share/emacs/VERSION/site-lisp:/d/wherever/site-lisp"
409
410 Use the normal MSYS /d/foo/bar style to specify directories by their
411 absolute file names.
412
413 A few frequently used options are needed when you want to produce an
414 unoptimized binary with runtime checks enabled:
415
416 CFLAGS='-O0 -g3' ./configure --prefix=PREFIX --enable-checking='yes,glyphs'
417
418 Once invoked, the configure script will run for some time, and, if
419 successful, will eventually produce a summary of the configuration
420 similar to this:
421
422 Configured for `i686-pc-mingw32'.
423
424 Where should the build process find the source code? /path/to/emacs/sources
425 What compiler should emacs be built with? gcc -std=gnu99 -O0 -g3
426 Should Emacs use the GNU version of malloc? no
427 (The GNU allocators don't work with this system configuration.)
428 Should Emacs use a relocating allocator for buffers? no
429 Should Emacs use mmap(2) for buffer allocation? yes
430 What window system should Emacs use? w32
431 What toolkit should Emacs use? none
432 Where do we find X Windows header files? NONE
433 Where do we find X Windows libraries? NONE
434 Does Emacs use -lXaw3d? no
435 Does Emacs use -lXpm? yes
436 Does Emacs use -ljpeg? yes
437 Does Emacs use -ltiff? yes
438 Does Emacs use a gif library? yes
439 Does Emacs use a png library? yes
440 Does Emacs use -lrsvg-2? yes
441 Does Emacs use imagemagick? no
442 Does Emacs support sound? no
443 Does Emacs use -lgpm? no
444 Does Emacs use -ldbus? no
445 Does Emacs use -lgconf? no
446 Does Emacs use GSettings? no
447 Does Emacs use a file notification library? yes (w32)
448 Does Emacs use access control lists? yes
449 Does Emacs use -lselinux? no
450 Does Emacs use -lgnutls? yes
451 Does Emacs use -lxml2? yes
452 Does Emacs use -lfreetype? no
453 Does Emacs use -lm17n-flt? no
454 Does Emacs use -lotf? no
455 Does Emacs use -lxft? no
456 Does Emacs directly use zlib? yes
457 Does Emacs use toolkit scroll bars? yes
458
459 You are almost there, hang on.
460
461 If the output is significantly different, or if configure finishes
462 prematurely and displays some error message, you should examine the
463 configuration log in config.log and find the reason for the failure.
464
465 Once you succeeded in configuring Emacs, and just want to rebuild it
466 after updating your local repository from the main repository, you
467 don't need to re-run the configure script manually, unless you want
468 to change the configure-time options. Just typing "make" will
469 re-run configure if necessary with the exact same options you
470 specified originally, and then go on to invoking Make, described
471 below.
472
473 * Running Make.
474
475 This is simple: just type "make" and sit back, watching the fun.
476
477 If you installed a snapshot build of Make, the build will be much
478 faster if you type "make -j N" instead, where N is the number of
479 independent processing units on your machine. E.g., on a core i7
480 system try using N of 6 or even 8. (If this hangs, see the notes
481 above about downgrading to MSYS 1.0.17.)
482
483 When Make finishes, you can install the produced binaries:
484
485 make install
486
487 or, if you want the installed tree to go in a place different from
488 the configured one, type
489
490 make install prefix=WHEREVER
491
492 Congrats! You have built and installed your own Emacs!
493
494 * Make targets
495
496 The following make targets may be used by users building the source
497 distribution, or users who have checked out of the repository after
498 an initial bootstrapping.
499
500 make
501 Builds Emacs from the available sources and pre-compiled lisp files.
502
503 make install
504 Installs the built programs and the auxiliary files.
505
506 make clean
507 Removes object and executable files produced by the build process in
508 the current configuration. After "make clean", you can rebuild with
509 the same configuration using make. useful when you want to be sure
510 that all of the products are built from coherent sources.
511
512 make distclean
513 In addition to the files removed by make clean, this also removes
514 Makefiles and other generated files to get back to the state of a
515 freshly unpacked source distribution. After make distclean, it is
516 necessary to run the configure script followed by "make", in order
517 to rebuild.
518
519 The following targets are intended only for use with the repository
520 sources.
521
522 make bootstrap
523 Removes all the auto-generated files and all the *.elc byte-compiled
524 files, and builds Emacs from scratch. Useful when some change in
525 basic Emacs functionality makes byte compilation of updated files
526 fail.
527
528 make maintainer-clean
529 Removes everything that can be recreated, including compiled Lisp
530 files, to get back to the state of a fresh repository tree. After make
531 maintainer-clean, it is necessary to run configure and "make" or
532 "make bootstrap" to rebuild. Occasionally it may be necessary to
533 run this target after an update.
534
535 * Optional image library support
536
537 In addition to its "native" image formats (pbm and xbm), Emacs can
538 handle other image types: xpm, tiff, gif, png, jpeg and experimental
539 support for svg.
540
541 To build Emacs with support for them, the corresponding headers must
542 be in the include path and libraries should be where the linker
543 looks for them, when the configure script is run. If needed, this
544 can be set up using the CPPFLAGS and CFLAGS variable specified on
545 the configure command line. The configure script will report
546 whether it was able to detect the headers and libraries. If the
547 results of this testing appear to be incorrect, please look for
548 details in the file config.log: it will show the failed test
549 programs and compiler error messages that should explain what is
550 wrong. (Usually, any such failures happen because some headers are
551 missing due to bad packaging of the image support libraries.)
552
553 Note that any file path passed to the compiler or linker must use
554 forward slashes, or double each backslash, as that is how Bash
555 works.
556
557 If the configure script finds the necessary headers and libraries,
558 but they are for some reason incompatible, or if you want to omit
559 support for some image library that is installed on your system for
560 some other reason, use the --without-PACKAGE option to configure,
561 such as --without-gif to omit GIF, --without-tiff to omit TIFF, etc.
562 Passing the --help option to the configure script displays all of
563 the supported --without-PACKAGE options.
564
565 To use the external image support, the DLLs implementing the
566 functionality must be found when Emacs first needs them, either on the
567 PATH, or in the same directory as emacs.exe. Failure to find a
568 library is not an error; the associated image format will simply be
569 unavailable. Note that once Emacs has determined that a library can
570 not be found, there's no way to force it to try again, other than
571 restarting. See the variable `dynamic-library-alist' to configure the
572 expected names of the libraries.
573
574 Some image libraries have dependencies on one another, or on zlib.
575 For example, tiff support depends on the jpeg library. If you did not
576 compile the libraries yourself, you must make sure that any dependency
577 is in the PATH or otherwise accessible and that the binaries are
578 compatible (for example, that they were built with the same compiler).
579
580 For PNG images, we recommend to use versions 1.4.x and later of
581 libpng, because previous versions had security issues. You can find
582 precompiled libraries and headers on the GTK download page for
583 Windows (http://www.gtk.org/download/win32.php for 32-bit builds and
584 http://www.gtk.org/download/win64.php for 64-bit builds). The
585 ezwinports site, http://sourceforge.net/projects/ezwinports/files/
586 also offers PNG (as well as other image libraries), which are
587 usually newer.
588
589 Versions 1.4.0 and later of libpng are binary incompatible with
590 earlier versions, so Emacs will only look for libpng libraries which
591 are compatible with the version it was compiled against. That
592 version is given by the value of the Lisp variable `libpng-version';
593 e.g., 10403 means version 1.4.3. The variable `dynamic-library-alist'
594 is automatically set to name only those DLL names that are known to
595 be compatible with the version given by `libpng-version'. If PNG
596 support does not work for you even though you have the support DLL
597 installed, check the name of the installed DLL against
598 `dynamic-library-alist' and the value of `libpng-version', and
599 download compatible DLLs if needed.
600
601 For GIF images, we recommend to use versions 5.0.0 or later of
602 giflib, as it is much enhanced wrt previous versions. You can find
603 precompiled binaries and headers for giflib on the ezwinports site,
604 http://sourceforge.net/projects/ezwinports/files/.
605
606 Version 5.0.0 and later of giflib are binary incompatible with
607 previous versions (the signatures of several functions have
608 changed), so Emacs will only look for giflib libraries that are
609 compatible with the version it was compiled against. Similar to
610 libpng, that version is given by the value of the Lisp variable
611 `libgif-version'; e.g., 50005 means version 5.0.5. The variable
612 `dynamic-library-alist' is automatically set to name only those DLL
613 libraries that are known to be compatible with the version given by
614 `libgif-version'.
615
616 For JPEG images, you will need libjpeg 6b or later, which will be
617 called libjpeg-N.dll, jpeg62.dll, libjpeg.dll, or jpeg.dll. You can
618 find these on the ezwinports site.
619
620 TIFF images require libTIFF 3.0 or later, which will be called
621 libtiffN.dll or libtiff-N.dll or libtiff.dll. These can be found on
622 the ezwinports site.
623
624 Pre-built versions of librsvg and its dependencies can be found in
625 one of these places:
626
627 1. http://sourceforge.net/projects/ezwinports/files/
628
629 This site includes a minimal (as much as possible for librsvg)
630 build of the library and its dependencies; it is also more
631 up-to-date with the latest upstream versions. However, it
632 currently only offers 32-bit builds. For building Emacs, you
633 need to download from this site all of the following *-bin.zip
634 archives:
635
636 librsvg, gdk-pixbuf, cairo, glib
637
638 The 'bin' archives on this site include both header files and the
639 libraries needed for building with librsvg and for running Emacs.
640 The librsvg archive includes all the shared libraries needed to
641 run Emacs with SVG support; the other 3 packages are required
642 because the compiler needs to see their header files when
643 building Emacs.
644
645 2. GTK project download site for Windows (see above for 2 URLs,
646 either for 32-bit builds or 64-bit builds)
647
648 This is the official Windows download site of the GTK project.
649 Its builds of librsvg are fatter, but are currently the only
650 alternative for 64-bit builds. The easiest way to obtain the
651 dependencies required for building from this site is to download
652 a pre-bundled GTK+ development environment for Windows. If you
653 would nevertheless like to download only the packages that are
654 strictly required, then, as of the time of this writing, here's
655 the list of GTK+ packages you will need:
656
657 librsvg, pango, freetype-2.4.11, freetype-2.4.2, croco, cairo,
658 glib, gdk-pixbuf, fontconfig, libpng-1.4.x, libpng-1.5.x,
659 libffi, libxml2, zlib
660
661 The GTK download page provides 2 separate archives for each
662 package: a 'bin' (binary) archive with programs and DLLs, and a
663 'dev' (development) archive with header files, import libraries,
664 and pkg-config files; download and install both archives for each
665 package you need. (Sources of each package are available in a
666 separate, 3rd archive.)
667
668 As you see, some libraries for using this site's librsvg are
669 needed in more than one version -- this is because librsvg and
670 some of its dependencies were linked against different versions
671 of those libraries, and will look only for those DLLs when you
672 invoke SVG function. So there's a bit of "DLL hell" involved
673 here, but at least in theory this should work, as each library
674 will dynamically link only against its dependencies, even if
675 another version of the same library is already loaded. In
676 particular, at least 2 different versions of libpng will have to
677 be installed on your machine. When you install these libpng
678 versions, be sure to keep the header files and the pkg-config
679 files in sync, i.e. install both the 'bin' and 'dev' archives of
680 the same libpng version together.
681
682 To use librsvg at runtime, ensure that librsvg and its dependencies
683 are on your PATH, or in the same directory as the emacs.exe binary.
684 If you are downloading from the ezwinports site, you only need to
685 install a single archive, librsvg-X.Y.Z-w32-bin.zip, which includes
686 all the dependency DLLs. For the GTK project site, download the
687 'bin' archives for each of the libraries mentioned above.
688
689 If you think you've got all the dependencies and SVG support is
690 still not working, check your PATH for other libraries that shadow
691 the ones you downloaded. Libraries of the same name from different
692 sources may not be compatible, this problem was encountered in the
693 past, e.g., with libcroco from gnome.org.
694
695 If you can see etc/images/splash.svg, then you have managed to get
696 SVG support working. Congratulations for making it through DLL hell
697 to this point. For some SVG images, you'll probably see error
698 messages from Glib about failed assertions, or warnings from Pango
699 about failure to load fonts (installing the missing fonts should fix
700 the latter kind of problems). Problems have been observed in some
701 images that contain text, they seem to be a problem in the Windows
702 port of Pango, or maybe a problem with the way Cairo or librsvg is
703 using it that doesn't show up on other platforms. However, Emacs
704 should not crash due to these issues. If you eventually find the
705 SVG support too unstable to your taste, you can rebuild Emacs
706 without it by specifying the --without-rsvg switch to the configure
707 script.
708
709 Binaries for the other image libraries can be found on the
710 ezwinports site or at the GnuWin32 project (the latter are generally
711 very old, so not recommended). Note specifically that, due to some
712 packaging snafus in the GnuWin32-supplied image libraries, you will
713 need to download _source_ packages for some of the libraries in
714 order to get the header files necessary for building Emacs with
715 image support.
716
717 * Optional GnuTLS support
718
719 To compile with GnuTLS, you will need pkg-config to be installed, as
720 the configure script invokes pkg-config to find out which compiler
721 switches to use for GnuTLS. See above for the URL where you can
722 find pkg-config for Windows.
723
724 You will also need to install the p11-kit package, which is a
725 dependency of GnuTLS, and its header files are needed for
726 compilation of programs that use GnuTLS. You can find p11-kit on
727 the same site as GnuTLS, see the URL below.
728
729 If the configure script finds the GnuTLS header files and libraries
730 on your system, Emacs is built with GnuTLS support by default; to
731 avoid that you can pass the argument --without-gnutls.
732
733 In order to support GnuTLS at runtime, a GnuTLS-enabled Emacs must
734 be able to find the relevant DLLs during startup; failure to do so
735 is not an error, but GnuTLS won't be available to the running
736 session.
737
738 You can get pre-built binaries (including any required DLL and the
739 header files) at http://sourceforge.net/projects/ezwinports/files/.
740
741 * Optional libxml2 support
742
743 To compile with libxml2, you will need pkg-config to be installed,
744 as the configure script invokes pkg-config to find out which
745 compiler switches to use for libxml2. See above for the URL where
746 you can find pkg-config for Windows.
747
748 If the configure script finds the libxml2 header files and libraries
749 on your system, Emacs is built with libxml2 support by default; to
750 avoid that you can pass the argument --without-libxml2.
751
752 In order to support libxml2 at runtime, a libxml2-enabled Emacs must
753 be able to find the relevant DLLs during startup; failure to do so
754 is not an error, but libxml2 features won't be available to the
755 running session.
756
757 One place where you can get pre-built Windows binaries of libxml2
758 (including any required DLL and the header files) is here:
759
760 http://sourceforge.net/projects/ezwinports/files/
761
762 For runtime support of libxml2, you will also need to install the
763 libiconv "development" tarball, because the libiconv headers need to
764 be available to the compiler when you compile with libxml2 support.
765 A MinGW port of libiconv can be found on the MinGW site:
766
767 http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/
768
769 You need the libiconv-X.Y.Z-N-mingw32-dev.tar.lzma tarball from that
770 site.
771
772 \f
773 This file is part of GNU Emacs.
774
775 GNU Emacs is free software: you can redistribute it and/or modify
776 it under the terms of the GNU General Public License as published by
777 the Free Software Foundation, either version 3 of the License, or
778 (at your option) any later version.
779
780 GNU Emacs is distributed in the hope that it will be useful,
781 but WITHOUT ANY WARRANTY; without even the implied warranty of
782 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
783 GNU General Public License for more details.
784
785 You should have received a copy of the GNU General Public License
786 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.