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