• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1################################################################################
2# Skylark macros
3################################################################################
4
5is_bazel = not hasattr(native, "genmpm")
6
7def portable_select(select_dict, bazel_condition, default_condition):
8    """Replaces select() with a Bazel-friendly wrapper.
9
10    Args:
11      select_dict: Dictionary in the same format as select().
12    Returns:
13      If Blaze platform, returns select() using select_dict.
14      If Bazel platform, returns dependencies for condition
15          bazel_condition, or empty list if none specified.
16    """
17    if is_bazel:
18        return select_dict.get(bazel_condition, select_dict[default_condition])
19    else:
20        return select(select_dict)
21
22def skia_select(conditions, results):
23    """Replaces select() for conditions [UNIX, ANDROID, IOS]
24
25    Args:
26      conditions: [CONDITION_UNIX, CONDITION_ANDROID, CONDITION_IOS]
27      results: [RESULT_UNIX, RESULT_ANDROID, RESULT_IOS]
28    Returns:
29      The result matching the platform condition.
30    """
31    if len(conditions) != 3 or len(results) != 3:
32        fail("Must provide exactly 3 conditions and 3 results")
33
34    selector = {}
35    for i in range(3):
36        selector[conditions[i]] = results[i]
37    return portable_select(selector, conditions[2], conditions[0])
38
39def skia_glob(srcs):
40    """Replaces glob() with a version that accepts a struct.
41
42    Args:
43      srcs: struct(include=[], exclude=[])
44    Returns:
45      Equivalent of glob(srcs.include, exclude=srcs.exclude)
46    """
47    if hasattr(srcs, "include"):
48        if hasattr(srcs, "exclude"):
49            return native.glob(srcs.include, exclude = srcs.exclude)
50        else:
51            return native.glob(srcs.include)
52    return []
53
54################################################################################
55## skia_{all,public}_hdrs()
56################################################################################
57def skia_all_hdrs():
58    return native.glob([
59        "src/**/*.h",
60        "include/**/*.h",
61        "third_party/**/*.h",
62    ])
63
64def skia_public_hdrs():
65    return native.glob(
66        ["include/**/*.h"],
67        exclude = [
68            "include/private/**/*",
69        ],
70    )
71
72################################################################################
73## skia_opts_srcs()
74################################################################################
75# Intel
76SKIA_OPTS_SSE2 = "SSE2"
77
78SKIA_OPTS_SSSE3 = "SSSE3"
79
80SKIA_OPTS_SSE41 = "SSE41"
81
82SKIA_OPTS_SSE42 = "SSE42"
83
84SKIA_OPTS_AVX = "AVX"
85
86SKIA_OPTS_HSW = "HSW"
87
88# Arm
89SKIA_OPTS_NEON = "NEON"
90
91SKIA_OPTS_CRC32 = "CRC32"  # arm64
92
93def opts_srcs(opts):
94    if opts == SKIA_OPTS_SSE2:
95        return native.glob([
96            "src/opts/*_SSE2.cpp",
97            "src/opts/*_sse2.cpp",  # No matches currently.
98        ])
99    elif opts == SKIA_OPTS_SSSE3:
100        return native.glob([
101            "src/opts/*_SSSE3.cpp",
102            "src/opts/*_ssse3.cpp",
103        ])
104    elif opts == SKIA_OPTS_SSE41:
105        return native.glob([
106            "src/opts/*_sse41.cpp",
107        ])
108    elif opts == SKIA_OPTS_SSE42:
109        return native.glob([
110            "src/opts/*_sse42.cpp",
111        ])
112    elif opts == SKIA_OPTS_AVX:
113        return native.glob([
114            "src/opts/*_avx.cpp",
115        ])
116    elif opts == SKIA_OPTS_HSW:
117        return native.glob([
118            "src/opts/*_hsw.cpp",
119        ])
120    elif opts == SKIA_OPTS_NEON:
121        return native.glob([
122            "src/opts/*_neon.cpp",
123        ])
124    elif opts == SKIA_OPTS_CRC32:
125        return native.glob([
126            "src/opts/*_crc32.cpp",
127        ])
128    else:
129        fail("skia_opts_srcs parameter 'opts' must be one of SKIA_OPTS_*.")
130
131def opts_cflags(opts):
132    if opts == SKIA_OPTS_SSE2:
133        return ["-msse2"]
134    elif opts == SKIA_OPTS_SSSE3:
135        return ["-mssse3"]
136    elif opts == SKIA_OPTS_SSE41:
137        return ["-msse4.1"]
138    elif opts == SKIA_OPTS_SSE42:
139        return ["-msse4.2"]
140    elif opts == SKIA_OPTS_AVX:
141        return ["-mavx"]
142    elif opts == SKIA_OPTS_HSW:
143        return ["-mavx2", "-mf16c", "-mfma"]
144    elif opts == SKIA_OPTS_NEON:
145        return ["-mfpu=neon"]
146    elif opts == SKIA_OPTS_CRC32:
147        # NDK r11's Clang (3.8) doesn't pass along this -march setting correctly to an external
148        # assembler, so we do it manually with -Wa.  This is just a bug, fixed in later Clangs.
149        return ["-march=armv8-a+crc", "-Wa,-march=armv8-a+crc"]
150    else:
151        return []
152
153SKIA_CPU_ARM = "ARM"
154
155SKIA_CPU_ARM64 = "ARM64"
156
157SKIA_CPU_X86 = "X86"
158
159SKIA_CPU_OTHER = "OTHER"
160
161def opts_rest_srcs(cpu):
162    srcs = []
163    if cpu == SKIA_CPU_ARM or cpu == SKIA_CPU_ARM64:
164        srcs += native.glob([
165            "src/opts/*_arm.cpp",
166            "src/opts/SkBitmapProcState_opts_none.cpp",
167        ])
168        if cpu == SKIA_CPU_ARM64:
169            # NEON doesn't need special flags to compile on ARM64.
170            srcs += native.glob([
171                "src/opts/*_neon.cpp",
172            ])
173    elif cpu == SKIA_CPU_X86:
174        srcs += native.glob([
175            "src/opts/*_x86.cpp",
176        ])
177    elif cpu == SKIA_CPU_OTHER:
178        srcs += native.glob([
179            "src/opts/*_none.cpp",
180        ])
181    else:
182        fail("opts_rest_srcs parameter 'cpu' must be one of " +
183             "SKIA_CPU_{ARM,ARM64,X86,OTHER}.")
184    return srcs
185
186def skia_opts_deps(cpu):
187    res = [":opts_rest"]
188
189    if cpu == SKIA_CPU_ARM:
190        res += [":opts_neon"]
191
192    if cpu == SKIA_CPU_ARM64:
193        res += [":opts_crc32"]
194
195    if cpu == SKIA_CPU_X86:
196        res += [
197            ":opts_sse2",
198            ":opts_ssse3",
199            ":opts_sse41",
200            ":opts_sse42",
201            ":opts_avx",
202            ":opts_hsw",
203        ]
204
205    return res
206
207################################################################################
208## BASE_SRCS
209################################################################################
210
211# All platform-independent SRCS.
212BASE_SRCS_ALL = struct(
213    include = [
214        "include/private/**/*.h",
215        "src/**/*.h",
216        "src/**/*.cpp",
217        "src/**/*.inc",
218    ],
219    exclude = [
220        # Exclude platform-dependent files.
221        "src/codec/*",
222        "src/device/xps/*",  # Windows-only. Move to ports?
223        "src/doc/*_XPS.cpp",  # Windows-only. Move to ports?
224        "src/gpu/gl/android/*",
225        "src/gpu/gl/egl/*",
226        "src/gpu/gl/glfw/*",
227        "src/gpu/gl/glx/*",
228        "src/gpu/gl/iOS/*",
229        "src/gpu/gl/mac/*",
230        "src/gpu/gl/win/*",
231        "src/opts/**/*",
232        "src/ports/**/*",
233        "src/utils/android/**/*",
234        "src/utils/mac/**/*",
235        "src/utils/win/**/*",
236
237        # Exclude multiple definitions.
238        "src/gpu/GrPathRendering_none.cpp",
239        "src/gpu/ccpr/GrCoverageCountingPathRenderer_none.cpp",
240        "src/gpu/gl/GrGLMakeNativeInterface_none.cpp",
241        "src/pdf/SkDocument_PDF_None.cpp",  # We use src/pdf/SkPDFDocument.cpp.
242
243        # Exclude files that don't compile everywhere.
244        "src/svg/**/*",  # Depends on xml, SkJpegCodec, and SkPngCodec.
245        "src/xml/**/*",  # Avoid dragging in expat when not needed.
246
247        # Conflicting dependencies among Lua versions. See cl/107087297.
248        "src/utils/SkLua*",
249
250        # Currently exclude all vulkan specific files
251        "src/gpu/vk/*",
252
253        # Currently exclude all Dawn-specific files
254        "src/gpu/dawn/*",
255
256        # Defines main.
257        "src/sksl/SkSLMain.cpp",
258
259        # Only used to regenerate the lexer
260        "src/sksl/lex/*",
261
262        # Atlas text
263        "src/atlastext/*",
264    ],
265)
266
267def codec_srcs(limited):
268    """Sources for the codecs. Excludes Raw, and Ico, Webp, and Png if limited."""
269
270    # TODO: Enable wuffs in Google3
271    exclude = ["src/codec/SkWuffsCodec.cpp", "src/codec/*Raw*.cpp"]
272    if limited:
273        exclude += [
274            "src/codec/*Ico*.cpp",
275            "src/codec/*Webp*.cpp",
276            "src/codec/*Png*",
277        ]
278    return native.glob(["src/codec/*.cpp", "third_party/gif/*.cpp"], exclude = exclude)
279
280GL_SRCS_UNIX = struct(
281    include = [
282        "src/gpu/gl/GrGLMakeNativeInterface_none.cpp",
283    ],
284    exclude = [],
285)
286PORTS_SRCS_UNIX = struct(
287    include = [
288        "src/ports/**/*.cpp",
289        "src/ports/**/*.h",
290    ],
291    exclude = [
292        "src/ports/*CG*",
293        "src/ports/*WIC*",
294        "src/ports/*android*",
295        "src/ports/*chromium*",
296        "src/ports/*mac*",
297        "src/ports/*mozalloc*",
298        "src/ports/*nacl*",
299        "src/ports/*win*",
300        "src/ports/SkFontMgr_custom_directory_factory.cpp",
301        "src/ports/SkFontMgr_custom_embedded_factory.cpp",
302        "src/ports/SkFontMgr_custom_empty_factory.cpp",
303        "src/ports/SkFontMgr_empty_factory.cpp",
304        "src/ports/SkFontMgr_fontconfig_factory.cpp",
305        "src/ports/SkFontMgr_fuchsia.cpp",
306        "src/ports/SkImageGenerator_none.cpp",
307        "src/ports/SkTLS_none.cpp",
308    ],
309)
310
311GL_SRCS_ANDROID = struct(
312    include = [
313        "src/gpu/gl/android/*.cpp",
314    ],
315    exclude = [],
316)
317PORTS_SRCS_ANDROID = struct(
318    include = [
319        "src/ports/**/*.cpp",
320        "src/ports/**/*.h",
321    ],
322    exclude = [
323        "src/ports/*CG*",
324        "src/ports/*FontConfig*",
325        "src/ports/*WIC*",
326        "src/ports/*chromium*",
327        "src/ports/*fontconfig*",
328        "src/ports/*mac*",
329        "src/ports/*mozalloc*",
330        "src/ports/*nacl*",
331        "src/ports/*win*",
332        "src/ports/SkDebug_stdio.cpp",
333        "src/ports/SkFontMgr_custom_directory_factory.cpp",
334        "src/ports/SkFontMgr_custom_embedded_factory.cpp",
335        "src/ports/SkFontMgr_custom_empty_factory.cpp",
336        "src/ports/SkFontMgr_empty_factory.cpp",
337        "src/ports/SkFontMgr_fuchsia.cpp",
338        "src/ports/SkImageGenerator_none.cpp",
339        "src/ports/SkTLS_none.cpp",
340    ],
341)
342
343GL_SRCS_IOS = struct(
344    include = [
345        "src/gpu/gl/iOS/GrGLMakeNativeInterface_iOS.cpp",
346    ],
347    exclude = [],
348)
349PORTS_SRCS_IOS = struct(
350    include = [
351        "src/ports/**/*.cpp",
352        "src/ports/**/*.h",
353        "src/utils/mac/*.cpp",
354    ],
355    exclude = [
356        "src/ports/*FontConfig*",
357        "src/ports/*FreeType*",
358        "src/ports/*WIC*",
359        "src/ports/*android*",
360        "src/ports/*chromium*",
361        "src/ports/*fontconfig*",
362        "src/ports/*mozalloc*",
363        "src/ports/*nacl*",
364        "src/ports/*win*",
365        "src/ports/SkFontMgr_custom.cpp",
366        "src/ports/SkFontMgr_custom_directory.cpp",
367        "src/ports/SkFontMgr_custom_embedded.cpp",
368        "src/ports/SkFontMgr_custom_empty.cpp",
369        "src/ports/SkFontMgr_custom_directory_factory.cpp",
370        "src/ports/SkFontMgr_custom_embedded_factory.cpp",
371        "src/ports/SkFontMgr_custom_empty_factory.cpp",
372        "src/ports/SkFontMgr_empty_factory.cpp",
373        "src/ports/SkFontMgr_fuchsia.cpp",
374        "src/ports/SkImageGenerator_none.cpp",
375        "src/ports/SkTLS_none.cpp",
376    ],
377)
378
379def base_srcs():
380    return skia_glob(BASE_SRCS_ALL)
381
382def ports_srcs(os_conditions):
383    return skia_select(
384        os_conditions,
385        [
386            skia_glob(PORTS_SRCS_UNIX),
387            skia_glob(PORTS_SRCS_ANDROID),
388            skia_glob(PORTS_SRCS_IOS),
389        ],
390    )
391
392def gl_srcs(os_conditions):
393    return skia_select(
394        os_conditions,
395        [
396            skia_glob(GL_SRCS_UNIX),
397            skia_glob(GL_SRCS_ANDROID),
398            skia_glob(GL_SRCS_IOS),
399        ],
400    )
401
402def skia_srcs(os_conditions):
403    return base_srcs() + ports_srcs(os_conditions) + gl_srcs(os_conditions)
404
405################################################################################
406## INCLUDES
407################################################################################
408
409# Includes needed by Skia implementation.  Not public includes.
410INCLUDES = [
411    ".",
412    "include/android",
413    "include/c",
414    "include/codec",
415    "include/config",
416    "include/core",
417    "include/docs",
418    "include/effects",
419    "include/encode",
420    "include/gpu",
421    "include/pathops",
422    "include/ports",
423    "include/private",
424    "include/third_party/skcms",
425    "include/utils",
426    "include/utils/mac",
427    "src/codec",
428    "src/core",
429    "src/gpu",
430    "src/image",
431    "src/images",
432    "src/lazy",
433    "src/opts",
434    "src/pdf",
435    "src/ports",
436    "src/sfnt",
437    "src/shaders",
438    "src/shaders/gradients",
439    "src/sksl",
440    "src/utils",
441    "third_party/gif",
442]
443
444################################################################################
445## DM_SRCS
446################################################################################
447
448DM_SRCS_ALL = struct(
449    include = [
450        "dm/*.cpp",
451        "dm/*.h",
452        "experimental/pipe/*.cpp",
453        "experimental/pipe/*.h",
454        "experimental/svg/model/*.cpp",
455        "experimental/svg/model/*.h",
456        "gm/*.cpp",
457        "gm/*.h",
458        "src/utils/SkMultiPictureDocument.cpp",
459        "src/xml/*.cpp",
460        "tests/*.cpp",
461        "tests/*.h",
462        "tools/AutoreleasePool.h",
463        "tools/BigPathBench.inc",
464        "tools/BinaryAsset.h",
465        "tools/CrashHandler.cpp",
466        "tools/CrashHandler.h",
467        "tools/DDLPromiseImageHelper.cpp",
468        "tools/DDLPromiseImageHelper.h",
469        "tools/DDLTileHelper.cpp",
470        "tools/DDLTileHelper.h",
471        "tools/HashAndEncode.cpp",
472        "tools/HashAndEncode.h",
473        "tools/ProcStats.cpp",
474        "tools/ProcStats.h",
475        "tools/Registry.h",
476        "tools/ResourceFactory.h",
477        "tools/Resources.cpp",
478        "tools/Resources.h",
479        "tools/SkMetaData.cpp",
480        "tools/SkMetaData.h",
481        "tools/SkSharingProc.cpp",
482        "tools/SkVMBuilders.cpp",
483        "tools/SkVMBuilders.h",
484        "tools/ToolUtils.cpp",
485        "tools/ToolUtils.h",
486        "tools/UrlDataManager.cpp",
487        "tools/UrlDataManager.h",
488        "tools/debugger/*.cpp",
489        "tools/debugger/*.h",
490        "tools/flags/*.cpp",
491        "tools/flags/*.h",
492        "tools/fonts/RandomScalerContext.cpp",
493        "tools/fonts/RandomScalerContext.h",
494        "tools/fonts/TestFontMgr.cpp",
495        "tools/fonts/TestFontMgr.h",
496        "tools/fonts/TestSVGTypeface.cpp",
497        "tools/fonts/TestSVGTypeface.h",
498        "tools/fonts/TestTypeface.cpp",
499        "tools/fonts/TestTypeface.h",
500        "tools/fonts/ToolUtilsFont.cpp",
501        "tools/fonts/test_font_index.inc",
502        "tools/fonts/test_font_monospace.inc",
503        "tools/fonts/test_font_sans_serif.inc",
504        "tools/fonts/test_font_serif.inc",
505        "tools/gpu/**/*.cpp",
506        "tools/gpu/**/*.h",
507        "tools/ios_utils.h",
508        "tools/random_parse_path.cpp",
509        "tools/random_parse_path.h",
510        "tools/timer/*.cpp",
511        "tools/timer/*.h",
512        "tools/trace/*.cpp",
513        "tools/trace/*.h",
514    ],
515    exclude = [
516        "gm/cgms.cpp",
517        "gm/fiddle.cpp",
518        "gm/video_decoder.cpp",
519        "tests/FontMgrAndroidParserTest.cpp",  # Android-only.
520        "tests/FontMgrFontConfigTest.cpp",  # FontConfig-only.
521        "tests/skia_test.cpp",  # Old main.
522        "tools/gpu/atlastext/*",
523        "tools/gpu/dawn/*",
524        "tools/gpu/gl/angle/*",
525        "tools/gpu/gl/egl/*",
526        "tools/gpu/gl/glx/*",
527        "tools/gpu/gl/iOS/*",
528        "tools/gpu/gl/mac/*",
529        "tools/gpu/gl/win/*",
530        "tools/timer/SysTimer_mach.cpp",
531        "tools/timer/SysTimer_windows.cpp",
532    ],
533)
534
535################################################################################
536## dm_srcs()
537################################################################################
538
539def dm_srcs(os_conditions):
540    """Sources for the dm binary for the specified os."""
541    return skia_glob(DM_SRCS_ALL) + skia_select(
542        os_conditions,
543        [
544            ["tests/FontMgrFontConfigTest.cpp"],
545            ["tests/FontMgrAndroidParserTest.cpp"],
546            [],
547        ],
548    )
549
550################################################################################
551## DM_ARGS
552################################################################################
553
554def DM_ARGS(asan):
555    source = ["gm", "image", "lottie"]
556
557    # TODO(benjaminwagner): f16, pic-8888, serialize-8888, and tiles_rt-8888 fail.
558    config = ["565", "8888", "pdf"]
559    match = ["~Codec_78329453"]
560    return (["--src"] + source + ["--config"] + config + ["--nonativeFonts"] +
561            ["--match"] + match)
562
563################################################################################
564## COPTS
565################################################################################
566
567def base_copts(os_conditions):
568    return skia_select(
569        os_conditions,
570        [
571            # UNIX
572            [
573                "-Wno-implicit-fallthrough",  # Some intentional fallthrough.
574                # Internal use of deprecated methods. :(
575                "-Wno-deprecated-declarations",
576                # TODO(kjlubick)
577                "-Wno-self-assign",  # Spurious warning in tests/PathOpsDVectorTest.cpp?
578            ],
579            # ANDROID
580            [
581                "-Wno-implicit-fallthrough",  # Some intentional fallthrough.
582                # 'GrResourceCache' declared with greater visibility than the
583                # type of its field 'GrResourceCache::fPurgeableQueue'... bogus.
584                "-Wno-error=attributes",
585            ],
586            # IOS
587            [
588                "-Wno-implicit-fallthrough",  # Some intentional fallthrough.
589            ],
590        ],
591    )
592
593################################################################################
594## DEFINES
595################################################################################
596
597def base_defines(os_conditions):
598    return [
599        # Chrome DEFINES.
600        "SK_USE_FREETYPE_EMBOLDEN",
601        # Turn on a few Google3-specific build fixes.
602        "SK_BUILD_FOR_GOOGLE3",
603        # Required for building dm.
604        "GR_TEST_UTILS",
605        # Google3 probably doesn't want this feature yet
606        "SK_DISABLE_REDUCE_OPLIST_SPLITTING",
607        # Staging flags for API changes
608        # Should remove after we update golden images
609        "SK_WEBP_ENCODER_USE_DEFAULT_METHOD",
610        # Experiment to diagnose image diffs in Google3
611        "SK_DISABLE_LOWP_RASTER_PIPELINE",
612        # JPEG is in codec_limited
613        "SK_HAS_JPEG_LIBRARY",
614        # Needed for some tests in dm
615        "SK_ENABLE_SKSL_INTERPRETER",
616    ] + skia_select(
617        os_conditions,
618        [
619            # UNIX
620            [
621                "PNG_SKIP_SETJMP_CHECK",
622                "SK_BUILD_FOR_UNIX",
623                "SK_R32_SHIFT=16",
624                "SK_PDF_USE_SFNTLY",
625                "SK_HAS_PNG_LIBRARY",
626                "SK_HAS_WEBP_LIBRARY",
627            ],
628            # ANDROID
629            [
630                "SK_BUILD_FOR_ANDROID",
631                "SK_HAS_PNG_LIBRARY",
632                "SK_HAS_WEBP_LIBRARY",
633            ],
634            # IOS
635            [
636                "SK_BUILD_FOR_IOS",
637                "SK_BUILD_NO_OPTS",
638                "SKNX_NO_SIMD",
639            ],
640        ],
641    )
642
643################################################################################
644## LINKOPTS
645################################################################################
646
647def base_linkopts(os_conditions):
648    return [
649        "-ldl",
650    ] + skia_select(
651        os_conditions,
652        [
653            # UNIX
654            [],
655            # ANDROID
656            [
657                "-lEGL",
658                "-lGLESv2",
659            ],
660            # IOS
661            [
662                "-framework CoreFoundation",
663                "-framework CoreGraphics",
664                "-framework CoreText",
665                "-framework ImageIO",
666                "-framework MobileCoreServices",
667            ],
668        ],
669    )
670
671################################################################################
672## sksg_lib
673################################################################################
674
675def sksg_lib_hdrs():
676    return native.glob(["modules/sksg/include/*.h"])
677
678def sksg_lib_srcs():
679    return native.glob([
680        "modules/sksg/src/*.cpp",
681        "modules/sksg/src/*.h",
682    ])
683
684################################################################################
685## skparagraph_lib
686################################################################################
687
688def skparagraph_lib_hdrs():
689    return native.glob(["modules/skparagraph/include/*.h"])
690
691def skparagraph_lib_srcs():
692    return native.glob(["modules/skparagraph/src/*.cpp"])
693
694################################################################################
695## experimental xform
696################################################################################
697
698def exp_xform_lib_hdrs():
699    return native.glob(["experimental/xform/*.h"])
700
701def exp_xform_lib_srcs():
702    return native.glob(["experimental/xform/*.cpp"])
703
704################################################################################
705## skottie_lib
706################################################################################
707
708def skottie_lib_hdrs():
709    return native.glob(["modules/skottie/include/*.h"])
710
711def skottie_lib_srcs():
712    return native.glob(
713        [
714            "modules/skottie/src/*.cpp",
715            "modules/skottie/src/*.h",
716            "modules/skottie/src/effects/*.cpp",
717            "modules/skottie/src/effects/*.h",
718            "modules/skottie/src/layers/*.cpp",
719            "modules/skottie/src/layers/*.h",
720            "modules/skottie/src/text/*.cpp",
721            "modules/skottie/src/text/*.h",
722        ],
723        exclude = [
724            "modules/skottie/src/SkottieTest.cpp",
725            "modules/skottie/src/SkottieTool.cpp",
726        ],
727    )
728
729################################################################################
730## skottie_shaper
731################################################################################
732
733SKOTTIE_SHAPER_HDRS = [
734    "modules/skottie/src/text/SkottieShaper.h",
735]
736
737SKOTTIE_SHAPER_SRCS = [
738    "modules/skottie/src/text/SkottieShaper.cpp",
739]
740
741################################################################################
742## skottie_tool
743################################################################################
744
745SKOTTIE_TOOL_SRCS = [
746    "modules/skottie/src/SkottieTool.cpp",
747    "modules/skottie/utils/SkottieUtils.cpp",
748    "modules/skottie/utils/SkottieUtils.h",
749    # TODO(benjaminwagner): Add "flags" target.
750    "tools/flags/CommandLineFlags.cpp",
751    "tools/flags/CommandLineFlags.h",
752]
753
754################################################################################
755## SkShaper
756################################################################################
757
758SKSHAPER_HARFBUZZ_SRCS = [
759    "modules/skshaper/include/SkShaper.h",
760    "modules/skshaper/src/SkShaper.cpp",
761    "modules/skshaper/src/SkShaper_harfbuzz.cpp",
762    "modules/skshaper/src/SkShaper_primitive.cpp",
763]
764
765SKSHAPER_PRIMITIVE_SRCS = [
766    "modules/skshaper/include/SkShaper.h",
767    "modules/skshaper/src/SkShaper.cpp",
768    "modules/skshaper/src/SkShaper_primitive.cpp",
769]
770