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