Notes about building GDK-Pixbuf with Visual Studio
==================================================

Building GDK-Pixbuf on Visual Studio is now done via using Meson, which
gives us more flexible build configurations versus what we used to have
in the Visual Studio projects.

The following describes the steps and the items that are needed to build
GDK-Pixbuf with Visual Studio using Meson.  Visual Studio 2008 through
2017 are supported.

You will need a Python 3.5+ installation (and Ninja, unless using
--backend=vs, which is supported only on Visual Studio 2010, 2015 and
2017).  The Python interpreter and Ninja executable must be found in
your PATH.  You will also need Meson 0.45.0 or later.  Note that if
building the introspection files, the Python release series and build
configuration (Win32 (x86)/x86 (amd64/x86-64)) used must match the
release series and build configuration of the Python interpreter that
was used to build GObject-Introspection.

You will need the header and .lib's, along with their corresponding DLLs,
if applicable, for the following items.  Items marked with a * means that
their pkg-config (.pc) files are also needed, which normally comes as a
part of the dependency's build process.

-GLib*
-GObject-Introspection* (optional, for building introspection files)
-IJG JPEG or libjpeg-turbo (strongly recommended, use -Djpeg=false to disable)
-libpng (strongly recommended, use -Dpng=false to disable)
-libtiff (strongly recommended, use -Dtiff=false to disable)

1) Configure the build using Meson:
Set the PATH, LIB, INCLUDE and PKG_CONFIG_PATH environmental variables as
needed.  Run the following in a Visual Studio command prompt:

python $(PATH_TO_meson.py)\meson.py $(GDK_PIXBUF_SRCDIR) --buildtype=$(BUILD_CONFIG) --prefix=$(PREFIX) -Dman=false $(OTHER_OPTIONS)

For $(OTHER_OPTIONS), the following may be of interest, besides the png,
jpeg and tiff options.  Prefix each option with -D:

-builtin_loaders: list of image loaders that we want to build into
 the main GDK-Pixbuf DLL, or use 'all' to include all buildable image
 loaders into the GDK-Pixbuf DLL.  This would simplify deployment
 of GDK-Pixbuf for Windows.

-native_windows_loaders: Use GDI+ to load JPEG, TIFF and other image
 formats, without the need of IJG JPEG, libjpeg-turbo and libtiff.
 This support is considered experimental.  To build this image
 loader into the GDK-Pixbuf DLL, pass in 'windows' as part of the list
 passed into builtin_loaders or use 'all', in conjunction with using
 -Dnative_windows_loaders=true.

Use --backend=vs if using the Visual Studio 2010, 2015 or 2017 IDE is
desired.

2) Build GDK-Pixbuf using Ninja or the generated solution files.

3) Test and/or install the build using the "test" and  "install"
   targets respectively.

4) If building with Visual Studio 2008, you will need to do the run the following
   lines in the Visual Studio or SDK command prompt after building and installing.
   From the build directory:
   for /f %a in (*.dll.manifest) do if exist $(PREFIX)\bin\%~na /manifest %a /outputresource:$(PREFIX)\bin\%~na;2
   for /f %a in (*.exe.manifest) do if exist $(PREFIX)\bin\%~na /manifest %a /outputresource:$(PREFIX)\bin\%~na;1
   for /f %a in (*.exe.manifest) do if exist $(PREFIX)\libexec\installed-tests\gdk-pixbuf-2.0\%~na /manifest %a /outputresource:$(PREFIX)\libexec\installed-tests\gdk-pixbuf-2.0\%~na;1
   
   So that the security manifests that are generated can be embedded into the built
   DLLs and EXEs so that they can be usable.

See the following GNOME Live! page for a more detailed description of building
GDK-Pixbuf's dependencies with Visual Studio:

https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack
