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'.
2015-11-03 11:00:42 +00:00
|
|
|
# NMake Makefile portion for displaying config info
|
|
|
|
|
|
|
|
INC_FEATURES = Uniscribe Fallback OT
|
|
|
|
BUILT_TOOLS =
|
|
|
|
BUILT_LIBRARIES = HarfBuzz
|
|
|
|
|
|
|
|
!if "$(GLIB)" == "1"
|
|
|
|
UNICODE_IMPL = GLib
|
|
|
|
INC_FEATURES = $(INC_FEATURES) GLib
|
|
|
|
BUILT_TOOLS = hb-shape.exe hb-ot-shape-closure.exe
|
|
|
|
!if "$(CAIRO_FT)" == "1"
|
|
|
|
BUILT_TOOLS = hb-view.exe $(BUILT_TOOLS)
|
|
|
|
!endif
|
|
|
|
!else
|
|
|
|
UNICODE_IMPL = ucdn
|
|
|
|
!endif
|
|
|
|
|
|
|
|
!if "$(FREETYPE)" == "1"
|
|
|
|
INC_FEATURES = $(INC_FEATURES) FreeType
|
|
|
|
!endif
|
|
|
|
|
|
|
|
!if "$(GRAPHITE2)" == "1"
|
|
|
|
INC_FEATURES = $(INC_FEATURES) Graphite2
|
|
|
|
!endif
|
|
|
|
|
2015-12-09 06:57:15 +00:00
|
|
|
!if "$(DIRECTWRITE)" == "1"
|
|
|
|
INC_FEATURES = $(INC_FEATURES) DirectWrite
|
|
|
|
!endif
|
|
|
|
|
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'.
2015-11-03 11:00:42 +00:00
|
|
|
!if "$(ICU)" == "1"
|
|
|
|
BUILT_LIBRARIES = $(BUILT_LIBRARIES) HarfBuzz-ICU
|
|
|
|
!endif
|
|
|
|
|
|
|
|
!if "$(GOBJECT)" == "1"
|
|
|
|
BUILT_LIBRARIES = $(BUILT_LIBRARIES) HarfBuzz-GObject
|
|
|
|
!endif
|
|
|
|
|
|
|
|
!if "$(INTROSPECTION)" == "1"
|
|
|
|
BUILD_INTROSPECTION = yes
|
|
|
|
!else
|
|
|
|
BUILD_INTROSPECTION = no
|
|
|
|
!endif
|
|
|
|
|
|
|
|
build-info-hb:
|
|
|
|
@echo.
|
|
|
|
@echo ==================================
|
|
|
|
@echo Configuration for HarfBuzz Library
|
|
|
|
@echo ==================================
|
|
|
|
@echo Unicode Implementation: $(UNICODE_IMPL)
|
|
|
|
@echo Enabled Features: $(INC_FEATURES)
|
|
|
|
|
|
|
|
all-build-info: build-info-hb
|
|
|
|
@echo.
|
|
|
|
@echo ----------------
|
|
|
|
@echo Other build info
|
|
|
|
@echo ----------------
|
|
|
|
@echo Built Libraries: $(BUILT_LIBRARIES)
|
|
|
|
@echo Built Tools: $(BUILT_TOOLS)
|
|
|
|
@echo Introspection: $(BUILD_INTROSPECTION)
|
|
|
|
|
|
|
|
help:
|
|
|
|
@echo.
|
|
|
|
@echo =============================
|
|
|
|
@echo Building HarfBuzz Using NMake
|
|
|
|
@echo =============================
|
|
|
|
@echo nmake /f Makefile.vc CFG=[release^|debug] ^<PREFIX=PATH^> OPTION=1 ...
|
|
|
|
@echo.
|
|
|
|
@echo Where:
|
|
|
|
@echo ------
|
|
|
|
@echo CFG: Required, use CFG=release for an optimized build and CFG=debug
|
|
|
|
@echo for a debug build. PDB files are generated for all builds.
|
|
|
|
@echo.
|
|
|
|
@echo PREFIX: Optional, the path where dependent libraries and tools may be
|
|
|
|
@echo found, default is ^$(srcrootdir)\..\vs^$(short_vs_ver)\^$(platform),
|
|
|
|
@echo where ^$(short_vs_ver) is 9 for VS 2008, 10 for VS 2010 and so on; and
|
|
|
|
@echo ^$(platform) is Win32 for 32-bit builds and x64 for x64 builds.
|
|
|
|
@echo.
|
|
|
|
@echo OPTION: Optional, may be any of the following, use OPTION=1 to enable;
|
|
|
|
@echo multiple OPTION's may be used. If no OPTION is specified, a default
|
|
|
|
@echo HarfBuzz DLL is built with OpenType, fallback and Uniscribe support
|
|
|
|
@echo with a bundled Unicode implementation (UCDN).
|
|
|
|
@echo ======
|
2015-12-09 06:57:15 +00:00
|
|
|
@echo DIRECTWRITE:
|
|
|
|
@echo Enable DirectWrite support, requires a recent enough Windows SDK.
|
|
|
|
@echo.
|
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'.
2015-11-03 11:00:42 +00:00
|
|
|
@echo GRAPHITE2:
|
|
|
|
@echo Enable graphite2 support, requires the SIL Graphite2 library
|
|
|
|
@echo.
|
|
|
|
@echo FREETYPE:
|
|
|
|
@echo Enable FreeType2 support, requires the FreeType2 library
|
|
|
|
@echo.
|
|
|
|
@echo GLIB:
|
|
|
|
@echo Enable GLib2 support, with GLib Unicode support, requires the GNOME GLib2
|
|
|
|
@echo library. Enables the build of utility programs.
|
|
|
|
@echo.
|
|
|
|
@echo ICU:
|
|
|
|
@echo Enable the HarfBuzz-ICU layout library, requires the International
|
|
|
|
@echo Components for Unicode (ICU) libraries.
|
|
|
|
@echo.
|
|
|
|
@echo GOBJECT:
|
|
|
|
@echo Enable the HarfBuzz-GObject library, also implies GLib2 support,
|
|
|
|
@echo requires the GNOME GLib2 libraries and tools, notably the glib-mkenums
|
|
|
|
@echo tool script, which will require a PERL interpretor (use
|
|
|
|
@echo PERL=^$(PATH_TO_PERL_INTERPRETOR)) if it is not already in your PATH).
|
|
|
|
@echo.
|
|
|
|
@echo INTROSPECTION:
|
|
|
|
@echo Enable the build of introspection files, also implies GObject/GLib2 support,
|
|
|
|
@echo requires the GNOME gobject-introspection libraries and tools. You will need
|
|
|
|
@echo to ensure the pkg-config (.pc) files can be found for GObject-2.0 and the
|
|
|
|
@echo Python interpretor (that was used to build the gobject-introsoection tools)
|
|
|
|
@echo can be found by setting PKG_CONFIG_PATH beforehand, and passing in PYTHON=
|
|
|
|
@echo ^$(PATH_TO_PYTHON_INTERPRETOR) respectively, if python.exe is not already
|
|
|
|
@echo in your PATH.
|
|
|
|
@echo.
|
|
|
|
@echo CAIRO_FT:
|
|
|
|
@echo Enables Cairo-Freetype support, needed for the build of the hb-view utility.
|
|
|
|
@echo Implies FreeType2 support and also requires Cairo built with FreeType2
|
|
|
|
@echo support; GLib2 support must also be enabled.
|
|
|
|
@echo.
|
|
|
|
@echo LIBTOOL_DLL_NAME:
|
|
|
|
@echo Use a libtool-style DLL name to mimic the DLL file naming generated by
|
|
|
|
@echo MinGW builds.
|
|
|
|
@echo.
|
|
|
|
@echo Note that GLib2 support is required for all utility and test programs.
|
|
|
|
@echo ======
|
|
|
|
@echo A 'clean' target is supported to remove all generated files, intermediate
|
|
|
|
@echo object files and binaries for the specified configuration.
|
|
|
|
@echo.
|
|
|
|
@echo A 'tests' target is supported to build the test programs, if GLib2 support
|
|
|
|
@echo is enabled. Use after building the libraries and utilities.
|
|
|
|
@echo.
|
|
|
|
@echo An 'install' target is supported to copy the build (DLLs, utility programs,
|
|
|
|
@echo LIBs, along with the introspection files if applicable) to appropriate
|
|
|
|
@echo locations under ^$(PREFIX).
|
|
|
|
@echo ======
|
|
|
|
@echo.
|
|
|
|
|