1# Copyright 2016 Google Inc. 2# 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6import("../../gn/skia.gni") 7import("../third_party.gni") 8 9declare_args() { 10 skia_use_system_harfbuzz = is_official_build && !is_wasm 11} 12 13if (skia_use_system_harfbuzz) { 14 system("harfbuzz") { 15 include_dirs = [ "/usr/include/harfbuzz" ] 16 libs = [ "harfbuzz" ] 17 if (skia_pdf_subset_harfbuzz) { 18 libs += [ "harfbuzz-subset" ] 19 } 20 } 21} else { 22 third_party("harfbuzz") { 23 _src = "../externals/harfbuzz/src" 24 public_include_dirs = [ 25 ".", 26 _src, 27 ] 28 defines = [ 29 #"HAVE_FREETYPE", 30 #"HAVE_ICU", 31 #"HAVE_ICU_BUILTIN", 32 "HAVE_OT", 33 "HAVE_CONFIG_OVERRIDE_H", 34 "HB_NO_FALLBACK_SHAPE", 35 "HB_NO_WIN1256", 36 ] 37 38 public = [ 39 "$_src/hb-blob.h", 40 "$_src/hb-buffer.h", 41 "$_src/hb-common.h", 42 "$_src/hb-deprecated.h", 43 "$_src/hb-face.h", 44 "$_src/hb-font.h", 45 "$_src/hb-map.h", 46 "$_src/hb-ot-font.h", 47 "$_src/hb-ot-layout.h", 48 "$_src/hb-ot-math.h", 49 "$_src/hb-ot-shape.h", 50 "$_src/hb-ot-var.h", 51 "$_src/hb-ot.h", 52 "$_src/hb-set.h", 53 "$_src/hb-shape-plan.h", 54 "$_src/hb-shape.h", 55 "$_src/hb-subset.h", 56 "$_src/hb-unicode.h", 57 "$_src/hb-version.h", 58 "$_src/hb.h", 59 ] 60 61 sources = [ 62 "$_src/OT/Color/CBDT/CBDT.hh", 63 "$_src/OT/Color/COLR/COLR.hh", 64 "$_src/OT/Color/COLR/colrv1-closure.hh", 65 "$_src/OT/Color/CPAL/CPAL.hh", 66 "$_src/OT/Color/sbix/sbix.hh", 67 "$_src/OT/Color/svg/svg.hh", 68 "$_src/OT/Layout/Common/Coverage.hh", 69 "$_src/OT/Layout/Common/CoverageFormat1.hh", 70 "$_src/OT/Layout/Common/CoverageFormat2.hh", 71 "$_src/OT/Layout/Common/RangeRecord.hh", 72 "$_src/OT/Layout/GDEF/GDEF.hh", 73 "$_src/OT/Layout/GPOS/Anchor.hh", 74 "$_src/OT/Layout/GPOS/AnchorFormat1.hh", 75 "$_src/OT/Layout/GPOS/AnchorFormat2.hh", 76 "$_src/OT/Layout/GPOS/AnchorFormat3.hh", 77 "$_src/OT/Layout/GPOS/AnchorMatrix.hh", 78 "$_src/OT/Layout/GPOS/ChainContextPos.hh", 79 "$_src/OT/Layout/GPOS/Common.hh", 80 "$_src/OT/Layout/GPOS/ContextPos.hh", 81 "$_src/OT/Layout/GPOS/CursivePos.hh", 82 "$_src/OT/Layout/GPOS/CursivePosFormat1.hh", 83 "$_src/OT/Layout/GPOS/ExtensionPos.hh", 84 "$_src/OT/Layout/GPOS/GPOS.hh", 85 "$_src/OT/Layout/GPOS/LigatureArray.hh", 86 "$_src/OT/Layout/GPOS/MarkArray.hh", 87 "$_src/OT/Layout/GPOS/MarkBasePos.hh", 88 "$_src/OT/Layout/GPOS/MarkBasePosFormat1.hh", 89 "$_src/OT/Layout/GPOS/MarkLigPos.hh", 90 "$_src/OT/Layout/GPOS/MarkLigPosFormat1.hh", 91 "$_src/OT/Layout/GPOS/MarkMarkPos.hh", 92 "$_src/OT/Layout/GPOS/MarkMarkPosFormat1.hh", 93 "$_src/OT/Layout/GPOS/MarkRecord.hh", 94 "$_src/OT/Layout/GPOS/PairPos.hh", 95 "$_src/OT/Layout/GPOS/PairPosFormat1.hh", 96 "$_src/OT/Layout/GPOS/PairPosFormat2.hh", 97 "$_src/OT/Layout/GPOS/PairSet.hh", 98 "$_src/OT/Layout/GPOS/PairValueRecord.hh", 99 "$_src/OT/Layout/GPOS/PosLookup.hh", 100 "$_src/OT/Layout/GPOS/PosLookupSubTable.hh", 101 "$_src/OT/Layout/GPOS/SinglePos.hh", 102 "$_src/OT/Layout/GPOS/SinglePosFormat1.hh", 103 "$_src/OT/Layout/GPOS/SinglePosFormat2.hh", 104 "$_src/OT/Layout/GPOS/ValueFormat.hh", 105 "$_src/OT/Layout/GSUB/AlternateSet.hh", 106 "$_src/OT/Layout/GSUB/AlternateSubst.hh", 107 "$_src/OT/Layout/GSUB/AlternateSubstFormat1.hh", 108 "$_src/OT/Layout/GSUB/ChainContextSubst.hh", 109 "$_src/OT/Layout/GSUB/Common.hh", 110 "$_src/OT/Layout/GSUB/ContextSubst.hh", 111 "$_src/OT/Layout/GSUB/ExtensionSubst.hh", 112 "$_src/OT/Layout/GSUB/GSUB.hh", 113 "$_src/OT/Layout/GSUB/Ligature.hh", 114 "$_src/OT/Layout/GSUB/LigatureSet.hh", 115 "$_src/OT/Layout/GSUB/LigatureSubst.hh", 116 "$_src/OT/Layout/GSUB/LigatureSubstFormat1.hh", 117 "$_src/OT/Layout/GSUB/MultipleSubst.hh", 118 "$_src/OT/Layout/GSUB/MultipleSubstFormat1.hh", 119 "$_src/OT/Layout/GSUB/ReverseChainSingleSubst.hh", 120 "$_src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh", 121 "$_src/OT/Layout/GSUB/Sequence.hh", 122 "$_src/OT/Layout/GSUB/SingleSubst.hh", 123 "$_src/OT/Layout/GSUB/SingleSubstFormat1.hh", 124 "$_src/OT/Layout/GSUB/SingleSubstFormat2.hh", 125 "$_src/OT/Layout/GSUB/SubstLookup.hh", 126 "$_src/OT/Layout/GSUB/SubstLookupSubTable.hh", 127 "$_src/OT/Layout/types.hh", 128 "$_src/OT/Var/VARC/VARC.cc", 129 "$_src/OT/Var/VARC/VARC.hh", 130 "$_src/OT/Var/VARC/coord-setter.hh", 131 "$_src/OT/glyf/CompositeGlyph.hh", 132 "$_src/OT/glyf/Glyph.hh", 133 "$_src/OT/glyf/GlyphHeader.hh", 134 "$_src/OT/glyf/SimpleGlyph.hh", 135 "$_src/OT/glyf/SubsetGlyph.hh", 136 "$_src/OT/glyf/composite-iter.hh", 137 "$_src/OT/glyf/glyf-helpers.hh", 138 "$_src/OT/glyf/glyf.hh", 139 "$_src/OT/glyf/loca.hh", 140 "$_src/OT/glyf/path-builder.hh", 141 "$_src/OT/name/name.hh", 142 "$_src/graph/classdef-graph.hh", 143 "$_src/graph/coverage-graph.hh", 144 "$_src/graph/graph.hh", 145 "$_src/graph/gsubgpos-context.cc", 146 "$_src/graph/gsubgpos-context.hh", 147 "$_src/graph/gsubgpos-graph.hh", 148 "$_src/graph/markbasepos-graph.hh", 149 "$_src/graph/pairpos-graph.hh", 150 "$_src/graph/serialize.hh", 151 "$_src/graph/split-helpers.hh", 152 "$_src/hb-aat-layout-ankr-table.hh", 153 "$_src/hb-aat-layout-bsln-table.hh", 154 "$_src/hb-aat-layout-common.hh", 155 "$_src/hb-aat-layout-feat-table.hh", 156 "$_src/hb-aat-layout-just-table.hh", 157 "$_src/hb-aat-layout-kerx-table.hh", 158 "$_src/hb-aat-layout-morx-table.hh", 159 "$_src/hb-aat-layout-opbd-table.hh", 160 "$_src/hb-aat-layout-trak-table.hh", 161 "$_src/hb-aat-layout.cc", 162 "$_src/hb-aat-layout.hh", 163 "$_src/hb-aat-ltag-table.hh", 164 "$_src/hb-aat-map.cc", 165 "$_src/hb-aat-map.hh", 166 "$_src/hb-aat.h", 167 "$_src/hb-algs.hh", 168 "$_src/hb-array.hh", 169 "$_src/hb-atomic.hh", 170 "$_src/hb-bimap.hh", 171 "$_src/hb-bit-page.hh", 172 "$_src/hb-bit-set-invertible.hh", 173 "$_src/hb-bit-set.hh", 174 "$_src/hb-blob.cc", 175 "$_src/hb-blob.hh", 176 "$_src/hb-buffer-deserialize-json.hh", 177 "$_src/hb-buffer-deserialize-text-glyphs.hh", 178 "$_src/hb-buffer-deserialize-text-unicode.hh", 179 "$_src/hb-buffer-serialize.cc", 180 "$_src/hb-buffer-verify.cc", 181 "$_src/hb-buffer.cc", 182 "$_src/hb-buffer.hh", 183 "$_src/hb-cache.hh", 184 "$_src/hb-cff-interp-common.hh", 185 "$_src/hb-cff-interp-cs-common.hh", 186 "$_src/hb-cff-interp-dict-common.hh", 187 "$_src/hb-cff1-interp-cs.hh", 188 "$_src/hb-cff2-interp-cs.hh", 189 "$_src/hb-common.cc", 190 "$_src/hb-config.hh", 191 "$_src/hb-cplusplus.hh", 192 "$_src/hb-debug.hh", 193 "$_src/hb-dispatch.hh", 194 "$_src/hb-draw.cc", 195 "$_src/hb-draw.h", 196 "$_src/hb-draw.hh", 197 "$_src/hb-face-builder.cc", 198 "$_src/hb-face.cc", 199 "$_src/hb-face.hh", 200 "$_src/hb-font.cc", 201 "$_src/hb-font.hh", 202 "$_src/hb-geometry.hh", 203 "$_src/hb-iter.hh", 204 "$_src/hb-kern.hh", 205 "$_src/hb-limits.hh", 206 "$_src/hb-machinery.hh", 207 "$_src/hb-map.cc", 208 "$_src/hb-map.hh", 209 "$_src/hb-meta.hh", 210 "$_src/hb-ms-feature-ranges.hh", 211 "$_src/hb-multimap.hh", 212 "$_src/hb-mutex.hh", 213 "$_src/hb-null.hh", 214 "$_src/hb-number-parser.hh", 215 "$_src/hb-number.cc", 216 "$_src/hb-number.hh", 217 "$_src/hb-object.hh", 218 "$_src/hb-open-file.hh", 219 "$_src/hb-open-type.hh", 220 "$_src/hb-ot-cff-common.hh", 221 "$_src/hb-ot-cff1-std-str.hh", 222 "$_src/hb-ot-cff1-table.cc", 223 "$_src/hb-ot-cff1-table.hh", 224 "$_src/hb-ot-cff2-table.cc", 225 "$_src/hb-ot-cff2-table.hh", 226 "$_src/hb-ot-cmap-table.hh", 227 "$_src/hb-ot-color.cc", 228 "$_src/hb-ot-color.h", 229 "$_src/hb-ot-deprecated.h", 230 "$_src/hb-ot-face-table-list.hh", 231 "$_src/hb-ot-face.cc", 232 "$_src/hb-ot-face.hh", 233 "$_src/hb-ot-font.cc", 234 "$_src/hb-ot-gasp-table.hh", 235 "$_src/hb-ot-glyf-table.hh", 236 "$_src/hb-ot-hdmx-table.hh", 237 "$_src/hb-ot-head-table.hh", 238 "$_src/hb-ot-hhea-table.hh", 239 "$_src/hb-ot-hmtx-table.hh", 240 "$_src/hb-ot-kern-table.hh", 241 "$_src/hb-ot-layout-base-table.hh", 242 "$_src/hb-ot-layout-common.hh", 243 "$_src/hb-ot-layout-gdef-table.hh", 244 "$_src/hb-ot-layout-gpos-table.hh", 245 "$_src/hb-ot-layout-gsub-table.hh", 246 "$_src/hb-ot-layout-gsubgpos.hh", 247 "$_src/hb-ot-layout-jstf-table.hh", 248 "$_src/hb-ot-layout.cc", 249 "$_src/hb-ot-layout.hh", 250 "$_src/hb-ot-map.cc", 251 "$_src/hb-ot-map.hh", 252 "$_src/hb-ot-math-table.hh", 253 "$_src/hb-ot-math.cc", 254 "$_src/hb-ot-maxp-table.hh", 255 "$_src/hb-ot-meta-table.hh", 256 "$_src/hb-ot-meta.cc", 257 "$_src/hb-ot-meta.h", 258 "$_src/hb-ot-metrics.cc", 259 "$_src/hb-ot-metrics.hh", 260 "$_src/hb-ot-name-language-static.hh", 261 "$_src/hb-ot-name-language.hh", 262 "$_src/hb-ot-name-table.hh", 263 "$_src/hb-ot-name.cc", 264 "$_src/hb-ot-name.h", 265 "$_src/hb-ot-os2-table.hh", 266 "$_src/hb-ot-os2-unicode-ranges.hh", 267 "$_src/hb-ot-post-macroman.hh", 268 "$_src/hb-ot-post-table-v2subset.hh", 269 "$_src/hb-ot-post-table.hh", 270 "$_src/hb-ot-shape-fallback.cc", 271 "$_src/hb-ot-shape-fallback.hh", 272 "$_src/hb-ot-shape-normalize.cc", 273 "$_src/hb-ot-shape-normalize.hh", 274 "$_src/hb-ot-shape.cc", 275 "$_src/hb-ot-shape.hh", 276 "$_src/hb-ot-shaper-arabic-fallback.hh", 277 "$_src/hb-ot-shaper-arabic-joining-list.hh", 278 "$_src/hb-ot-shaper-arabic-pua.hh", 279 "$_src/hb-ot-shaper-arabic-table.hh", 280 "$_src/hb-ot-shaper-arabic.cc", 281 "$_src/hb-ot-shaper-arabic.hh", 282 "$_src/hb-ot-shaper-default.cc", 283 "$_src/hb-ot-shaper-hangul.cc", 284 "$_src/hb-ot-shaper-hebrew.cc", 285 "$_src/hb-ot-shaper-indic-machine.hh", 286 "$_src/hb-ot-shaper-indic-table.cc", 287 "$_src/hb-ot-shaper-indic.cc", 288 "$_src/hb-ot-shaper-indic.hh", 289 "$_src/hb-ot-shaper-khmer-machine.hh", 290 "$_src/hb-ot-shaper-khmer.cc", 291 "$_src/hb-ot-shaper-myanmar-machine.hh", 292 "$_src/hb-ot-shaper-myanmar.cc", 293 "$_src/hb-ot-shaper-syllabic.cc", 294 "$_src/hb-ot-shaper-syllabic.hh", 295 "$_src/hb-ot-shaper-thai.cc", 296 "$_src/hb-ot-shaper-use-machine.hh", 297 "$_src/hb-ot-shaper-use-table.hh", 298 "$_src/hb-ot-shaper-use.cc", 299 "$_src/hb-ot-shaper-vowel-constraints.cc", 300 "$_src/hb-ot-shaper-vowel-constraints.hh", 301 "$_src/hb-ot-shaper.hh", 302 "$_src/hb-ot-stat-table.hh", 303 "$_src/hb-ot-tag-table.hh", 304 "$_src/hb-ot-tag.cc", 305 "$_src/hb-ot-var-avar-table.hh", 306 "$_src/hb-ot-var-common.hh", 307 "$_src/hb-ot-var-cvar-table.hh", 308 "$_src/hb-ot-var-fvar-table.hh", 309 "$_src/hb-ot-var-gvar-table.hh", 310 "$_src/hb-ot-var-hvar-table.hh", 311 "$_src/hb-ot-var-mvar-table.hh", 312 "$_src/hb-ot-var-varc-table.hh", 313 "$_src/hb-ot-var.cc", 314 "$_src/hb-ot-vorg-table.hh", 315 "$_src/hb-outline.cc", 316 "$_src/hb-outline.hh", 317 "$_src/hb-paint-extents.cc", 318 "$_src/hb-paint-extents.hh", 319 "$_src/hb-paint.cc", 320 "$_src/hb-paint.h", 321 "$_src/hb-paint.hh", 322 "$_src/hb-pool.hh", 323 "$_src/hb-priority-queue.hh", 324 "$_src/hb-repacker.hh", 325 "$_src/hb-sanitize.hh", 326 "$_src/hb-serialize.hh", 327 "$_src/hb-set-digest.hh", 328 "$_src/hb-set.cc", 329 "$_src/hb-set.hh", 330 "$_src/hb-shape-plan.cc", 331 "$_src/hb-shape-plan.hh", 332 "$_src/hb-shape.cc", 333 "$_src/hb-shaper-impl.hh", 334 "$_src/hb-shaper-list.hh", 335 "$_src/hb-shaper.cc", 336 "$_src/hb-shaper.hh", 337 "$_src/hb-static.cc", 338 "$_src/hb-string-array.hh", 339 "$_src/hb-subset-accelerator.hh", 340 "$_src/hb-subset-cff-common.cc", 341 "$_src/hb-subset-cff-common.hh", 342 "$_src/hb-subset-cff1.cc", 343 "$_src/hb-subset-cff2.cc", 344 "$_src/hb-subset-input.cc", 345 "$_src/hb-subset-input.hh", 346 "$_src/hb-subset-instancer-iup.cc", 347 "$_src/hb-subset-instancer-iup.hh", 348 "$_src/hb-subset-instancer-solver.cc", 349 "$_src/hb-subset-instancer-solver.hh", 350 "$_src/hb-subset-plan-member-list.hh", 351 "$_src/hb-subset-plan.cc", 352 "$_src/hb-subset-plan.hh", 353 "$_src/hb-subset-repacker.cc", 354 "$_src/hb-subset-repacker.h", 355 "$_src/hb-subset.cc", 356 "$_src/hb-subset.hh", 357 "$_src/hb-ucd-table.hh", 358 "$_src/hb-ucd.cc", 359 "$_src/hb-unicode-emoji-table.hh", 360 "$_src/hb-unicode.cc", 361 "$_src/hb-unicode.hh", 362 "$_src/hb-utf.hh", 363 "$_src/hb-vector.hh", 364 "$_src/hb.hh", 365 "config-override.h", 366 ] 367 368 # The following sources are explicitly not used. 369 # They are referenced to aid in detecting previously uncategorized files. 370 unused_sources = [ 371 "$_src/graph/test-classdef-graph.cc", 372 "$_src/harfbuzz-subset.cc", 373 "$_src/harfbuzz.cc", 374 "$_src/hb-cairo-utils.cc", 375 "$_src/hb-cairo-utils.hh", 376 "$_src/hb-cairo.cc", 377 "$_src/hb-cairo.h", 378 "$_src/hb-coretext.cc", 379 "$_src/hb-coretext.h", 380 "$_src/hb-directwrite.cc", 381 "$_src/hb-directwrite.h", 382 "$_src/hb-fallback-shape.cc", 383 "$_src/hb-ft-colr.hh", 384 "$_src/hb-ft.cc", 385 "$_src/hb-ft.h", 386 "$_src/hb-gdi.cc", 387 "$_src/hb-gdi.h", 388 "$_src/hb-glib.cc", 389 "$_src/hb-glib.h", 390 "$_src/hb-gobject-structs.cc", 391 "$_src/hb-gobject-structs.h", 392 "$_src/hb-gobject.h", 393 "$_src/hb-graphite2.cc", 394 "$_src/hb-graphite2.h", 395 "$_src/hb-icu.cc", 396 "$_src/hb-icu.h", 397 "$_src/hb-ot-shaper-arabic-win1256.hh", 398 "$_src/hb-style.cc", 399 "$_src/hb-style.h", 400 "$_src/hb-uniscribe.cc", 401 "$_src/hb-uniscribe.h", 402 "$_src/hb-wasm-api-blob.hh", 403 "$_src/hb-wasm-api-buffer.hh", 404 "$_src/hb-wasm-api-common.hh", 405 "$_src/hb-wasm-api-face.hh", 406 "$_src/hb-wasm-api-font.hh", 407 "$_src/hb-wasm-api-list.hh", 408 "$_src/hb-wasm-api-shape.hh", 409 "$_src/hb-wasm-api.cc", 410 "$_src/hb-wasm-api.h", 411 "$_src/hb-wasm-api.hh", 412 "$_src/hb-wasm-shape.cc", 413 "$_src/main.cc", 414 "$_src/test-algs.cc", 415 "$_src/test-array.cc", 416 "$_src/test-bimap.cc", 417 "$_src/test-buffer-serialize.cc", 418 "$_src/test-cff.cc", 419 "$_src/test-gpos-size-params.cc", 420 "$_src/test-gsub-get-alternates.cc", 421 "$_src/test-gsub-would-substitute.cc", 422 "$_src/test-item-varstore.cc", 423 "$_src/test-iter.cc", 424 "$_src/test-machinery.cc", 425 "$_src/test-map.cc", 426 "$_src/test-multimap.cc", 427 "$_src/test-number.cc", 428 "$_src/test-ot-glyphname.cc", 429 "$_src/test-ot-meta.cc", 430 "$_src/test-ot-name.cc", 431 "$_src/test-priority-queue.cc", 432 "$_src/test-repacker.cc", 433 "$_src/test-serialize.cc", 434 "$_src/test-set.cc", 435 "$_src/test-subset-instancer-solver.cc", 436 "$_src/test-tuple-varstore.cc", 437 "$_src/test-unicode-ranges.cc", 438 "$_src/test-use-table.cc", 439 "$_src/test-vector.cc", 440 "$_src/test.cc", 441 "$_src/wasm/graphite/shape.cc", 442 "$_src/wasm/sample/c/shape-fallback.cc", 443 "$_src/wasm/sample/c/shape-ot.cc", 444 ] 445 assert(unused_sources != []) 446 } 447} 448