--- harfbuzz-1.1.2/configure.ac.orig 2015-12-31 15:58:04.284354714 +0100 +++ harfbuzz-1.1.2/configure.ac 2015-12-31 16:08:46.848239317 +0100 @@ -432,6 +432,30 @@ dnl =========================================================================== +AC_ARG_ENABLE(delay-load, + [AC_HELP_STRING([--enable-delay-load], + [makes the freetype dependency optional at runtime (win32 only)])],, + [enable_delay_load=no]) + +AC_MSG_CHECKING([whether to enable the use of delay-loaded freetype dependencies]) +if test $hb_os_win32 = false; then + enable_delay_load=false +fi +AM_CONDITIONAL(ENABLE_DELAY_LOAD, test x"$enable_delay_load" = x"yes") +AC_MSG_RESULT([$enable_delay_load]) + +if test x"$enable_delay_load" = x"yes" ; then + AC_CHECK_TOOL([GENDEF], [gendef]) + + AC_MSG_CHECKING([whether gendef was found]) + if test x"$GENDEF" = x"" ; then + AC_MSG_ERROR([The gendef tool (required for delay loading the freetype dependency) could not be detected]) + fi + AC_MSG_RESULT([yes]) +fi + +dnl =========================================================================== + AC_CONFIG_FILES([ Makefile src/Makefile @@ -475,4 +499,5 @@ Documentation: ${have_gtk_doc} GObject bindings: ${have_gobject} Introspection: ${have_introspection} + Enable delay loading: ${enable_delay_load} ]) --- harfbuzz-1.2.6/src/Makefile.am.orig 2016-03-15 23:14:32.000000000 +0100 +++ harfbuzz-1.2.6/src/Makefile.am 2016-04-09 22:32:19.462635695 +0200 @@ -51,14 +51,29 @@ endif if HAVE_FREETYPE -HBCFLAGS += $(FREETYPE_CFLAGS) +if ENABLE_DELAY_LOAD +# Create delay-loaded import library for freetype +libfreetype-delay-loaded.dll.a: + DLL=$(bindir)/libfreetype-6.dll; \ + if test ! -f "$$DLL" ; then \ + echo "*** File $$DLL could not be found, unable to create delay-loaded import library"; \ + exit 1; \ + fi; \ + $(GENDEF) - "$$DLL" > freetype_delay_load.def; \ + $(DLLTOOL) --def freetype_delay_load.def --kill-at --output-delaylib libfreetype-delay-loaded.dll.a + +harfbuzz_delayload_ldflags = -Wl,libfreetype-delay-loaded.dll.a -Wl,-lmingwex -Wl,-lkernel32 +harfbuzz_delayload_dependency = libfreetype-delay-loaded.dll.a +else HBLIBS += $(FREETYPE_LIBS) +endif # XXX # The following creates a recursive dependency on FreeType if FreeType is # built with HarfBuzz support enabled. Newer pkg-config handles that just # fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove # in a year or two, or otherwise work around it... #HBDEPS += $(FREETYPE_DEPS) +HBCFLAGS += $(FREETYPE_CFLAGS) HBSOURCES += $(HB_FT_sources) HBHEADERS += $(HB_FT_headers) endif @@ -120,9 +135,9 @@ libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS) $(HBNODISTHEADERS) libharfbuzz_la_CPPFLAGS = $(HBCFLAGS) -libharfbuzz_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) $(export_symbols) -no-undefined +libharfbuzz_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) $(export_symbols) -no-undefined $(harfbuzz_delayload_ldflags) libharfbuzz_la_LIBADD = $(HBLIBS) -EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency) +EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency) $(harfbuzz_delayload_dependency) pkginclude_HEADERS = $(HBHEADERS) nodist_pkginclude_HEADERS = $(HBNODISTHEADERS) pkgconfigdir = $(libdir)/pkgconfig