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