Update MS-Windows installation instructions for librsvg.

This commit is contained in:
Eli Zaretskii 2013-12-23 20:32:58 +02:00
parent 0db7548bea
commit 6313576256
3 changed files with 140 additions and 22 deletions

View file

@ -1,3 +1,9 @@
2013-12-23 Eli Zaretskii <eliz@gnu.org>
* README.W32:
* INSTALL: Update instructions for downloading and using image
libraries in general, and librsvg in particular.
2013-12-16 Eli Zaretskii <eliz@gnu.org>
* emacs-x64.manifest:

View file

@ -534,7 +534,11 @@ Windows 9X as well).
For PNG images, we recommend to use versions 1.4.x and later of
libpng, because previous versions had security issues. You can find
precompiled libraries and headers on the GTK download page for
Windows (http://www.gtk.org/download/win32.php).
Windows (http://www.gtk.org/download/win32.php for 32-bit builds and
http://www.gtk.org/download/win64.php for 64-bit builds). The
ezwinports site, http://sourceforge.net/projects/ezwinports/files/
also offers PNG (as well as other image libraries), which are
usually newer.
Versions 1.4.0 and later of libpng are binary incompatible with
earlier versions, so Emacs will only look for libpng libraries which
@ -563,11 +567,98 @@ Windows 9X as well).
libraries that are known to be compatible with the version given by
`libgif-version'.
Binaries for the other image libraries can be found at the GnuWin32
project. Note specifically that, due to some packaging snafus in
the GnuWin32-supplied image libraries, you will need to download
_source_ packages for some of the libraries in order to get the
header files necessary for building Emacs with image support.
Pre-built versions of librsvg and its dependencies can be found in
one of these places:
1. http://sourceforge.net/projects/ezwinports/files/
This site includes a minimal (as much as possible for librsvg)
build of the library and its dependencies; it is also more
up-to-date with the latest upstream versions. However, it
currently only offers 32-bit builds. For building Emacs, you
need to download from this site all of the following *-bin.zip
archives:
librsvg, gdk-pixbuf, cairo, glib
The 'bin' archives on this site include both header files and the
libraries needed for building with librsvg and for running Emacs.
The librsvg archive includes all the shared libraries needed to
run Emacs with SVG support; the other 3 packages are required
because the compiler needs to see their header files when
building Emacs.
2. GTK project download site for Windows (see above for 2 URLs,
either for 32-bit builds or 64-bit builds)
This is the official Windows download site of the GTK project.
Its builds of librsvg are fatter, but are currently the only
alternative for 64-bit builds. The easiest way to obtain the
dependencies required for building from this site is to download
a pre-bundled GTK+ development environment for Windows. If you
would nevertheless like to download only the packages that are
strictly required, then, as of the time of this writing, here's
the list of GTK+ packages you will need:
librsvg, pango, freetype-2.4.11, freetype-2.4.2, croco, cairo,
glib, gdk-pixbuf, fontconfig, libpng-1.4.x, libpng-1.5.x,
libffi, libxml2, zlib
The GTK download page provides 2 separate archives for each
package: a 'bin' (binary) archive with programs and DLLs, and a
'dev' (development) archive with header files, import libraries,
and pkg-config files; download and install both archives for each
package you need. (Sources of each package are available in a
separate, 3rd archive.)
As you see, some libraries for using this site's librsvg are
needed in more than one version -- this is because librsvg and
some of its dependencies were linked against different versions
of those libraries, and will look only for those DLLs when you
invoke SVG function. So there's a bit of "DLL hell" involved
here, but at least in theory this should work, as each library
will dynamically link only against its dependencies, even if
another version of the same library is already loaded. In
particular, at least 2 different versions of libpng will have to
be installed on your machine. When you install these libpng
versions, be sure to keep the header files and the pkg-config
files in sync, i.e. install both the 'bin' and 'dev' archives of
the same libpng version together.
To use librsvg at runtime, ensure that librsvg and its dependencies
are on your PATH, or in the same directory as the emacs.exe binary.
If you are downloading from the ezwinports site, you only need to
install a single archive, librsvg-X.Y.Z-w32-bin.zip, which includes
all the dependency DLLs. For the GTK project site, download the
'bin' archives for each of the libraries mentioned above.
If you think you've got all the dependencies and SVG support is
still not working, check your PATH for other libraries that shadow
the ones you downloaded. Libraries of the same name from different
sources may not be compatible, this problem was encountered in the
past, e.g., with libcroco from gnome.org.
If you can see etc/images/splash.svg, then you have managed to get
SVG support working. Congratulations for making it through DLL hell
to this point. For some SVG images, you'll probably see error
messages from Glib about failed assertions, or warnings from Pango
about failure to load fonts (installing the missing fonts should fix
the latter kind of problems). Problems have been observed in some
images that contain text, they seem to be a problem in the Windows
port of Pango, or maybe a problem with the way Cairo or librsvg is
using it that doesn't show up on other platforms. However, Emacs
should not crash due to these issues. If you eventually find the
SVG support too unstable to your taste, you can rebuild Emacs
without it by specifying the --without-rsvg switch to the configure
script.
Binaries for the other image libraries can be found on the
ezwinports site or at the GnuWin32 project (the latter are generally
very old, so not recommended). Note specifically that, due to some
packaging snafus in the GnuWin32-supplied image libraries, you will
need to download _source_ packages for some of the libraries in
order to get the header files necessary for building Emacs with
image support.
* Optional GnuTLS support

View file

@ -20,12 +20,8 @@ See the end of the file for license conditions.
* Preliminaries
Along with this file should be five subdirectories (bin, etc, info,
lisp, site-lisp). If you have downloaded the barebin
distribution, then it will contain only the bin directory and the
built in documentation in etc/DOC, the rest of the subdirectories
are in the src distribution, which the barebin distribution is
designed to be used with.
Along with this file should be four subdirectories (bin, libexec,
share, and var).
* Setting up Emacs
@ -99,15 +95,18 @@ See the end of the file for license conditions.
+ addpm.exe - A basic installer that creates Start Menu icons for Emacs.
Running this is optional.
+ cmdproxy.exe - Used internally by Emacs to work around problems with
the native shells in various versions of Windows.
+ ctags.exe, etags.exe - Tools for generating tag files. See the
`Tags' node of the Emacs manual.
+ ebrowse.exe - A tool for generating C++ browse information. See the
`Ebrowse' manual.
Several helper programs are in a version-specific subdirectory of
the libexec directory:
+ cmdproxy.exe - Used internally by Emacs to work around problems with
the native shells in various versions of Windows.
+ ddeclient.exe - A tool for interacting with DDE servers. To be
invoked as "ddeclient SERVER [TOPIC]", where SERVER is the DDE
server name, and sends each line of its standard input to the DDE
@ -122,12 +121,27 @@ See the end of the file for license conditions.
a mail spool or POP server to a local user mailbox. See the
`Movemail' node of the Emacs manual.
+ profile.exe - A helper program that generates periodic events for
profiling Emacs Lisp code.
+ update-game-score.exe - A utility for updating the score files of
Emacs games.
* Image support
Emacs has built in support for XBM and PPM/PGM/PBM images, and the
libXpm library is bundled, providing XPM support (required for color
toolbar icons and splash screen). Source for libXpm should be available
on the same place as you got this binary distribution from.
libraries. These libraries are all available on the following sites:
1. http://sourceforge.net/projects/ezwinports/files/
-- leaner, more up-to-date builds, only for 32-bit Emacs
2. http://www.gtk.org/download/win32.php
http://www.gtk.org/download/win64.php
-- GTK project site; offers much fatter builds, but includes 64-bit
DLLs
3. GnuWin32 project -- very old builds, not recommended
Emacs will find these libraries if the directory they are installed
in is on the PATH.
Emacs can also support some other image formats with appropriate
libraries. These libraries are all available as part of GTK
@ -136,7 +150,7 @@ See the end of the file for license conditions.
they are installed in is on the PATH.
PNG: requires the PNG reference library 1.4 or later, which will
be named libpng14.dll or libpng14-14.dll. LibPNG requires zlib,
be named libpngNN.dll or libpngNN-NN.dll. LibPNG requires zlib,
which should come from the same source as you got libpng.
Starting with Emacs 23.3, the precompiled Emacs binaries are
built with libpng 1.4.x and later, and are incompatible with
@ -151,7 +165,14 @@ See the end of the file for license conditions.
or libtiff.dll.
GIF: requires libungif or giflib 4.1 or later, which will be
called giflib4.dll, libungif4.dll or libungif.dll.
called libgif-6.dll, giflib4.dll, libungif4.dll or libungif.dll.
SVG: requires librsvg 2.x whose DLL will be called
librsvg-2-2.dll. SVG also requires several dependency DLLs,
such as Pango, Cairo, and Glib, all of them found on the
above-mentioned sites. If you download from the ezwinports
site, you need only librsvg-2.nn.x-bin.zip, it comes with all
the other dependencies bundled.
If you have image support DLLs under different names, customize the
value of `dynamic-library-alist'.
@ -168,8 +189,8 @@ See the end of the file for license conditions.
the relevant DLLs during startup; failure to do so is not an error,
but GnuTLS won't be available to the running session.
You can get pre-built binaries (including any required DLL and the
header files) at http://sourceforge.net/projects/ezwinports/files/.
You can get pre-built binaries (including any dependency DLLs) at
http://sourceforge.net/projects/ezwinports/files/.
* libxml2 support