[HarfBuzz] Windows build of harfbuzz with nmake

Juha Martikainen juha.martikainen at anygraaf.fi
Mon Jun 13 07:36:47 UTC 2016


Hello!

I am working with Windows 10 system and Visual Studio 2012 compiler. I 
would like to compile harfbuzz library for Scribus. I have taken the new 
harfbuzz codes with git.

I have read win32 directory readme file instructions and try to 
configure project using nmake. I run the following nmake command(in 
win32 directory):

nmake /f Makefile.vc CFG=release /P

Resulting:
NMAKE : fatal error U1073: don't know how to make 'config.h.win32'
Stop.

Whole output:

<<

release\Win32\harfbuzz-gobject:
         flags:
         dependents:
         commands:       @-mkdir $@

release\Win32\harfbuzz-gobject.lib:
         flags:
         dependents:     release\Win32\harfbuzz-gobject-vs11.dll
         commands:

help:
         flags:
         dependents:
         commands:       @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 ======
                         @echo DIRECTWRITE:
                         @echo Enable DirectWrite support, requires a 
recent enough Windows SDK.
                         @echo.
                         @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.


config.h:
         flags:
         dependents:     config.h.win32
         commands:       @-copy $@.win32 $@

release\Win32\harfbuzz-vs11.dll:
         flags:
         dependents:     config.h release\Win32\harfbuzz\hb-blob.obj
release\Win32\harfbuzz\hb-buffer-serialize.obj
                         release\Win32\harfbuzz\hb-buffer.obj 
release\Win32\harfbuzz\hb-common.obj
                         release\Win32\harfbuzz\hb-face.obj 
release\Win32\harfbuzz\hb-font.obj
                         release\Win32\harfbuzz\hb-ot-tag.obj 
release\Win32\harfbuzz\hb-set.obj
                         release\Win32\harfbuzz\hb-shape.obj 
release\Win32\harfbuzz\hb-shape-plan.obj
                         release\Win32\harfbuzz\hb-shaper.obj 
release\Win32\harfbuzz\hb-unicode.obj
                         release\Win32\harfbuzz\hb-warning.obj 
release\Win32\harfbuzz\hb-fallback-shape.obj
                         release\Win32\harfbuzz\hb-ot-font.obj 
release\Win32\harfbuzz\hb-ot-layout.obj
                         release\Win32\harfbuzz\hb-ot-map.obj 
release\Win32\harfbuzz\hb-ot-shape.obj
release\Win32\harfbuzz\hb-ot-shape-complex-arabic.obj
release\Win32\harfbuzz\hb-ot-shape-complex-default.obj
release\Win32\harfbuzz\hb-ot-shape-complex-hangul.obj
release\Win32\harfbuzz\hb-ot-shape-complex-hebrew.obj
release\Win32\harfbuzz\hb-ot-shape-complex-indic.obj
release\Win32\harfbuzz\hb-ot-shape-complex-indic-table.obj
release\Win32\harfbuzz\hb-ot-shape-complex-myanmar.obj
release\Win32\harfbuzz\hb-ot-shape-complex-thai.obj
release\Win32\harfbuzz\hb-ot-shape-complex-tibetan.obj
release\Win32\harfbuzz\hb-ot-shape-complex-use.obj
release\Win32\harfbuzz\hb-ot-shape-complex-use-table.obj
release\Win32\harfbuzz\hb-ot-shape-normalize.obj
release\Win32\harfbuzz\hb-ot-shape-fallback.obj
                         release\Win32\harfbuzz\hb-uniscribe.obj 
release\Win32\harfbuzz\hb-ucdn.obj
                         release\Win32\harfbuzz\ucdn.obj 
release\Win32\harfbuzz

         commands:       link /DLL $(LDFLAGS) $(HB_DEP_LIBS) 
/implib:$(CFG)\$(PLAT)\harfbuzz.lib -out:$@ @<<
$(harfbuzz_dll_OBJS)
<<
                         @-if exist $@.manifest mt /manifest $@.manifest 
/outputresource:$@;2

release\Win32\hb-shape.exe:
         flags:
         dependents:     release\Win32\harfbuzz.lib release\Win32\util

         commands:       link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib 
$(HB_UTILS_DEP_LIBS) -out:$@ @<<
$(hb_shape_OBJS)
<<
                         @-if exist $@.manifest mt /manifest $@.manifest 
/outputresource:$@;1

release\Win32\harfbuzz-icu-vs11.dll:
         flags:
         dependents:     release\Win32\harfbuzz.lib 
release\Win32\harfbuzz-icu

         commands:       link /DLL $(LDFLAGS) 
