• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("//bazel:flags.bzl", "selects")
2load(
3    "//bazel:skia_rules.bzl",
4    "exports_files_legacy",
5    "select_multi",
6    "skia_cc_deps",
7    "skia_cc_library",
8    "skia_filegroup",
9    "skia_objc_library",
10)
11
12package(
13    default_applicable_licenses = ["//:license"],
14)
15
16licenses(["notice"])
17
18exports_files_legacy()
19
20skia_filegroup(
21    name = "discardable_memory_pool",
22    srcs = select({
23        "//src/lazy:use_default_global_memory_pool_true": ["SkDiscardableMemory_none.cpp"],
24        "//conditions:default": [],
25    }),
26)
27
28# Any setting that causes this skia_filegroup to be included also needs to have a dependency on freetype.
29# See "deps" and "uses_freetype" at the bottom of this file.
30skia_filegroup(
31    name = "typeface_freetype",
32    srcs = [
33        "SkFontHost_FreeType.cpp",
34        "SkFontHost_FreeType_common.cpp",
35    ],
36)
37
38skia_filegroup(
39    name = "typeface_freetype_hdrs",
40    srcs = [
41        "SkFontHost_FreeType_common.h",
42        "SkTypeface_FreeType.h",
43    ],
44)
45
46skia_filegroup(
47    name = "typeface_fontations",
48    srcs = select({
49        "//bazel/common_config_settings:use_fontations_true": [
50            ":typeface_fontations_hdrs",
51            ":typeface_fontations_srcs",
52        ],
53        "//conditions:default": [],
54    }),
55)
56
57skia_filegroup(
58    name = "fontmgr",
59    srcs = select_multi(
60        {
61            "//bazel/common_config_settings:android_fontmgr": [
62                ":fontmgr_android_srcs",
63                ":typeface_freetype",
64            ],
65            "//bazel/common_config_settings:custom_directory_fontmgr": [":fontmgr_custom_directory"],
66            "//bazel/common_config_settings:custom_embedded_fontmgr": [":fontmgr_custom_embedded"],
67            "//bazel/common_config_settings:custom_empty_fontmgr": [":fontmgr_custom_empty"],
68            "//bazel/common_config_settings:fci_fontmgr": [":fontmgr_fci"],
69        },
70    ) + select({
71        "@platforms//os:linux": [":legacy_fontmgr_fontconfig"],
72        "//conditions:default": [],
73    }),
74)
75
76skia_filegroup(
77    name = "fontmgr_android_srcs",
78    srcs = [
79        "SkFontMgr_android.cpp",
80        "SkFontMgr_android_parser.cpp",
81    ],
82)
83
84skia_filegroup(
85    name = "fontmgr_android_hdrs",
86    srcs = [
87        "SkFontMgr_android_parser.h",
88    ],
89)
90
91skia_filegroup(
92    name = "legacy_fontmgr_custom",
93    srcs = [
94        "SkFontMgr_custom.cpp",
95        ":typeface_freetype",
96    ],
97)
98
99skia_filegroup(
100    name = "fontmgr_custom_directory",
101    srcs = [
102        "SkFontMgr_custom_directory.cpp",
103        ":legacy_fontmgr_custom",
104    ],
105)
106
107skia_filegroup(
108    name = "fontmgr_custom_embedded",
109    srcs = [
110        "SkFontMgr_custom_embedded.cpp",
111        ":legacy_fontmgr_custom",
112    ],
113)
114
115skia_filegroup(
116    name = "fontmgr_custom_empty",
117    srcs = [
118        "SkFontMgr_custom_empty.cpp",
119        ":legacy_fontmgr_custom",
120    ],
121)
122
123# Any setting that causes this skia_filegroup to be included also needs to have a dependency on
124# fontconfig. See "deps" and "uses_fontconfig" at the bottom of this file.
125skia_filegroup(
126    name = "legacy_fontmgr_fontconfig",
127    srcs = [
128        "SkFontMgr_fontconfig.cpp",
129        ":typeface_freetype",
130    ],
131)
132
133# TODO(bungeman, kjlubick) break this up into the direct and Interface part.
134#  Alternatively, delete it.
135# Any setting that causes this skia_filegroup to be included also needs to have a dependency on
136# fontconfig. See "deps" and "uses_fontconfig" at the bottom of this file.
137skia_filegroup(
138    name = "fontmgr_fci",
139    srcs = [
140        ":fontconfig_interface_srcs",
141        ":typeface_freetype",
142    ],
143)
144
145skia_filegroup(
146    name = "fontconfig_interface_srcs",
147    srcs = [
148        "SkFontConfigInterface.cpp",
149        "SkFontConfigInterface_direct.cpp",
150        "SkFontConfigInterface_direct_factory.cpp",
151        "SkFontConfigTypeface.h",
152        "SkFontMgr_FontConfigInterface.cpp",
153    ],
154)
155
156skia_filegroup(
157    name = "global_init",
158    srcs = ["SkGlobalInitialization_default.cpp"],
159)
160
161# In own group to prevent exporting to *.gni files.
162skia_filegroup(
163    name = "osfile_platform",
164    srcs = select({
165        "@platforms//os:windows": [":osfile_win"],
166        "@platforms//os:ios": [
167            "SkOSFile_ios.h",
168            ":osfile_posix",
169            "//include/ports:core_foundation_hdrs",
170        ],
171        "//conditions:default": [":osfile_posix"],
172    }),
173)
174
175skia_filegroup(
176    name = "osfile",
177    srcs = [
178        "SkOSFile_stdio.cpp",
179        ":osfile_platform",
180    ],
181    visibility = ["//tools/skslc:__pkg__"],
182)
183
184skia_filegroup(
185    name = "osfile_posix",
186    srcs = ["SkOSFile_posix.cpp"],
187)
188
189skia_filegroup(
190    name = "osfile_win",
191    srcs = ["SkOSFile_win.cpp"],
192)
193
194skia_filegroup(
195    name = "malloc",
196    srcs = ["SkMemory_malloc.cpp"],  # TODO(kjlubick) add select() if necessary
197)
198
199skia_filegroup(
200    name = "load_dynamic_library",
201    srcs = ["SkOSLibrary.h"] + select({
202        "@platforms//os:windows": ["SkOSLibrary_win.cpp"],
203        "//conditions:default": ["SkOSLibrary_posix.cpp"],
204    }),
205    visibility = ["//tools/gpu:__pkg__"],
206)
207
208skia_filegroup(
209    name = "skdebug",
210    srcs = select({
211        "@platforms//os:windows": ["SkDebug_win.cpp"],
212        "@platforms//os:android": ["SkDebug_android.cpp"],
213        "//conditions:default": ["SkDebug_stdio.cpp"],
214    }),
215)
216
217skia_filegroup(
218    name = "srcs",
219    srcs = [
220        ":discardable_memory_pool",
221        ":fontmgr",
222        ":global_init",
223        ":load_dynamic_library",
224        ":malloc",
225        ":osfile",
226        ":skdebug",
227        ":typeface_fontations",
228    ],
229    visibility = ["//src:__pkg__"],
230)
231
232skia_filegroup(
233    name = "private_hdrs",
234    srcs = [
235        "SkOSLibrary.h",
236    ] + select({
237        ":uses_freetype": [
238            "SkFontHost_FreeType_common.h",
239            "SkFontMgr_custom.h",
240            "SkTypeface_FreeType.h",
241        ],
242        "//conditions:default": [],
243    }) + select({
244        "@platforms//os:ios": ["SkOSFile_ios.h"],
245        "//conditions:default": [],
246    }) + select({
247        "//bazel/common_config_settings:android_fontmgr": [":fontmgr_android_hdrs"],
248        "//conditions:default": [],
249    }) + select({
250        "//bazel/common_config_settings:fci_fontmgr": [
251            "SkFontConfigInterface_direct.h",
252            "SkFontConfigTypeface.h",
253        ],
254        "//conditions:default": [],
255    }) + select({
256        "//bazel/common_config_settings:use_fontations_true": [
257            "SkFontScanner_fontations.h",
258            ":typeface_fontations_hdrs",
259        ],
260        "//conditions:default": [],
261    }),
262    visibility = ["//src:__pkg__"],
263)
264
265selects.config_setting_group(
266    name = "uses_freetype",
267    match_any = [
268        "//bazel/common_config_settings:android_fontmgr",
269        "//bazel/common_config_settings:custom_directory_fontmgr",
270        "//bazel/common_config_settings:custom_embedded_fontmgr",
271        "//bazel/common_config_settings:custom_empty_fontmgr",
272        "//bazel/common_config_settings:fontconfig_fontmgr",
273        "//bazel/common_config_settings:fci_fontmgr",
274        "@platforms//os:linux",
275    ],
276)
277
278selects.config_setting_group(
279    name = "uses_fontconfig",
280    match_any = [
281        "//bazel/common_config_settings:fontconfig_fontmgr",
282        "//bazel/common_config_settings:fci_fontmgr",
283        "@platforms//os:linux",
284    ],
285)
286
287selects.config_setting_group(
288    name = "uses_fontations",
289    match_any = [
290        "//bazel/common_config_settings:use_fontations_true",
291    ],
292)
293
294skia_cc_deps(
295    name = "deps",
296    linkopts = select({
297        "@platforms//os:linux": ["-ldl"],
298        "@platforms//os:android": [
299            "-llog",  # Provides __android_log_vprint, needed by //src/ports/SkDebug_android.cpp.
300        ],
301        "//conditions:default": [],
302    }),
303    visibility = ["//src:__pkg__"],
304    deps = select({
305        ":uses_freetype": ["@freetype"],
306        "//conditions:default": [],
307    }) + select({
308        ":uses_fontconfig": ["//bazel/external/fontconfig"],
309        "//conditions:default": [],
310    }) + select({
311        "//bazel/common_config_settings:android_fontmgr": ["@expat"],
312        "//conditions:default": [],
313    }) + select({
314        "//bazel/common_config_settings:use_fontations_true": [
315            ":fontmgr_fontations_empty",
316            "//src/ports/fontations:deps",
317        ],
318        "//conditions:default": [],
319    }),
320)
321
322skia_filegroup(
323    name = "base_srcs",
324    srcs = [
325        ":skdebug",
326        # TODO(kjlubick) Chromium will need a way to overwrite the malloc impls. Having malloc
327        # be a module doesn't quite work because ld complains "backward reference detected"
328        # when something in a module like pathops uses malloc without depending on it.
329        ":malloc",
330    ],
331    visibility = ["//src/base:__pkg__"],
332)
333
334skia_filegroup(
335    name = "core_srcs",
336    srcs = [
337        ":global_init",
338        ":osfile",
339    ],
340    visibility = ["//src/core:__pkg__"],
341)
342
343skia_filegroup(
344    name = "fontmgr_custom_srcs",
345    srcs = [
346        "SkFontMgr_custom.cpp",
347    ],
348)
349
350skia_filegroup(
351    name = "fontmgr_custom_hdrs",
352    srcs = [
353        "SkFontMgr_custom.h",
354    ],
355)
356
357skia_cc_library(
358    name = "fontmgr_custom",
359    srcs = [":fontmgr_custom_srcs"],
360    hdrs = [":fontmgr_custom_hdrs"],
361    deps = [
362        ":freetype_support",
363        "//src/base",
364        "//src/core",
365        "//src/core:core_priv",
366    ],
367)
368
369skia_cc_library(
370    name = "freetype_support",
371    srcs = [
372        ":typeface_freetype",
373        "//src/utils:char_to_glyphcache",
374    ],
375    hdrs = [":typeface_freetype_hdrs"],
376    deps = [
377        "//:core",
378        "//:pathops",
379        "@freetype",
380    ],
381)
382
383skia_cc_library(
384    name = "fontmgr_android_freetype",
385    srcs = [
386        ":fontmgr_android_srcs",
387    ],
388    hdrs = [
389        ":fontmgr_android_hdrs",
390        "//include/ports:android_fontmgr_hdrs",
391    ],
392    defines = ["SK_FONTMGR_ANDROID_AVAILABLE"],
393    visibility = ["//:__pkg__"],
394    deps = [
395        ":freetype_support",
396        "//:core",
397        "//src/base",
398        "//src/core:core_priv",
399        "@expat",
400    ],
401)
402
403skia_filegroup(
404    name = "fontmgr_coretext_srcs",
405    srcs = ["SkFontMgr_mac_ct.cpp"],
406)
407
408skia_objc_library(
409    name = "fontmgr_coretext",
410    srcs = [
411        ":fontmgr_coretext_srcs",
412    ],
413    hdrs = [
414        "//include/ports:coretext_fontmgr_hdrs",
415    ],
416    defines = ["SK_FONTMGR_CORETEXT_AVAILABLE"],
417    features = ["layering_check"],
418    ios_frameworks = [
419        "CoreText",
420        "CoreGraphics",
421        "CoreFoundation",
422    ],
423    mac_frameworks = [
424        "ApplicationServices",
425        "CoreFoundation",
426        "CoreText",
427    ],
428    visibility = ["//:__pkg__"],
429    deps = [
430        ":coretext_typeface",
431        "//:core",
432        "//src/base",
433        "//src/core:core_priv",
434    ],
435)
436
437skia_cc_library(
438    name = "fontmgr_data_freetype",
439    srcs = [
440        "SkFontMgr_custom_embedded.cpp",
441    ],
442    hdrs = [
443        "//include/ports:data_fontmgr_hdrs",
444    ],
445    defines = ["SK_FONTMGR_FREETYPE_DATA_AVAILABLE"],
446    features = ["layering_check"],
447    visibility = ["//:__pkg__"],
448    deps = [
449        ":fontmgr_custom",
450        ":freetype_support",
451        "//:core",
452        "//src/base",
453        "//src/core:core_priv",
454    ],
455)
456
457skia_cc_library(
458    name = "fontmgr_directory_freetype",
459    srcs = [
460        "SkFontMgr_custom_directory.cpp",
461    ],
462    hdrs = [
463        "//include/ports:directory_fontmgr_hdrs",
464    ],
465    defines = ["SK_FONTMGR_FREETYPE_DIRECTORY_AVAILABLE"],
466    features = ["layering_check"],
467    visibility = ["//:__pkg__"],
468    deps = [
469        ":fontmgr_custom",
470        ":freetype_support",
471        "//:core",
472        "//src/base",
473        "//src/core:core_priv",
474    ],
475)
476
477skia_cc_library(
478    name = "fontmgr_empty_freetype",
479    srcs = [
480        "SkFontMgr_custom_empty.cpp",
481    ],
482    hdrs = [
483        "//include/ports:empty_fontmgr_hdrs",
484    ],
485    defines = ["SK_FONTMGR_FREETYPE_EMPTY_AVAILABLE"],
486    features = ["layering_check"],
487    visibility = ["//:__pkg__"],
488    deps = [
489        ":fontmgr_custom",
490        ":freetype_support",
491        "//:core",
492        "//src/base",
493        "//src/core:core_priv",
494    ],
495)
496
497skia_filegroup(
498    name = "typeface_fontations_hdrs",
499    srcs = ["SkTypeface_fontations_priv.h"],
500)
501
502skia_filegroup(
503    name = "typeface_fontations_srcs",
504    srcs = ["SkTypeface_fontations.cpp"],
505)
506
507skia_filegroup(
508    name = "fontmgr_fontations_empty_srcs",
509    srcs = ["SkFontMgr_fontations_empty.cpp"],
510)
511
512skia_cc_library(
513    name = "fontmgr_fontations_empty",
514    srcs = [
515        ":fontmgr_fontations_empty_srcs",
516        ":typeface_fontations",
517        "//include/ports:typeface_fontations_hdrs",
518    ],
519    hdrs = [
520        "//include/ports:fontmgr_fontations_hdrs",
521    ],
522    defines = ["SK_FONTMGR_FONTATIONS_AVAILABLE"],
523    visibility = [
524        "//:__pkg__",
525        "//tools/fonts:__pkg__",
526    ],
527    deps = [
528        "//:core",
529        "//:pathops",
530        "//src/ports/fontations:deps",
531    ],
532)
533
534skia_cc_library(
535    name = "fontmgr_fontconfig_freetype",
536    srcs = [
537        "SkFontMgr_fontconfig.cpp",
538    ],
539    hdrs = [
540        "//include/ports:fontconfig_fontmgr_hdrs",
541    ],
542    defines = ["SK_FONTMGR_FONTCONFIG_AVAILABLE"],
543    visibility = ["//:__pkg__"],
544    deps = [
545        ":freetype_support",
546        "//:core",
547        "//bazel/external/fontconfig",
548        "//src/base",
549        "//src/core:core_priv",
550    ],
551)
552
553skia_filegroup(
554    name = "typeface_mac_hdrs",
555    srcs = ["SkTypeface_mac_ct.h"],
556    visibility = ["//src/utils/mac:__pkg__"],
557)
558
559skia_filegroup(
560    name = "typeface_mac_srcs",
561    srcs = [
562        "SkScalerContext_mac_ct.cpp",
563        "SkScalerContext_mac_ct.h",
564        "SkTypeface_mac_ct.cpp",
565    ],
566)
567
568skia_objc_library(
569    name = "coretext_typeface",
570    srcs = [
571        ":typeface_mac_srcs",
572    ],
573    hdrs = [
574        ":typeface_mac_hdrs",
575        "//include/ports:mac_typeface",
576    ],
577    features = ["layering_check"],
578    ios_frameworks = [
579        "CoreFoundation",
580        "CoreGraphics",
581        "CoreText",
582    ],
583    mac_frameworks = ["ApplicationServices"],
584    visibility = [
585        "//:__pkg__",
586        "//modules/skshaper:__pkg__",
587    ],
588    deps = [
589        "//:core",
590        "//src/base",
591        "//src/core:core_priv",
592        "//src/utils/mac:mac_utils_priv",
593    ],
594)
595
596skia_objc_library(
597    name = "imagegenerator_coregraphics",
598    srcs = [
599        "SkImageGeneratorCG.cpp",
600    ],
601    hdrs = [
602        "//include/ports:imagegenerator_cg_hdrs",
603    ],
604    features = ["layering_check"],
605    ios_frameworks = [
606        "CoreGraphics",
607        "ImageIO",
608        "MobileCoreServices",
609    ],
610    mac_frameworks = ["ApplicationServices"],
611    visibility = ["//:__pkg__"],
612    deps = [
613        "//:core",
614        "//src/base",
615        "//src/codec:any_decoder",
616        "//src/core:core_priv",
617        "//src/utils/mac:mac_utils_priv",
618    ],
619)
620
621skia_filegroup(
622    name = "windows_fonts_srcs",
623    srcs = [
624        "SkFontMgr_win_dw.cpp",
625        "SkScalerContext_win_dw.cpp",
626        "SkScalerContext_win_dw.h",
627        "SkTypeface_win_dw.cpp",
628        "SkTypeface_win_dw.h",
629    ],
630)
631
632skia_filegroup(
633    name = "fontmgr_fuchsia_srcs",
634    srcs = ["SkFontMgr_fuchsia.cpp"],
635)
636
637skia_filegroup(
638    name = "fonthost_win_srcs",
639    srcs = ["SkFontHost_win.cpp"],
640)
641