Subject: bug#33771: 27.0.50; Error building Harfbuzz branch on Debian testing

From: Mike Kupfer <[email-masked]>
Date: Sun, 16 Dec 2018 21:18:04 -0800

Eli Zaretskii wrote:

> Does the below fix the problem?

It helps, thanks.  I needed to make a similar change in a few other
places, at least for building on Solaris.  I've attached the patch I
ended up with.

I still can't get a clean build, because of

    Checking /export/home/kupfer/src/emacs-git/lisp/leim/quail/japanese.el ...
    Fatal error 11: Segmentation Fault
    Backtrace:
    /export/home/kupfer/src/emacs-git/src/bootstrap-emacs'emacs_backtrace+0x43 [0x5b63f3]
    /export/home/kupfer/src/emacs-git/src/bootstrap-emacs'terminate_due_to_signal+0x8b [0x59c40b]
    /export/home/kupfer/src/emacs-git/src/bootstrap-emacs'0x1b4cfe [0x5b4cfe]
    /export/home/kupfer/src/emacs-git/src/bootstrap-emacs'deliver_thread_signal.constprop.13+0x2a [0x5b4eea]
    /export/home/kupfer/src/emacs-git/src/bootstrap-emacs'handle_sigsegv+0x1f [0x5b4f4f]
    /lib/amd64/libc.so.1'__sighndlr+0x6 [0x7fffbe44ebe6]
    /lib/amd64/libc.so.1'call_user_handler+0x2f1 [0x7fffbe4406b1]
    /export/home/kupfer/src/emacs-git/src/bootstrap-emacs'decode_char+0x3db [0x53804b]
    /export/home/kupfer/src/emacs-git/src/bootstrap-emacs'decode_coding_iso_2022+0x141e [0x544bde]
    /export/home/kupfer/src/emacs-git/src/bootstrap-emacs'decode_coding+0x18f [0x54976f]
    /export/home/kupfer/src/emacs-git/src/bootstrap-emacs'decode_coding_gap+0x15f [0x550f9f]
    /export/home/kupfer/src/emacs-git/src/bootstrap-emacs'Finsert_file_contents+0x11fb [0x5cf5eb]
    ...

I got the same failure building master, so it's not related to HarfBuzz.
I'll follow up about this second failure when I get some time; maybe
next week.

cheers,
mike

diff --git a/src/ftcrfont.c b/src/ftcrfont.c
index 6d74d937a7..ae5b0a92ee 100644
--- a/src/ftcrfont.c
+++ b/src/ftcrfont.c
@@ -302,7 +302,7 @@ struct font_driver const ftcrfont_driver =
 #ifdef HAVE_LIBOTF
   .otf_capability = ftfont_otf_capability,
 #endif
-#if defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ
+#if defined HAVE_LIBOTF && (defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ)
   .shape = ftfont_shape,
 #endif
 #ifdef HAVE_OTF_GET_VARIATION_GLYPHS
diff --git a/src/ftfont.c b/src/ftfont.c
index bc98896393..bbdc936ffd 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -2931,7 +2931,7 @@ ftfont_shape_by_hb (Lisp_Object lgstring, FT_Face ft_face, hb_font_t *hb_font,
 
 #endif /* HAVE_HARFBUZZ */
 
-#if defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ
+#if defined HAVE_LIBOTF && (defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ)
 
 Lisp_Object
 ftfont_shape (Lisp_Object lgstring)
@@ -2956,7 +2956,7 @@ ftfont_shape (Lisp_Object lgstring)
     }
 }
 
-#endif /* defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ */
+#endif /* HAVE_LIBOTF && (HAVE_M17N_FLT || defined HAVE_HARFBUZZ) */
 
 static const char *const ftfont_booleans [] = {
   ":antialias",
@@ -3037,7 +3037,7 @@ static struct font_driver const ftfont_driver =
 #ifdef HAVE_LIBOTF
   .otf_capability = ftfont_otf_capability,
 #endif
-#if defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ
+#if defined HAVE_LIBOTF && (defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ)
   .shape = ftfont_shape,
 #endif
 #ifdef HAVE_OTF_GET_VARIATION_GLYPHS
diff --git a/src/ftxfont.c b/src/ftxfont.c
index 4d4ff6ee0c..a30b07636e 100644
--- a/src/ftxfont.c
+++ b/src/ftxfont.c
@@ -359,7 +359,7 @@ struct font_driver const ftxfont_driver =
   .otf_capability = ftfont_otf_capability,
 #endif
   .end_for_frame = ftxfont_end_for_frame,
-#if defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ
+#if defined HAVE_LIBOTF && (defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ)
   .shape = ftfont_shape,
 #endif
 #ifdef HAVE_OTF_GET_VARIATION_GLYPHS
diff --git a/src/xftfont.c b/src/xftfont.c
index e0bd243467..5111936f3e 100644
--- a/src/xftfont.c
+++ b/src/xftfont.c
@@ -672,7 +672,7 @@ xftfont_draw (struct glyph_string *s, int from, int to, int x, int y,
   return len;
 }
 
-#if defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ
+#if defined HAVE_LIBOTF && (defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ)
 static Lisp_Object
 xftfont_shape (Lisp_Object lgstring)
 {
@@ -784,7 +784,7 @@ struct font_driver const xftfont_driver =
   .otf_capability = ftfont_otf_capability,
 #endif
   .end_for_frame = xftfont_end_for_frame,
-#if defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ
+#if defined HAVE_LIBOTF && (defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ)
   .shape = xftfont_shape,
 #endif
 #ifdef HAVE_OTF_GET_VARIATION_GLYPHS