• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load(
2    "//bazel:skia_rules.bzl",
3    "generate_cpp_files_for_headers",
4    "skia_cc_library",
5    "skia_filegroup",
6    "split_srcs_and_hdrs",
7)
8
9package(
10    default_applicable_licenses = ["//:license"],
11)
12
13licenses(["notice"])
14
15PRIVATE_CODEC_HEADERS = [
16    "SkCodecPriv.h",
17    "SkColorPalette.h",
18    "SkFrameHolder.h",
19    "SkMaskSwizzler.h",
20    "SkParseEncodedOrigin.h",
21    "SkSampler.h",
22    "SkScalingCodec.h",
23    "SkSwizzler.h",
24    "SkPixmapUtilsPriv.h",
25    "//include/private:decode_srcs",
26]
27
28# We put any file that is used by more than one codec here to avoid potential issues if clients
29# depend on multiple codecs. This is not a problem for a statically linked binary, but could maybe
30# cause issues with producing a shared library (e.g. duplicate symbols showing up).
31skia_cc_library(
32    name = "any_decoder",
33    srcs = [
34        "SkCodec.cpp",
35        "SkCodecImageGenerator.cpp",
36        "SkCodecImageGenerator.h",
37        "SkColorPalette.cpp",
38        "SkEncodedInfo.cpp",
39        "SkExif.cpp",
40        "SkGainmapInfo.cpp",
41        "SkImageGenerator_FromEncoded.cpp",
42        "SkMaskSwizzler.cpp",
43        "SkParseEncodedOrigin.cpp",
44        "SkPixmapUtils.cpp",
45        "SkSampler.cpp",
46        "SkSwizzler.cpp",
47        "SkTiffUtility.cpp",
48        "SkTiffUtility.h",
49        "//include/codec:any_codec_hdrs",
50    ],
51    hdrs = PRIVATE_CODEC_HEADERS,
52    features = ["layering_check"],
53    local_defines = ["SK_DISABLE_LEGACY_INIT_DECODERS"],
54    visibility = [
55        "//experimental/rust_png:__subpackages__",
56        "//src/encode:__pkg__",
57        "//src/pdf:__pkg__",
58        "//src/ports:__pkg__",
59    ],
60    deps = [
61        "//modules/skcms",
62        "//src/base",
63        "//src/core",
64        "//src/core:core_priv",
65    ],
66)
67
68skia_cc_library(
69    name = "codec_support",
70    # This is its own rule (with no srcs) to explicitly expose any_codec_hdrs
71    # as public in case a client does not want to use any of our codecs, but
72    # still register their own and/or make use of SkImage::DeferredFromEncodedData
73    hdrs = [
74        "//include/codec:any_codec_hdrs",
75    ],
76    visibility = [
77        "//:__pkg__",
78    ],
79    deps = [
80        ":any_decoder",
81    ],
82)
83
84skia_cc_library(
85    name = "codec_support_priv",
86    hdrs = [
87        "SkCodecImageGenerator.h",
88        "//include/codec:any_codec_hdrs",
89    ] + PRIVATE_CODEC_HEADERS,
90    visibility = [
91        "//modules/skottie:__pkg__",
92        "//modules/skottie/src:__pkg__",
93        "//modules/skresources:__pkg__",
94        "//src/android:__pkg__",
95        "//src/pdf:__pkg__",
96        "//tools:__pkg__",
97    ],
98    deps = [
99        ":any_decoder",
100    ],
101)
102
103skia_cc_library(
104    name = "android_codec",
105    srcs = [
106        "SkAndroidCodec.cpp",
107        "SkAndroidCodecAdapter.cpp",
108        "SkAndroidCodecAdapter.h",
109        "SkSampledCodec.cpp",
110        "SkSampledCodec.h",
111    ],
112    hdrs = [
113        "//include/codec:android_public_hdrs",
114        "//include/codec:any_codec_hdrs",
115    ],
116    features = ["layering_check"],
117    visibility = ["//:__subpackages__"],
118    deps = [
119        ":any_decoder",
120        "//modules/skcms",
121        "//src/base",
122        "//src/core",
123        "//src/core:core_priv",
124    ],
125)
126
127skia_cc_library(
128    name = "bmp_decode",
129    srcs = [
130        "SkBmpBaseCodec.cpp",
131        "SkBmpBaseCodec.h",
132        "SkBmpCodec.cpp",
133        "SkBmpCodec.h",
134        "SkBmpMaskCodec.cpp",
135        "SkBmpMaskCodec.h",
136        "SkBmpRLECodec.cpp",
137        "SkBmpRLECodec.h",
138        "SkBmpStandardCodec.cpp",
139        "SkBmpStandardCodec.h",
140    ],
141    hdrs = [
142        "//include/codec:any_codec_hdrs",
143        "//include/codec:bmp_public_hdrs",
144    ],
145    defines = ["SK_CODEC_DECODES_BMP"],
146    features = ["layering_check"],
147    visibility = ["//:__subpackages__"],
148    deps = [
149        ":any_decoder",
150        "//modules/skcms",
151        "//src/base",
152        "//src/core",
153        "//src/core:core_priv",
154    ],
155)
156
157skia_cc_library(
158    name = "gif_decode",
159    srcs = [
160        "SkWuffsCodec.cpp",
161    ],
162    hdrs = [
163        "//include/codec:any_codec_hdrs",
164        "//include/codec:gif_public_hdrs",
165    ],
166    defines = ["SK_CODEC_DECODES_GIF"],
167    features = ["layering_check"],
168    visibility = ["//:__subpackages__"],
169    deps = [
170        ":any_decoder",
171        "//modules/skcms",
172        "//src/base",
173        "//src/core",
174        "//src/core:core_priv",
175        "@wuffs",
176    ],
177)
178
179skia_cc_library(
180    name = "ico_decode",
181    srcs = [
182        "SkBmpCodec.h",
183        "SkIcoCodec.cpp",
184        "SkIcoCodec.h",
185    ],
186    hdrs = [
187        "//include/codec:any_codec_hdrs",
188        "//include/codec:ico_public_hdrs",
189    ],
190    defines = ["SK_CODEC_DECODES_ICO"],
191    features = ["layering_check"],
192    visibility = ["//:__subpackages__"],
193    deps = [
194        "//src/base",
195        "//src/core",
196        "//src/core:core_priv",
197        "//modules/skcms",
198        ":any_decoder",
199        # icos can be either PNG or BMP
200        ":bmp_decode",
201        ":png_decode",
202    ],
203)
204
205skia_filegroup(
206    name = "common_jpeg_srcs",
207    srcs = [
208        "SkJpegConstants.h",
209        "SkJpegPriv.h",
210    ],
211    visibility = ["//src/encode:__pkg__"],
212)
213
214skia_cc_library(
215    name = "jpeg_decode",
216    srcs = [
217        "SkJpegCodec.cpp",
218        "SkJpegCodec.h",
219        "SkJpegDecoderMgr.cpp",
220        "SkJpegDecoderMgr.h",
221        "SkJpegMetadataDecoderImpl.cpp",
222        "SkJpegMetadataDecoderImpl.h",
223        "SkJpegSourceMgr.cpp",
224        "SkJpegSourceMgr.h",
225        "SkJpegUtility.cpp",
226        "SkJpegUtility.h",
227        ":common_jpeg_srcs",
228        "//include/private:jpeg_decode_srcs",
229    ],
230    hdrs = [
231        "//include/codec:any_codec_hdrs",
232        "//include/codec:jpeg_public_hdrs",
233    ],
234    defines = ["SK_CODEC_DECODES_JPEG"],
235    features = ["layering_check"],
236    visibility = ["//:__subpackages__"],
237    deps = [
238        ":any_decoder",
239        "//modules/skcms",
240        "//src/base",
241        "//src/core",
242        "//src/core:core_priv",
243        "@libjpeg_turbo",
244    ],
245)
246
247skia_cc_library(
248    name = "jpegxl_decode",
249    srcs = [
250        "SkJpegxlCodec.cpp",
251        "SkJpegxlCodec.h",
252        ":common_jpeg_srcs",
253    ],
254    hdrs = [
255        "//include/codec:any_codec_hdrs",
256        "//include/codec:jpegxl_public_hdrs",
257    ],
258    defines = ["SK_CODEC_DECODES_JPEGXL"],
259    features = ["layering_check"],
260    visibility = ["//:__subpackages__"],
261    deps = [
262        ":any_decoder",
263        "//modules/skcms",
264        "//src/base",
265        "//src/core",
266        "//src/core:core_priv",
267        "@libjxl",
268    ],
269)
270
271skia_filegroup(
272    name = "png_codec_base_srcs",
273    srcs = ["SkPngCodecBase.cpp"],
274)
275
276skia_filegroup(
277    name = "png_codec_base_hdrs",
278    srcs = ["SkPngCodecBase.h"],
279)
280
281skia_cc_library(
282    name = "png_codec_base",
283    srcs = [":png_codec_base_srcs"],
284    hdrs = [
285        ":png_codec_base_hdrs",
286        "//include/codec:any_codec_hdrs",
287    ],
288    features = ["layering_check"],
289    visibility = ["//experimental/rust_png/decoder:__pkg__"],
290    deps = [
291        ":any_decoder",
292        "//modules/skcms",
293        "//src/base",
294        "//src/core",
295        "//src/core:core_priv",
296    ],
297)
298
299skia_filegroup(
300    name = "buffet_libpng_srcs",
301    srcs = [
302        "SkPngCodec.cpp",
303        "SkPngCodec.h",
304        "SkPngCompositeChunkReader.cpp",
305        "SkPngCompositeChunkReader.h",
306    ],
307)
308
309skia_filegroup(
310    name = "common_libpng_srcs",
311    srcs = [
312        "SkPngPriv.h",
313    ],
314    visibility = ["//src/encode:__pkg__"],
315)
316
317skia_cc_library(
318    name = "png_decode",
319    srcs = [
320        ":buffet_libpng_srcs",
321        ":common_libpng_srcs",
322    ],
323    hdrs = [
324        "//include/codec:any_codec_hdrs",
325        "//include/codec:png_public_hdrs",
326    ],
327    defines = [
328        "SK_CODEC_DECODES_PNG",
329        "SK_CODEC_DECODES_PNG_WITH_LIBPNG",
330    ],
331    features = ["layering_check"],
332    visibility = ["//:__subpackages__"],
333    deps = [
334        ":any_decoder",
335        ":png_codec_base",
336        "//modules/skcms",
337        "//src/base",
338        "//src/core",
339        "//src/core:core_priv",
340        "@libpng",
341    ],
342)
343
344skia_cc_library(
345    name = "wbmp_decode",
346    srcs = [
347        "SkBmpBaseCodec.h",
348        "SkBmpCodec.h",
349        "SkBmpMaskCodec.h",
350        "SkBmpRLECodec.h",
351        "SkBmpStandardCodec.h",
352        "SkWbmpCodec.cpp",
353        "SkWbmpCodec.h",
354        "//include/codec:bmp_public_hdrs",
355    ],
356    hdrs = [
357        "//include/codec:any_codec_hdrs",
358        "//include/codec:wbmp_public_hdrs",
359    ],
360    defines = ["SK_CODEC_DECODES_WBMP"],
361    features = ["layering_check"],
362    visibility = ["//:__subpackages__"],
363    deps = [
364        ":any_decoder",
365        ":bmp_decode",  # Avoid ODR violations by not duplicating .cpp files
366        "//modules/skcms",
367        "//src/base",
368        "//src/core",
369        "//src/core:core_priv",
370    ],
371)
372
373skia_cc_library(
374    name = "webp_decode",
375    srcs = [
376        "SkWebpCodec.cpp",
377        "SkWebpCodec.h",
378    ],
379    hdrs = [
380        "//include/codec:any_codec_hdrs",
381        "//include/codec:webp_public_hdrs",
382    ],
383    defines = ["SK_CODEC_DECODES_WEBP"],
384    features = ["layering_check"],
385    visibility = ["//:__subpackages__"],
386    deps = [
387        ":any_decoder",
388        "//modules/skcms",
389        "//src/base",
390        "//src/core",
391        "//src/core:core_priv",
392        "@libwebp",
393    ],
394)
395
396generate_cpp_files_for_headers(
397    name = "headers_to_compile",
398    headers = [
399        "SkPixmapUtilsPriv.h",
400        "SkScalingCodec.h",
401    ],
402)
403
404# The following are not yet incorporated into the Bazel build
405skia_filegroup(
406    name = "xmp_srcs",
407    srcs = [
408        "SkXmp.cpp",
409    ],
410)
411
412split_srcs_and_hdrs(
413    name = "jpeg_xmp",
414    files = [
415        "SkJpegXmp.cpp",
416        "SkJpegXmp.h",
417    ],
418)
419