kumquat-buildroot/package/harfbuzz/0004-GPOS-Fix-build-on-GCC-7.patch
Bernd Kuhls 9b6714bf2a package/harfbuzz: fix build with gcc < 7
Fixes various build errors

In file included from ../src/hb-kern.hh:32:0,
                 from ../src/hb-ot-shape-fallback.cc:32:
../src/hb-ot-layout-gpos-table.hh:50:117: error: specialization of 'template<class context_t> static typename context_t::return_t OT::Layout::GPOS_impl::PosLookup::dispatch_recurse_func(context_t*, unsigned int)' in different namespace [-fpermissive]

introduced by bumping harfbuzz to 4.4.1 in
03022329e0

The build error was not yet caught by the autobuilders but can be
reproduced using this defconfig:
http://autobuild.buildroot.org/results/3fe7526b685368007ae0f66e15ef2b27d30d5063/

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Reviewed-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2022-07-22 19:22:51 +02:00

98 lines
3.3 KiB
Diff

From 3238cb744bb570a75326ab4438968c59069e9af2 Mon Sep 17 00:00:00 2001
From: Kleis Auke Wolthuizen <github@kleisauke.nl>
Date: Wed, 6 Jul 2022 13:18:14 +0200
Subject: [PATCH] [GPOS] Fix build on GCC < 7
[Retrieved (and backported) from:
https://github.com/harfbuzz/harfbuzz/commit/3238cb744bb570a75326ab4438968c59069e9af2]
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
src/OT/Layout/GPOS/GPOS.hh | 17 ++++++++++-------
src/hb-ot-layout-gpos-table.hh | 6 ++++--
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/src/OT/Layout/GPOS/GPOS.hh b/src/OT/Layout/GPOS/GPOS.hh
index 7fb97d7568..23b0b090a2 100644
--- a/src/OT/Layout/GPOS.hh
+++ b/src/OT/Layout/GPOS.hh
@@ -7,6 +7,9 @@
#include "GPOS/PosLookup.hh"
namespace OT {
+
+using Layout::GPOS_impl::PosLookup;
+
namespace Layout {
static void
@@ -25,10 +28,10 @@ struct GPOS : GSUBGPOS
{
static constexpr hb_tag_t tableTag = HB_OT_TAG_GPOS;
- using Lookup = GPOS_impl::PosLookup;
+ using Lookup = PosLookup;
- const GPOS_impl::PosLookup& get_lookup (unsigned int i) const
- { return static_cast<const GPOS_impl::PosLookup &> (GSUBGPOS::get_lookup (i)); }
+ const PosLookup& get_lookup (unsigned int i) const
+ { return static_cast<const PosLookup &> (GSUBGPOS::get_lookup (i)); }
static inline void position_start (hb_font_t *font, hb_buffer_t *buffer);
static inline void position_finish_advances (hb_font_t *font, hb_buffer_t *buffer);
@@ -37,11 +40,11 @@ struct GPOS : GSUBGPOS
bool subset (hb_subset_context_t *c) const
{
hb_subset_layout_context_t l (c, tableTag, c->plan->gpos_lookups, c->plan->gpos_langsys, c->plan->gpos_features);
- return GSUBGPOS::subset<GPOS_impl::PosLookup> (&l);
+ return GSUBGPOS::subset<PosLookup> (&l);
}
bool sanitize (hb_sanitize_context_t *c) const
- { return GSUBGPOS::sanitize<GPOS_impl::PosLookup> (c); }
+ { return GSUBGPOS::sanitize<PosLookup> (c); }
HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
hb_face_t *face) const;
@@ -51,7 +54,7 @@ struct GPOS : GSUBGPOS
for (unsigned i = 0; i < GSUBGPOS::get_lookup_count (); i++)
{
if (!c->gpos_lookups->has (i)) continue;
- const GPOS_impl::PosLookup &l = get_lookup (i);
+ const PosLookup &l = get_lookup (i);
l.dispatch (c);
}
}
@@ -59,7 +62,7 @@ struct GPOS : GSUBGPOS
void closure_lookups (hb_face_t *face,
const hb_set_t *glyphs,
hb_set_t *lookup_indexes /* IN/OUT */) const
- { GSUBGPOS::closure_lookups<GPOS_impl::PosLookup> (face, glyphs, lookup_indexes); }
+ { GSUBGPOS::closure_lookups<PosLookup> (face, glyphs, lookup_indexes); }
typedef GSUBGPOS::accelerator_t<GPOS> accelerator_t;
};
diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh
index f5059cfa83..8fe987fc50 100644
--- a/src/hb-ot-layout-gpos-table.hh
+++ b/src/hb-ot-layout-gpos-table.hh
@@ -32,8 +32,8 @@
#include "OT/Layout/GPOS.hh"
namespace OT {
-
-using Layout::GPOS_impl::PosLookup;
+namespace Layout {
+namespace GPOS_impl {
// TODO(garretrieger): Move into new layout directory.
/* Out-of-class implementation for methods recursing */
@@ -68,6 +68,8 @@ inline bool PosLookup::dispatch_recurse_func<hb_ot_apply_context_t> (hb_ot_apply
}
#endif
+} /* namespace GPOS_impl */
+} /* namespace Layout */
} /* namespace OT */