Hash :
ad52e044
Author :
Date :
2017-06-21T22:19:57
Win32/NMake builds: Support builds from GIT (#498) 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
# NMake Makefile portion for displaying config info
INC_FEATURES = Fallback OT
BUILT_TOOLS =
BUILT_LIBRARIES = HarfBuzz
!if "$(NO_UCDN)" != "1"
UNICODE_IMPL = ucdn
!elseif "$(GLIB)" == "1"
UNICODE_IMPL = GLib
!elseif "$(ICU)" == "1"
UNICODE_IMPL = ICU
!endif
!if "$(GLIB)" == "1"
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
!endif
!if "$(ICU)" == "1"
INC_FEATURES = $(INC_FEATURES) ICU
!endif
!if "$(FREETYPE)" == "1"
INC_FEATURES = $(INC_FEATURES) FreeType
!endif
!if "$(GRAPHITE2)" == "1"
INC_FEATURES = $(INC_FEATURES) Graphite2
!endif
!if "$(UNISCRIBE)" == "1"
INC_FEATURES = $(INC_FEATURES) Uniscribe
!endif
!if "$(DIRECTWRITE)" == "1"
INC_FEATURES = $(INC_FEATURES) DirectWrite
!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 and support with a bundled
@echo Unicode implementation (UCDN).
@echo ======
@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 DIRECTWRITE:
@echo Enable DirectWrite support, requires a recent enough Windows SDK.
@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 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 interpreter (use
@echo PERL=^$(PATH_TO_PERL_INTERPRETOR)) if it is not already in your PATH).
@echo.
@echo GRAPHITE2:
@echo Enable graphite2 support, requires the SIL Graphite2 library
@echo.
@echo ICU:
@echo Enable build with ICU Unicode functions, requires the International
@echo Components for Unicode (ICU) libraries.
@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 interpreter (that was used to build the gobject-introspection 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 LIBTOOL_DLL_NAME:
@echo Use a libtool-style DLL name to mimic the DLL file naming generated by
@echo MinGW builds.
@echo.
@echo NO_UCDN:
@echo Do not use the bundled Unicode callback, which is the default. GLib or
@echo ICU-based unicode callback is therefore required.
@echo.
@echo UNISCRIBE:
@echo Enable Uniscribe support.
@echo.
@echo RAGEL:
@echo Set the full path to the Ragel state machine compiler, if not already in
@echo PATH. The Ragel state machine compiler is required if not building from
@echo a release tarball, or a rebuild is to be carried out after using the
@echo 'reallyclean' target.
@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.