1TARGET = qtharfbuzz
2
3CONFIG += \
4    static \
5    hide_symbols \
6    exceptions_off rtti_off warn_off
7
8MODULE_INCLUDEPATH += $$PWD/include
9
10
11# built-in shapers list configuration:
12SHAPERS += opentype       # HB's main shaper; enabling it should be enough most of the time
13
14# native shaper on Apple platforms; could be used alone to handle both OT and AAT fonts
15darwin: SHAPERS += coretext
16
17# fallback shaper: not really useful with opentype or coretext shaper
18#SHAPERS += fallback
19
20DEFINES += HAVE_CONFIG_H
21DEFINES += HB_NO_UNICODE_FUNCS HB_DISABLE_DEPRECATED
22DEFINES += HB_NDEBUG
23DEFINES += HB_EXTERN=
24
25# platform/compiler specific definitions
26DEFINES += HAVE_ATEXIT
27unix: DEFINES += HAVE_PTHREAD HAVE_SCHED_H HAVE_SCHED_YIELD
28win32: DEFINES += HB_NO_WIN1256
29
30#Workaround https://code.google.com/p/android/issues/detail?id=194631
31android: DEFINES += _POSIX_C_SOURCE=200112L
32
33# Harfbuzz-NG inside Qt uses the Qt atomics (inline code only)
34INCLUDEPATH += $$QT.core.includes
35DEFINES += QT_NO_VERSION_TAGGING
36
37SOURCES += \
38    $$PWD/src/hb-blob.cc \
39    $$PWD/src/hb-buffer.cc \
40    $$PWD/src/hb-buffer-serialize.cc \
41    $$PWD/src/hb-common.cc \
42    $$PWD/src/hb-face.cc \
43    $$PWD/src/hb-font.cc \
44    $$PWD/src/hb-ot-tag.cc \
45    $$PWD/src/hb-set.cc \
46    $$PWD/src/hb-shape.cc \
47    $$PWD/src/hb-shape-plan.cc \
48    $$PWD/src/hb-shaper.cc \
49    $$PWD/src/hb-unicode.cc \
50    $$PWD/src/hb-warning.cc
51
52HEADERS += \
53    $$PWD/src/hb-atomic-private.hh \
54    $$PWD/src/hb-buffer-private.hh \
55    $$PWD/src/hb-buffer-deserialize-json.hh \
56    $$PWD/src/hb-buffer-deserialize-text.hh \
57    $$PWD/src/hb-cache-private.hh \
58    $$PWD/src/hb-debug.hh \
59    $$PWD/src/hb-dsalgs.hh \
60    $$PWD/src/hb-face-private.hh \
61    $$PWD/src/hb-font-private.hh \
62    $$PWD/src/hb-mutex-private.hh \
63    $$PWD/src/hb-object-private.hh \
64    $$PWD/src/hb-open-file-private.hh \
65    $$PWD/src/hb-open-type-private.hh \
66    $$PWD/src/hb-ot-cbdt-table.hh \
67    $$PWD/src/hb-ot-cmap-table.hh \
68    $$PWD/src/hb-ot-glyf-table.hh \
69    $$PWD/src/hb-ot-head-table.hh \
70    $$PWD/src/hb-ot-hhea-table.hh \
71    $$PWD/src/hb-ot-hmtx-table.hh \
72    $$PWD/src/hb-ot-maxp-table.hh \
73    $$PWD/src/hb-ot-name-table.hh \
74    $$PWD/src/hb-ot-os2-table.hh \
75    $$PWD/src/hb-ot-post-table.hh \
76    $$PWD/src/hb-private.hh \
77    $$PWD/src/hb-set-digest-private.hh \
78    $$PWD/src/hb-set-private.hh \
79    $$PWD/src/hb-shape-plan-private.hh \
80    $$PWD/src/hb-shaper-impl-private.hh \
81    $$PWD/src/hb-shaper-list.hh \
82    $$PWD/src/hb-shaper-private.hh \
83    $$PWD/src/hb-string-array.hh \
84    $$PWD/src/hb-unicode-private.hh \
85    $$PWD/src/hb-utf-private.hh
86
87HEADERS += \
88    $$PWD/src/hb.h \
89    $$PWD/src/hb-blob.h \
90    $$PWD/src/hb-buffer.h \
91    $$PWD/src/hb-common.h \
92    $$PWD/src/hb-deprecated.h \
93    $$PWD/src/hb-face.h \
94    $$PWD/src/hb-font.h \
95    $$PWD/src/hb-set.h \
96    $$PWD/src/hb-shape.h \
97    $$PWD/src/hb-shape-plan.h \
98    $$PWD/src/hb-unicode.h \
99    $$PWD/src/hb-version.h
100
101contains(SHAPERS, opentype) {
102    DEFINES += HAVE_OT
103
104    SOURCES += \
105        $$PWD/src/hb-ot-font.cc \
106        $$PWD/src/hb-ot-layout.cc \
107        $$PWD/src/hb-ot-map.cc \
108        $$PWD/src/hb-ot-math.cc \
109        $$PWD/src/hb-ot-shape.cc \
110        $$PWD/src/hb-ot-shape-complex-arabic.cc \
111        $$PWD/src/hb-ot-shape-complex-default.cc \
112        $$PWD/src/hb-ot-shape-complex-hangul.cc \
113        $$PWD/src/hb-ot-shape-complex-hebrew.cc \
114        $$PWD/src/hb-ot-shape-complex-indic.cc \
115        $$PWD/src/hb-ot-shape-complex-indic-table.cc \
116        $$PWD/src/hb-ot-shape-complex-myanmar.cc \
117        $$PWD/src/hb-ot-shape-complex-thai.cc \
118        $$PWD/src/hb-ot-shape-complex-tibetan.cc \
119        $$PWD/src/hb-ot-shape-complex-use.cc \
120        $$PWD/src/hb-ot-shape-complex-use-table.cc \
121        $$PWD/src/hb-ot-shape-fallback.cc \
122        $$PWD/src/hb-ot-shape-normalize.cc \
123	$$PWD/src/hb-ot-var.cc
124
125    HEADERS += \
126        $$PWD/src/hb-ot-kern-table.hh \
127        $$PWD/src/hb-ot-layout-common-private.hh \
128        $$PWD/src/hb-ot-layout-gdef-table.hh \
129        $$PWD/src/hb-ot-layout-gpos-table.hh \
130        $$PWD/src/hb-ot-layout-gsubgpos-private.hh \
131        $$PWD/src/hb-ot-layout-gsub-table.hh \
132        $$PWD/src/hb-ot-layout-jstf-table.hh \
133        $$PWD/src/hb-ot-layout-math-table.hh \
134        $$PWD/src/hb-ot-layout-private.hh \
135        $$PWD/src/hb-ot-map-private.hh \
136        $$PWD/src/hb-ot-math-table.hh \
137        $$PWD/src/hb-ot-post-macroman.hh \
138        $$PWD/src/hb-ot-shape-complex-arabic-fallback.hh \
139        $$PWD/src/hb-ot-shape-complex-arabic-private.hh \
140        $$PWD/src/hb-ot-shape-complex-arabic-table.hh \
141#        $$PWD/src/hb-ot-shape-complex-arabic-win1256.hh \ # disabled with HB_NO_WIN1256
142        $$PWD/src/hb-ot-shape-complex-indic-machine.hh \
143        $$PWD/src/hb-ot-shape-complex-indic-private.hh \
144        $$PWD/src/hb-ot-shape-complex-myanmar-machine.hh \
145        $$PWD/src/hb-ot-shape-complex-private.hh \
146        $$PWD/src/hb-ot-shape-complex-use-machine.hh \
147        $$PWD/src/hb-ot-shape-complex-use-private.hh \
148        $$PWD/src/hb-ot-shape-fallback-private.hh \
149        $$PWD/src/hb-ot-shape-normalize-private.hh \
150        $$PWD/src/hb-ot-shape-private.hh \
151        $$PWD/src/hb-ot-var-avar-table.hh \
152        $$PWD/src/hb-ot-var-fvar-table.hh \
153        $$PWD/src/hb-ot-var-hvar-table.hh \
154        $$PWD/src/hb-ot-var-mvar-table.hh
155
156    HEADERS += \
157        $$PWD/src/hb-ot.h \
158        $$PWD/src/hb-ot-font.h \
159        $$PWD/src/hb-ot-layout.h \
160        $$PWD/src/hb-ot-math.h \
161        $$PWD/src/hb-ot-shape.h \
162        $$PWD/src/hb-ot-tag.h \
163        $$PWD/src/hb-ot-var.h
164}
165
166MODULE_EXT_HEADERS = $$HEADERS
167
168contains(SHAPERS, coretext) {
169    DEFINES += HAVE_CORETEXT
170
171    SOURCES += \
172        $$PWD/src/hb-coretext.cc
173
174    HEADERS += \
175        $$PWD/src/hb-coretext.h
176
177    uikit: \
178        # On iOS/tvOS/watchOS CoreText and CoreGraphics are stand-alone frameworks
179        LIBS_PRIVATE += -framework CoreText -framework CoreGraphics
180    else: \
181        # On Mac OS they are part of the ApplicationServices umbrella framework,
182        # even in 10.8 where they were also made available stand-alone.
183        LIBS_PRIVATE += -framework ApplicationServices
184
185    CONFIG += watchos_coretext
186}
187
188contains(SHAPERS, fallback)|isEmpty(SHAPERS) {
189    DEFINES += HAVE_FALLBACK
190
191    SOURCES += \
192        $$PWD/src/hb-fallback-shape.cc
193}
194
195load(qt_helper_lib)
196