--- /dev/null
+Name: harfbuzz
+Version: 2.6.7
+Release: 0
+License: MIT and ISC
+Summary: An OpenType text shaping engine
+Url: http://www.freedesktop.org/wiki/Software/HarfBuzz
+Group: Graphics/Font Management
+Source: %{name}-%{version}.tar.xz
+Source99: baselibs.conf
+Source1001: harfbuzz.manifest
+BuildRequires: gcc-c++
+#BuildRequires: pkgconfig(cairo) >= 1.8.0
+#BuildRequires: pkgconfig(cairo-ft)
+BuildRequires: pkgconfig(freetype2) >= 2.3.8
+BuildRequires: pkgconfig(glib-2.0) >= 2.16
+BuildRequires: pkgconfig(gobject-2.0)
+BuildRequires: pkgconfig(gthread-2.0)
+BuildRequires: pkgconfig(icu-uc)
+
+%description
+HarfBuzz is an OpenType text shaping engine.
+
+%package -n libharfbuzz
+Summary: An OpenType text shaping engine
+Group: Graphics/Font Management
+
+%description -n libharfbuzz
+HarfBuzz is an OpenType text shaping engine.
+
+%package tools
+Summary: An OpenType text shaping engine -- Tools
+Group: Graphics/Font Management
+
+%description tools
+HarfBuzz is an OpenType text shaping engine.
+
+%package devel
+Summary: An OpenType text shaping engine -- Development Files
+Group: Development/Libraries
+Requires: libharfbuzz = %{version}
+
+%description devel
+HarfBuzz is an OpenType text shaping engine.
+
+%prep
+%setup -q
+cp %{SOURCE1001} .
+patch -p1 < %{_builddir}/%{name}-%{version}/patch/remove-icu-header-dependencies-from-harfbuzz-header.patch
+
+%build
+%configure \
+ --disable-static
+make %{?_smp_mflags}
+
+%install
+%make_install
+rm -rf %{buildroot}/%{_datadir}/gtk-doc
+
+%post -n libharfbuzz -p /sbin/ldconfig
+
+%postun -n libharfbuzz -p /sbin/ldconfig
+
+%files -n libharfbuzz
+%manifest %{name}.manifest
+%defattr(-,root,root)
+%license COPYING
+%{_libdir}/*.so.0*
+
+%files tools
+%manifest %{name}.manifest
+%defattr(-,root,root)
+%{_bindir}/hb-ot-shape-closure
+%{_bindir}/hb-shape
+%{_bindir}/hb-subset
+#%{_bindir}/hb-view
+
+%files devel
+%manifest %{name}.manifest
+%defattr(-,root,root)
+%{_includedir}/harfbuzz/
+%{_libdir}/*.so
+%{_libdir}/pkgconfig/*.pc
+%{_libdir}/cmake/harfbuzz/harfbuzz-config.cmake
--- /dev/null
+From c7cac7e0d3bbba4285354c90590a6e6d081fce61 Mon Sep 17 00:00:00 2001
+From: Bowon Ryu <bowon.ryu@samsung.com>
+Date: Thu, 24 Dec 2020 13:35:34 +0900
+Subject: [PATCH] remove icu header dependencies from harfbuzz header
+
+Harfbuzz header include icu header that is not Tizen public API.
+In order to remove icu header from rootstrap, icu header dependencies
+should be removed.
+
+@tizen_fix
+
+Change-Id: I94835684a7ddc193c42cc0e2565a200f13c62f8c
+Signed-off-by: Bowon Ryu <bowon.ryu@samsung.com>
+---
+ src/hb-icu.cc | 17 ++++++++++-------
+ src/hb-icu.h | 6 ++----
+ 2 files changed, 12 insertions(+), 11 deletions(-)
+
+diff --git a/src/hb-icu.cc b/src/hb-icu.cc
+index c1dcc24..98de45f 100644
+--- a/src/hb-icu.cc
++++ b/src/hb-icu.cc
+@@ -40,6 +40,7 @@
+ #include <unicode/ustring.h>
+ #include <unicode/utf16.h>
+ #include <unicode/uversion.h>
++#include <unicode/uscript.h>
+
+ /* ICU extra semicolon, fixed since 65, https://github.com/unicode-org/icu/commit/480bec3 */
+ #if U_ICU_VERSION_MAJOR_NUM < 65 && (defined(__GNUC__) || defined(__clang__))
+@@ -72,8 +73,10 @@
+ **/
+
+ hb_script_t
+-hb_icu_script_to_script (UScriptCode script)
++hb_icu_script_to_script (unsigned int numScript)
+ {
++ UScriptCode script = (UScriptCode) numScript;
++
+ if (unlikely (script == USCRIPT_INVALID_CODE))
+ return HB_SCRIPT_INVALID;
+
+@@ -90,18 +93,18 @@ hb_icu_script_to_script (UScriptCode script)
+ * Return value: the UScriptCode identifier found
+ *
+ **/
+-UScriptCode
++unsigned int
+ hb_icu_script_from_script (hb_script_t script)
+ {
+ if (unlikely (script == HB_SCRIPT_INVALID))
+- return USCRIPT_INVALID_CODE;
++ return (unsigned int) USCRIPT_INVALID_CODE;
+
+ unsigned int numScriptCode = 1 + u_getIntPropertyMaxValue (UCHAR_SCRIPT);
+ for (unsigned int i = 0; i < numScriptCode; i++)
+- if (unlikely (hb_icu_script_to_script ((UScriptCode) i) == script))
+- return (UScriptCode) i;
++ if (unlikely (hb_icu_script_to_script (i) == script))
++ return i;
+
+- return USCRIPT_UNKNOWN;
++ return (unsigned int) USCRIPT_UNKNOWN;
+ }
+
+
+@@ -184,7 +187,7 @@ hb_icu_unicode_script (hb_unicode_funcs_t *ufuncs HB_UNUSED,
+ if (unlikely (U_FAILURE (status)))
+ return HB_SCRIPT_UNKNOWN;
+
+- return hb_icu_script_to_script (scriptCode);
++ return hb_icu_script_to_script ((unsigned int) scriptCode);
+ }
+
+ static hb_bool_t
+diff --git a/src/hb-icu.h b/src/hb-icu.h
+index 2db6a7b..47e718c 100644
+--- a/src/hb-icu.h
++++ b/src/hb-icu.h
+@@ -31,15 +31,13 @@
+
+ #include "hb.h"
+
+-#include <unicode/uscript.h>
+-
+ HB_BEGIN_DECLS
+
+
+ HB_EXTERN hb_script_t
+-hb_icu_script_to_script (UScriptCode script);
++hb_icu_script_to_script (unsigned int numScript);
+
+-HB_EXTERN UScriptCode
++HB_EXTERN unsigned int
+ hb_icu_script_from_script (hb_script_t script);
+
+
+--
+2.7.4
+