Add Python scripts to generate the full win32/config.h.win32 and
src/hb-version.h which can be used to build directly from a GIT
checkout. Since the scripts are currently intended for building from a
GIT checkout, these are not distributed in the release tarballs.
Also, support the re-build of Ragel-generated .hh headers using the NMake
build system, and allow one to specify the path of the Ragel executable
if a suitable one cannot be found in the PATH.
Update the Win32/NMake build documentation to let people know about how
these mechanisms can be utilized.
Fix the check conditions in config-msvc.mak and info-msvc.mak so that
the ICU items does indeed get built into the HarfBuzz main DLL, and that
the correct configuration info is displayed.
Also update the checks in detectenv-msvc.mak so that we can detect that
we are using Visual Studio 2017 (although the 2015-built binaries use
the same CRT DLL as the 2017 ones).
The sources in src/hb-ucdn and not included correctly into the NMake
Makefiles, as we need their explicit relative location as we pass all the
sources we used into the introspection scanner. This was not an issue
before as we excluded the UCDN sources in the build when we enabled
introspection (meaning GLib is enabled), but since we default on using
UCDN on all builds unless explicitly disabled, we need to deal with this.
This did not affect builds using UCDN without introspection due to the use
of NMake batch rules.
Fix this by creating a NMake Makefile module on-the-fly with the correct
subdir info, and using that list in there instead.
We now use UCDN by default, so make it so in the build files; however
don't hardcode HAVE_UCDN as one may still opt not to use it (but pass
it in as a CFLAG unless one explicitly disables UCDN by using NO_UCDN=1
on the NMake command line).
Note that we are not blocking builds where UCDN is disabled along with
GLib and ICU, as that will trigger a build error anyways which will tell
the user what needs to be done to remedy this.
Most of harfbuzz clients don't need Uniscribe and DirectWrite support at all
as harfbuzz is a replacement for Uniscribe so Chromium and Firefox are using
harfbuzz without them on Windows.
This removal also helps win32 nmake clients to have reduced binary size and
libs count.
Add into the NMake Makefiles to build the DirectWrite shaping backend,
but as PR #134 mentions, this is considered to be in an experimental state,
so don't include this in the build by default for now. This is most probably
going to replace the Uniscribe backend eventually, since DirectWrite is meant
to be Uniscribe's replacement, and is needed for Windows Store apps if a
system shaping API is to be used.
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'.
This adds a pre-configured config.h template that can be used for Visual
Studio builds, where autotools is not normally available. This has the
configs that are suitable for Visual Studio builds, as well as all the
features used for Windows builds enabled (HAVE_OT, HAVE_FALLBACK and
HAVE_UNISCRIBE).
Note that the optional features are not enabled here, they are enabled by
/D's (or -D's) in the NMake Makefiles as requested.