harfbuzz/win32
Chun-wei Fan d7b6636e5e build: Support Visual Studio builds using NMake
This adds a set of NMake Makefiles that can be used to build HarfBuzz, from
the standard basic build building the minimal HarfBuzz DLL (consisting
of OpenType, fallback and Uniscribe support only), to a full fledged build
consisting of GLib and FreeType support, as well as building the utilities,
the test programs in src/ and test/api, and HarfBuzz-ICU and
HarfBuzz-GObject, and up to building the introspection files.  This means a
flexible build mechanism is supported here, so anything that is supported
for a Windows build (code-wise), should all be supported by this build
system.

As in an earlier commit, the source listings are shared with the autotools
builds with the various Makefile.sources in src/, src/hb-ucdn and util/, and
this set of NMake Makefiles will transform these lists into the form they
want.

In the current form, all the test programs in test/api pass, and this has
been checked successfully with 'make -j8 distcheck'.
2016-02-03 18:14:30 +08:00
..
Makefile.am build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
Makefile.vc build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
README.txt build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
build-rules-msvc.mak build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
config-msvc.mak build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
config.h.win32.in MSVC builds: Add a pre-configured config.h(.win32) template 2016-02-03 18:14:30 +08:00
create-lists-msvc.mak build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
create-lists.bat build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
detectenv-msvc.mak build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
generate-msvc.mak build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
hb-introspection-msvc.mak build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
info-msvc.mak build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
install.mak build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
introspection-msvc.mak build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00

README.txt

Instructions for building HarfBuzz on Visual Studio
===================================================
Building the HarfBuzz DLL on Windows is now also supported using Visual Studio
versions 2008 through 2015, in both 32-bit and 64-bit (x64) flavors, via NMake
Makefiles.

The following are instructions for performing such a build, as there is a
number of build configurations supported for the build.  Note that for all
build configurations, the OpenType and Simple TrueType layout (fallback)
backends are enabled, as well as the Uniscribe platform shaper, and this
is the base configuration that is built if no options (see below) are
specified.  A 'clean' target is provided-it is recommended that one cleans
the build and redo the build if any configuration option changed.  An
'install' target is also provided to copy the built items in their appropriate
locations under $(PREFIX), which is described below.

Invoke the build by issuing the command:
nmake /f Makefile.vc CFG=[release|debug] [PREFIX=...] <option1=1 option2=1 ...>
where:

CFG: Required.  Choose from a release or debug build.  Note that 
     all builds generate a .pdb file for each .dll and .exe built--this refers
     to the C/C++ runtime that the build uses.

PREFIX: Optional.  Base directory of where the third-party headers, libraries
        and needed tools can be found, i.e. headers in $(PREFIX)\include,
        libraries in $(PREFIX)\lib and tools in $(PREFIX)\bin.  If not
        specified, $(PREFIX) is set as $(srcroot)\..\vs$(X)\$(platform), where
        $(platform) is win32 for 32-bit builds or x64 for 64-bit builds, and
        $(X) is the short version of the Visual Studio used, as follows:
        2008: 9
        2010: 10
        2012: 11
        2013: 12
        2015: 14

Explanation of options, set by <option>=1:
------------------------------------------
GLIB: Enable GLib support in HarfBuzz, which also uses the GLib unicode
      callback instead of the bundled UCDN unicode callback.  This requires the
      GLib libraries, and is required for building all tool and test programs.

GOBJECT: Enable building the HarfBuzz-GObject DLL, and thus implies GLib
         support.  This requires the GObject libraries and glib-mkenums script,
         along with PERL to generate the enum sources and headers, which is
         required for the build.

INTROSPECTION: Enable build of introspection files, for making HarfBuzz
               bindings for other programming languages available, such as
               Python, available.  This requires the GObject-Introspection
               libraries and tools, along with the Python interpretor that was
               used during the build of GObject-Introspection.  Please see
               $(srcroot)\README.python for more related details.  This implies
               the build of the HarfBuzz-GObject DLL, along with GLib support.

FREETYPE: Enable the FreeType font callbacks.  Requires the FreeType2 library.

CAIRO: Enable Cairo support.  Requires the Cairo library.

CAIRO_FT: Enable the build of the hb-view tool, which makes use of Cairo, and
          thus implies FreeType font callback support and Cairo support.
          Requires Cairo libraries built with FreeType support.  Note that the
          hb-view tool requires GLib support as well.

GRAPHITE2: Enable the Graphite2 shaper, requires the SIL Graphite2 library.

ICU: Enables the build HarfBuzz-ICU, which is now the recommended layout engine
     for ICU (International Components for Unicode), which deprecated ICU LE.
     Requires the ICU libraries.

PYTHON: Full path to the Python interpretor to be used, if it is not in %PATH%.

PERL: Full path to the PERL interpretor to be used, if it is not in %PATH%.

LIBTOOL_DLL_NAME: Enable libtool-style DLL names.