From 15af7f1eef7a78fab3088b41d004a796cc94c7e1 Mon Sep 17 00:00:00 2001 From: Packit Service Date: Mar 19 2021 18:20:02 +0000 Subject: Apply patch harfbuzz-enable-delayload-freetype.patch patch_name: harfbuzz-enable-delayload-freetype.patch present_in_specfile: true --- diff --git a/configure.ac b/configure.ac index 52134c8..e0ee0fc 100644 --- a/configure.ac +++ b/configure.ac @@ -482,6 +482,30 @@ fi 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 @@ -528,4 +552,5 @@ Other features: Documentation: ${have_gtk_doc} GObject bindings: ${have_gobject} Introspection: ${have_introspection} + Enable delay loading: ${enable_delay_load} ]) diff --git a/src/Makefile.am b/src/Makefile.am index 0c077d9..e497852 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -53,14 +53,29 @@ HBHEADERS += $(HB_GLIB_headers) 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 @@ -122,9 +137,9 @@ endif 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