$(CFG)\$(PLAT)\harfbuzz.lib $(HB_ICU_DEP_LIBS) 
/implib:$(CFG)\$(PLAT)\harfbuzz-icu.lib -out:$@ @<<
$(harfbuzz_icu_OBJS)
<<
                         @-if exist $@.manifest mt /manifest $@.manifest 
/outputresource:$@;2

release\Win32\util:
         flags:
         dependents:
         commands:       @-mkdir $@

all-build-info:
         flags:
         dependents:     build-info-hb
         commands:       @echo.
                         @echo ----------------
                         @echo Other build info
                         @echo ----------------
                         @echo Built Libraries: $(BUILT_LIBRARIES)
                         @echo Built Tools: $(BUILT_TOOLS)
                         @echo Introspection: $(BUILD_INTROSPECTION)

all:
         flags:
         dependents:     release\Win32\harfbuzz.lib all-build-info
         commands:

release\Win32\hb-ot-shape-closure.exe:
         flags:
         dependents:     release\Win32\harfbuzz.lib release\Win32\util

         commands:       link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib 
$(HB_UTILS_DEP_LIBS) -out:$@ @<<
$(hb_ot_shape_closure_OBJS)
<<
                         @-if exist $@.manifest mt /manifest $@.manifest 
/outputresource:$@;1

clean:
         flags:
         dependents:
         commands:       @-if exist $(CFG)\$(PLAT)\HarfBuzz-0.0.typelib 
del /f /q $(CFG)\$(PLAT)\HarfBuzz-0.0.typelib
                         @-if exist $(CFG)\$(PLAT)\HarfBuzz-0.0.gir del 
/f /q $(CFG)\$(PLAT)\HarfBuzz-0.0.gir
                         @-if exist $(CFG)\$(PLAT)\hb_list del /f /q 
$(CFG)\$(PLAT)\hb_list
                         @-del /f /q $(CFG)\$(PLAT)\*.pdb
                         @-if exist $(CFG)\$(PLAT)\.exe.manifest del /f 
/q $(CFG)\$(PLAT)\*.exe.manifest
                         @-if exist $(CFG)\$(PLAT)\.exe del /f /q 
$(CFG)\$(PLAT)\*.exe
                         @-del /f /q $(CFG)\$(PLAT)\*.dll.manifest
                         @-del /f /q $(CFG)\$(PLAT)\*.dll
                         @-del /f /q $(CFG)\$(PLAT)\*.ilk
                         @-del /f /q $(CFG)\$(PLAT)\*.obj
                         @-if exist $(CFG)\$(PLAT)\util del /f /q 
$(CFG)\$(PLAT)\util\*.obj
                         @-if exist $(CFG)\$(PLAT)\harfbuzz-gobject del 
/f /q $(CFG)\$(PLAT)\harfbuzz-gobject\*.obj
                         @-if exist $(CFG)\$(PLAT)\harfbuzz-icu del /f 
/q $(CFG)\$(PLAT)\harfbuzz-icu\*.obj
                         @-del /f /q $(CFG)\$(PLAT)\harfbuzz\*.obj
                         @-rmdir /s /q $(CFG)\$(PLAT)
                         @-if exist 
$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.h del 
$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.h
                         @-if exist 
$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc del 
$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc
                         @-del vc$(VSVER)0.pdb
                         @-del config.h

release\Win32\harfbuzz-gobject-vs11.dll:
         flags:
         dependents:     release\Win32\harfbuzz.lib 
release\Win32\harfbuzz-gobject

         commands:       link /DLL $(LDFLAGS) 
$(CFG)\$(PLAT)\harfbuzz.lib $(HB_GOBJECT_DEP_LIBS) 
/implib:$(CFG)\$(PLAT)\harfbuzz-gobject.lib -out:$@ @<<
$(harfbuzz_gobject_OBJS)
<<
                         @-if exist $@.manifest mt /manifest $@.manifest 
/outputresource:$@;2

release\Win32\harfbuzz-gobject\hb-gobject-enums.obj:
         flags:
         dependents:     release\Win32\harfbuzz-gobject
         commands:       $(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_LIB_CFLAGS) 
/I$(CFG)\$(PLAT)\harfbuzz-gobject /Fo$(CFG)\$(PLAT)\harfbuzz-gobject\ /c @<<
$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc
<<

release\Win32\harfbuzz:
         flags:
         dependents:
         commands:       @-mkdir $@

release\Win32\harfbuzz.lib:
         flags:
         dependents:     release\Win32\harfbuzz-vs11.dll
         commands:


NMAKE : fatal error U1073: don't know how to make 'config.h.win32'
Stop.

C:\Libraries-vc11\harfbuzz\win32>

-- 
Juha Martikainen



More information about the HarfBuzz mailing list