xref: /aosp_15_r20/external/skia/src/core/BUILD.bazel (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1load("//bazel:flags.bzl", "bool_flag")
2load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_cc_library", "skia_filegroup", "split_srcs_and_hdrs")
3
4package(
5    default_applicable_licenses = ["//:license"],
6)
7
8licenses(["notice"])
9
10# In separate file list because these files are exported to
11# core.gni:skia_core_sources as well as sksl.gni:skslc_deps.
12CORE_SKSLC_FILES = [
13    "SkChecksum.cpp",
14    "SkChecksum.h",
15    "SkCpu.cpp",
16    "SkCpu.h",
17    "SkData.cpp",
18    "SkMatrixInvert.cpp",
19    "SkMatrixInvert.h",
20    "SkStream.cpp",
21    "SkString.cpp",
22    "SkStringUtils.cpp",
23    "SkStringUtils.h",
24]
25
26split_srcs_and_hdrs(
27    name = "core_skslc",
28    files = CORE_SKSLC_FILES,
29)
30
31skia_filegroup(
32    name = "core_priv_hdrs",
33    srcs = [
34        # By putting headers here, we are explicitly stating we want to use them
35        # in places other than core. They still count as "private" headers.
36        "Sk4px.h",
37        "SkAAClip.h",
38        "SkATrace.h",
39        "SkAdvancedTypefaceMetrics.h",
40        "SkAnnotationKeys.h",
41        "SkAutoPixmapStorage.h",
42        "SkBitmapCache.h",
43        "SkBitmapDevice.h",
44        "SkBitmapProcState.h",
45        "SkBlendModeBlender.h",
46        "SkBlendModePriv.h",
47        "SkBlenderBase.h",
48        "SkBlitter_A8.h",
49        "SkBlurEngine.h",
50        "SkBlurMask.h",
51        "SkBlurMaskFilterImpl.h",
52        "SkCachedData.h",
53        "SkCanvasPriv.h",
54        "SkChecksum.h",
55        "SkClipStack.h",
56        "SkClipStackDevice.h",
57        "SkColorFilterPriv.h",
58        "SkColorSpacePriv.h",
59        "SkColorSpaceXformSteps.h",
60        "SkCompressedDataUtils.h",
61        "SkConvertPixels.h",
62        "SkCpu.h",
63        "SkDebugUtils.h",
64        "SkDescriptor.h",
65        "SkDevice.h",
66        "SkDistanceFieldGen.h",
67        "SkDraw.h",
68        "SkDrawBase.h",
69        "SkDrawProcs.h",
70        "SkDrawShadowInfo.h",
71        "SkEdgeClipper.h",
72        "SkEffectPriv.h",
73        "SkEnumerate.h",
74        "SkFDot6.h",
75        "SkFontDescriptor.h",
76        "SkFontMetricsPriv.h",
77        "SkFontPriv.h",
78        "SkFontStream.h",
79        "SkGeometry.h",
80        "SkGlyph.h",
81        "SkIPoint16.h",
82        "SkImageFilterCache.h",
83        "SkImageFilterTypes.h",
84        "SkImageFilter_Base.h",
85        "SkImageInfoPriv.h",
86        "SkImagePriv.h",
87        "SkLRUCache.h",
88        "SkLatticeIter.h",
89        "SkLocalMatrixImageFilter.h",
90        "SkMD5.h",
91        "SkMask.h",
92        "SkMasks.h",
93        "SkMaskFilterBase.h",
94        "SkMaskGamma.h",
95        "SkMatrixInvert.h",
96        "SkMatrixPriv.h",
97        "SkMatrixUtils.h",
98        "SkMemset.h",
99        "SkMeshPriv.h",
100        "SkMessageBus.h",
101        "SkMipmap.h",
102        "SkMipmapAccessor.h",
103        "SkNextID.h",
104        "SkOSFile.h",
105        "SkOpts.h",
106        "SkPaintDefaults.h",
107        "SkPaintPriv.h",
108        "SkPathEffectBase.h",
109        "SkPathEnums.h",
110        "SkPathPriv.h",
111        "SkPictureData.h",
112        "SkPicturePriv.h",
113        "SkPointPriv.h",
114        "SkRRectPriv.h",
115        "SkRTree.h",
116        "SkRasterClip.h",
117        "SkRasterPipeline.h",
118        "SkRasterPipelineContextUtils.h",
119        "SkRasterPipelineOpContexts.h",
120        "SkRasterPipelineOpList.h",
121        "SkReadBuffer.h",
122        "SkRecord.h",
123        "SkRecordDraw.h",
124        "SkRecordOpts.h",
125        "SkRecordedDrawable.h",
126        "SkRecorder.h",
127        "SkRectPriv.h",
128        "SkRegionPriv.h",
129        "SkResourceCache.h",
130        "SkRuntimeBlender.h",
131        "SkRuntimeEffectPriv.h",
132        "SkSLTypeShared.h",
133        "SkSamplingPriv.h",
134        "SkScalerContext.h",
135        "SkScan.h",
136        "SkSpecialImage.h",
137        "SkStreamPriv.h",
138        "SkStrike.h",
139        "SkStrikeCache.h",
140        "SkStrikeSpec.h",
141        "SkStringUtils.h",
142        "SkStroke.h",
143        "SkSurfacePriv.h",
144        "SkSwizzlePriv.h",
145        "SkTDynamicHash.h",
146        "SkTHash.h",
147        "SkTMultiMap.h",
148        "SkTaskGroup.h",
149        "SkTextBlobPriv.h",
150        "SkTextFormatParams.h",
151        "SkTraceEvent.h",
152        "SkTraceEventCommon.h",
153        "SkTypefaceCache.h",
154        "SkTypeface_remote.h",
155        "SkValidationUtils.h",
156        "SkVertState.h",
157        "SkVerticesPriv.h",
158        "SkWriteBuffer.h",
159        "SkWriter32.h",
160        "SkYUVAInfoLocation.h",
161        "SkYUVMath.h",
162        "SkYUVPlanesCache.h",
163        "//include/private/chromium:core_hdrs",
164        "//include/private:core_priv_hdrs",
165        "//src/effects:core_priv_hdrs",
166        "//src/image:image_hdrs",
167        "//src/sfnt:sfnt_hdrs",
168        "//src/shaders:core_priv_hdrs",
169        "//src/sksl/codegen:rasterpipeline_hdrs",
170        "//src/sksl:core_priv_hdrs",
171        "//src/text:text_hdrs",
172        "//src/utils:core_priv_hdrs",
173    ],
174)
175
176skia_filegroup(
177    name = "opts_srcs",
178    srcs = [
179        "Sk4px.h",
180        "SkOpts.h",
181        "SkOptsTargets.h",
182        "SkRasterPipeline.h",
183        "SkRasterPipelineContextUtils.h",
184        "SkRasterPipelineOpContexts.h",
185        "SkRasterPipelineOpList.h",
186    ],
187    visibility = ["//src/opts:__pkg__"],
188)
189
190skia_filegroup(
191    name = "core_priv_srcs",
192    srcs = [
193        # Private Headers (not used in other modules [except tests/gms])
194        "SkAlphaRuns.h",
195        "SkAnalyticEdge.h",
196        "SkAutoBlitterChoose.h",
197        "SkBigPicture.h",
198        "SkBlitMask.h",
199        "SkBlitRow.h",
200        "SkBlitter.h",
201        "SkCoreBlitters.h",
202        "SkCubicClipper.h",
203        "SkEdge.h",
204        "SkEdgeBuilder.h",
205        "SkGaussFilter.h",
206        "SkGlyphRunPainter.h",
207        "SkKnownRuntimeEffects.h",
208        "SkLineClipper.h",
209        "SkMaskBlurFilter.h",
210        "SkMaskCache.h",
211        "SkMipmapBuilder.h",
212        "SkOptsTargets.h",
213        "SkPathMakers.h",
214        "SkPathMeasurePriv.h",
215        "SkPictureFlat.h",
216        "SkPicturePlayback.h",
217        "SkPictureRecord.h",
218        "SkPixelRefPriv.h",
219        "SkPtrRecorder.h",
220        "SkQuadClipper.h",
221        "SkRasterClipStack.h",
222        "SkReadPixelsRec.h",
223        "SkRecordPattern.h",
224        "SkRecords.h",
225        "SkSafeRange.h",
226        "SkScaleToSides.h",
227        "SkScanPriv.h",
228        "SkSpriteBlitter.h",
229        "SkStrokerPriv.h",
230        "SkWritePixelsRec.h",
231        "//include/private:core_srcs",
232    ],
233)
234
235skia_filegroup(
236    name = "core_srcs",
237    srcs = [
238        # Implementation of public and private headers
239        "SkAAClip.cpp",
240        "SkATrace.cpp",
241        "SkAlphaRuns.cpp",
242        "SkAnalyticEdge.cpp",
243        "SkAnnotation.cpp",
244        "SkAutoPixmapStorage.cpp",
245        "SkBBHFactory.cpp",
246        "SkBigPicture.cpp",
247        "SkBitmap.cpp",
248        "SkBitmapCache.cpp",
249        "SkBitmapDevice.cpp",
250        "SkBitmapProcState.cpp",
251        "SkBitmapProcState_matrixProcs.cpp",
252        "SkBitmapProcState_opts.cpp",
253        "SkBitmapProcState_opts_lasx.cpp",
254        "SkBitmapProcState_opts_ssse3.cpp",
255        "SkBlendMode.cpp",
256        "SkBlendModeBlender.cpp",
257        "SkBlitMask_opts.cpp",
258        "SkBlitMask_opts_ssse3.cpp",
259        "SkBlitRow_D32.cpp",
260        "SkBlitRow_opts.cpp",
261        "SkBlitRow_opts_hsw.cpp",
262        "SkBlitRow_opts_lasx.cpp",
263        "SkBlitter.cpp",
264        "SkBlitter_A8.cpp",
265        "SkBlitter_ARGB32.cpp",
266        "SkBlitter_Sprite.cpp",
267        "SkBlurEngine.cpp",
268        "SkBlurMask.cpp",
269        "SkBlurMaskFilterImpl.cpp",
270        "SkCachedData.cpp",
271        "SkCanvas.cpp",
272        "SkCanvasPriv.cpp",
273        "SkCanvas_Raster.cpp",
274        "SkCapabilities.cpp",
275        "SkChecksum.cpp",
276        "SkClipStack.cpp",
277        "SkClipStackDevice.cpp",
278        "SkColor.cpp",
279        "SkColorFilter.cpp",
280        "SkColorSpace.cpp",
281        "SkColorSpaceXformSteps.cpp",
282        "SkColorTable.cpp",
283        "SkCompressedDataUtils.cpp",
284        "SkContourMeasure.cpp",
285        "SkConvertPixels.cpp",
286        "SkCpu.cpp",
287        "SkCubicClipper.cpp",
288        "SkCubicMap.cpp",
289        "SkData.cpp",
290        "SkDataTable.cpp",
291        "SkDescriptor.cpp",
292        "SkDevice.cpp",
293        "SkDistanceFieldGen.cpp",
294        "SkDocument.cpp",
295        "SkDraw.cpp",
296        "SkDrawBase.cpp",
297        "SkDrawShadowInfo.cpp",
298        "SkDraw_atlas.cpp",
299        "SkDraw_text.cpp",
300        "SkDraw_vertices.cpp",
301        "SkDrawable.cpp",
302        "SkEdge.cpp",
303        "SkEdgeBuilder.cpp",
304        "SkEdgeClipper.cpp",
305        "SkExecutor.cpp",
306        "SkFlattenable.cpp",
307        "SkFont.cpp",
308        "SkFontDescriptor.cpp",
309        "SkFontMetricsPriv.cpp",
310        "SkFontMgr.cpp",
311        "SkFontStream.cpp",
312        "SkFont_serial.cpp",
313        "SkGaussFilter.cpp",
314        "SkGeometry.cpp",
315        "SkGlobalInitialization_core.cpp",
316        "SkGlyph.cpp",
317        "SkGlyphRunPainter.cpp",
318        "SkGraphics.cpp",
319        "SkIDChangeListener.cpp",
320        "SkImageFilter.cpp",
321        "SkImageFilterCache.cpp",
322        "SkImageFilterTypes.cpp",
323        "SkImageGenerator.cpp",
324        "SkImageInfo.cpp",
325        "SkKnownRuntimeEffects.cpp",
326        "SkLatticeIter.cpp",
327        "SkLineClipper.cpp",
328        "SkLocalMatrixImageFilter.cpp",
329        "SkM44.cpp",
330        "SkMD5.cpp",
331        "SkMallocPixelRef.cpp",
332        "SkMask.cpp",
333        "SkMasks.cpp",
334        "SkMaskBlurFilter.cpp",
335        "SkMaskCache.cpp",
336        "SkMaskFilter.cpp",
337        "SkMaskGamma.cpp",
338        "SkMatrix.cpp",
339        "SkMatrixInvert.cpp",
340        "SkMemset_opts.cpp",
341        "SkMemset_opts_avx.cpp",
342        "SkMemset_opts_erms.cpp",
343        "SkMesh.cpp",
344        "SkMipmap.cpp",
345        "SkMipmapAccessor.cpp",
346        "SkMipmapBuilder.cpp",
347        "SkMipmapDrawDownSampler.cpp",
348        "SkMipmapHQDownSampler.cpp",
349        "SkOpts.cpp",
350        "SkOverdrawCanvas.cpp",
351        "SkPaint.cpp",
352        "SkPaintPriv.cpp",
353        "SkPath.cpp",
354        "SkPathBuilder.cpp",
355        "SkPathEffect.cpp",
356        "SkPathMeasure.cpp",
357        "SkPathRef.cpp",
358        "SkPathUtils.cpp",
359        "SkPath_serial.cpp",
360        "SkPicture.cpp",
361        "SkPictureData.cpp",
362        "SkPictureFlat.cpp",
363        "SkPicturePlayback.cpp",
364        "SkPictureRecord.cpp",
365        "SkPictureRecorder.cpp",
366        "SkPixelRef.cpp",
367        "SkPixmap.cpp",
368        "SkPixmapDraw.cpp",
369        "SkPoint.cpp",
370        "SkPoint3.cpp",
371        "SkPtrRecorder.cpp",
372        "SkQuadClipper.cpp",
373        "SkRRect.cpp",
374        "SkRSXform.cpp",
375        "SkRTree.cpp",
376        "SkRasterClip.cpp",
377        "SkRasterPipeline.cpp",
378        "SkRasterPipelineBlitter.cpp",
379        "SkReadBuffer.cpp",
380        "SkReadPixelsRec.cpp",
381        "SkRecord.cpp",
382        "SkRecordDraw.cpp",
383        "SkRecordOpts.cpp",
384        "SkRecordedDrawable.cpp",
385        "SkRecorder.cpp",
386        "SkRecords.cpp",
387        "SkRect.cpp",
388        "SkRegion.cpp",
389        "SkRegion_path.cpp",
390        "SkResourceCache.cpp",
391        "SkRuntimeBlender.cpp",
392        "SkRuntimeEffect.cpp",
393        "SkSLTypeShared.cpp",
394        "SkScalar.cpp",
395        "SkScalerContext.cpp",
396        "SkScan.cpp",
397        "SkScan_AAAPath.cpp",
398        "SkScan_AntiPath.cpp",
399        "SkScan_Antihair.cpp",
400        "SkScan_Hairline.cpp",
401        "SkScan_Path.cpp",
402        "SkSpecialImage.cpp",
403        "SkSpriteBlitter_ARGB32.cpp",
404        "SkStream.cpp",
405        "SkStrike.cpp",
406        "SkStrikeCache.cpp",
407        "SkStrikeSpec.cpp",
408        "SkString.cpp",
409        "SkStringUtils.cpp",
410        "SkStroke.cpp",
411        "SkStrokeRec.cpp",
412        "SkStrokerPriv.cpp",
413        "SkSwizzle.cpp",
414        "SkSwizzler_opts.cpp",
415        "SkSwizzler_opts_hsw.cpp",
416        "SkSwizzler_opts_lasx.cpp",
417        "SkSwizzler_opts_ssse3.cpp",
418        "SkTaskGroup.cpp",
419        "SkTextBlob.cpp",
420        "SkTypeface.cpp",
421        "SkTypefaceCache.cpp",
422        "SkTypeface_remote.cpp",
423        "SkUnPreMultiply.cpp",
424        "SkVertState.cpp",
425        "SkVertices.cpp",
426        "SkWriteBuffer.cpp",
427        "SkWritePixelsRec.cpp",
428        "SkWriter32.cpp",
429        "SkYUVAInfo.cpp",
430        "SkYUVAPixmaps.cpp",
431        "SkYUVMath.cpp",
432        "SkYUVPlanesCache.cpp",
433    ],
434)
435
436skia_filegroup(
437    name = "textual_hdrs",
438    srcs = ["SkBlitBWMaskTemplate.h"],
439)
440
441# When running skslc or sksl-minify, we don't want to use the compiled-in SkSL sources
442# because that causes a dependency cycle. This flag lets us instead load the sources
443# from disk to break the cycle and affect the files we want.
444bool_flag(
445    name = "load_sksl_from_disk",
446    default = False,
447)
448
449skia_cc_library(
450    name = "core",
451    srcs = [
452        ":core_priv_hdrs",
453        ":core_priv_srcs",
454        ":core_srcs",
455        "//src/effects:core_srcs",
456        "//src/image:image_srcs",
457        "//src/ports:core_srcs",
458        "//src/sfnt:sfnt_srcs",
459        "//src/shaders:core_srcs",
460        "//src/sksl:core_srcs",
461        "//src/sksl/codegen:rasterpipeline_srcs",
462        "//src/text:text_srcs",
463        "//src/utils:core_srcs",
464    ] + select({
465        ":load_sksl_from_disk_true": ["//src/sksl:sksl_skslc_module_srcs"],
466        ":load_sksl_from_disk_false": ["//src/sksl:sksl_default_module_srcs"],
467    }),
468    hdrs = [
469        "//include/codec:core_hdrs",
470        "//include/core:core_hdrs",
471        "//include/effects:core_hdrs",
472        "//include/sksl:core_hdrs",
473        "//include/utils:core_hdrs",
474    ],
475    features = ["layering_check"],
476    local_defines = [
477        "SK_DISABLE_LEGACY_PNG_WRITEBUFFER",
478        "SK_DISABLE_LEGACY_IMAGE_READBUFFER",
479    ],
480    textual_hdrs = [
481        "//src/opts:textual_hdrs",
482        ":textual_hdrs",
483    ],
484    visibility = [
485        "//:__pkg__",
486        "//src:__subpackages__",
487    ],
488    deps = [
489        "//modules/skcms",
490        "//src/base",
491        "//src/opts",
492        "//src/sksl:generated_sksl",
493    ] + select({
494        ":load_sksl_from_disk_true": ["//src/utils:get_executable_path"],
495        ":load_sksl_from_disk_false": [],
496    }),
497)
498
499skia_cc_library(
500    name = "core_priv",
501    srcs = [":core_priv_srcs"],
502    hdrs = [":core_priv_hdrs"],
503    features = ["layering_check"],
504    visibility = [
505        "//bench:__subpackages__",
506        "//experimental/rust_png:__subpackages__",
507        "//gm:__subpackages__",
508        "//modules:__subpackages__",
509        "//src:__subpackages__",
510        "//tests:__subpackages__",
511        "//tools:__subpackages__",
512    ],
513    deps = [
514        ":core",
515        "//modules/skcms",
516        "//src/base",
517    ],
518)
519
520generate_cpp_files_for_headers(
521    name = "headers_to_compile",
522    headers = [
523        # All headers listed here will have a .cpp file generated that is a copy of the header file
524        # just with a .cpp suffix so Bazel will try to compile it.
525        # This allows us to run IWYU on these files.
526        "SkAdvancedTypefaceMetrics.h",
527        "SkColorSpacePriv.h",
528        "SkCoreBlitters.h",
529        "SkDrawProcs.h",
530        "SkMatrixPriv.h",
531        "SkPathPriv.h",
532        "SkPicturePriv.h",
533        "SkRuntimeEffectPriv.h",
534    ],
535)
536