demo: Link against Harfbuzz

The font features demo started calling the Harfbuzz API directly
starting from commit 9de3b24c20. Harfbuzz
is an implicit dependency of Pango on some platforms, but it's not part
of the public dependencies; this means that we cannot expect to link to
Pango and automatically get Harfbuzz symbols to link against —
especially when things like --as-needed are in play.

This change triggered build failures on non-Unix platforms, fixed by
commit 2a9967731a, as well as build
failures in Continuous, with this error message:

/usr/lib/gcc/x86_64-gnomeostree-linux/4.9.3/../../../../x86_64-gnomeostree-linux/bin/ld:
font_features.o: undefined reference to symbol 'hb_tag_to_string'
//lib/libharfbuzz.so.0: error adding symbols: DSO missing from command
line
collect2: error: ld returned 1 exit status

In order to get the font features demo to build everywhere we should
take an explicit, though optional, check on Harfbuzz, and conditionally
build the font features demo with the right compiler and linker flags.
This commit is contained in:
Emmanuele Bassi 2016-01-26 11:46:48 +00:00
parent 2a9967731a
commit c8686f0c47
2 changed files with 24 additions and 4 deletions

View File

@ -1690,6 +1690,15 @@ if test "$have_colord" = "yes"; then
fi fi
AM_CONDITIONAL(HAVE_COLORD, test "x$have_colord" = "xyes") AM_CONDITIONAL(HAVE_COLORD, test "x$have_colord" = "xyes")
##################################################
# Check for harfbuzz
##################################################
PKG_CHECK_MODULES(HARFBUZZ, harfbuzz >= 0.9, have_harfbuzz=yes, have_harfbuzz=no)
AC_SUBST(HARFBUZZ_CFLAGS)
AC_SUBST(HARFBUZZ_LIBS)
AM_CONDITIONAL(BUILD_FONT_DEMO, [ test "x$have_harfbuzz" = xyes ])
################################################## ##################################################
# Checks for gtk-doc and docbook-tools # Checks for gtk-doc and docbook-tools
################################################## ##################################################

View File

@ -70,12 +70,18 @@ demos_base = \
transparent.c \ transparent.c \
tree_store.c tree_store.c
if OS_UNIX demos_opt =
demos = $(demos_base) font_features.c pagesetup.c
else if BUILD_FONT_DEMO
demos = $(demos_base) demos_opt += font_features.c
endif endif
if OS_UNIX
demos_opt += pagesetup.c
endif
demos = $(demos_base) $(demos_opt)
AM_CPPFLAGS = \ AM_CPPFLAGS = \
-I$(top_srcdir) \ -I$(top_srcdir) \
-I$(top_builddir)/gdk \ -I$(top_builddir)/gdk \
@ -94,6 +100,11 @@ LDADDS = \
$(GDK_DEP_LIBS) \ $(GDK_DEP_LIBS) \
-lm -lm
if BUILD_FONT_DEMO
AM_CPPFLAGS += $(HARFBUZZ_CFLAGS)
LDADDS += $(HARFBUZZ_LIBS)
endif
bin_PROGRAMS = gtk3-demo gtk3-demo-application bin_PROGRAMS = gtk3-demo gtk3-demo-application
desktopdir = $(datadir)/applications desktopdir = $(datadir)/applications