load( "//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_cc_library", "skia_filegroup", "split_srcs_and_hdrs", ) package( default_applicable_licenses = ["//:license"], ) licenses(["notice"]) PRIVATE_CODEC_HEADERS = [ "SkCodecPriv.h", "SkColorPalette.h", "SkFrameHolder.h", "SkMaskSwizzler.h", "SkParseEncodedOrigin.h", "SkSampler.h", "SkScalingCodec.h", "SkSwizzler.h", "SkPixmapUtilsPriv.h", ] ANY_DECODER_HDRS = ["SkCodecImageGenerator.h"] ANY_DECODER_SRCS = [ "SkCodec.cpp", "SkCodecImageGenerator.cpp", "SkColorPalette.cpp", "SkEncodedInfo.cpp", "SkExif.cpp", "SkGainmapInfo.cpp", "SkImageGenerator_FromEncoded.cpp", "SkMaskSwizzler.cpp", "SkParseEncodedOrigin.cpp", "SkPixmapUtils.cpp", "SkSampler.cpp", "SkSwizzler.cpp", "SkTiffUtility.cpp", "SkTiffUtility.h", ] # We put any file that is used by more than one codec here to avoid potential issues if clients # depend on multiple codecs. This is not a problem for a statically linked binary, but could maybe # cause issues with producing a shared library (e.g. duplicate symbols showing up). skia_cc_library( name = "any_decoder", srcs = ANY_DECODER_SRCS + ["//include/codec:any_codec_hdrs"], hdrs = PRIVATE_CODEC_HEADERS + ANY_DECODER_HDRS + ["//include/private:decode_srcs"], features = ["layering_check"], local_defines = ["SK_DISABLE_LEGACY_INIT_DECODERS"], visibility = [ "//experimental/rust_png:__subpackages__", "//src/encode:__pkg__", "//src/pdf:__pkg__", "//src/ports:__pkg__", ], deps = [ "//modules/skcms", "//src/base", "//src/core", "//src/core:core_priv", ], ) skia_cc_library( name = "codec_support", # This is its own rule (with no srcs) to explicitly expose any_codec_hdrs # as public in case a client does not want to use any of our codecs, but # still register their own and/or make use of SkImage::DeferredFromEncodedData hdrs = [ "//include/codec:any_codec_hdrs", ], visibility = [ "//:__pkg__", ], deps = [ ":any_decoder", ], ) skia_cc_library( name = "codec_support_priv", hdrs = [ "//include/codec:any_codec_hdrs", "//include/private:decode_srcs", ] + ANY_DECODER_HDRS + PRIVATE_CODEC_HEADERS, visibility = [ "//modules/skottie:__pkg__", "//modules/skottie/src:__pkg__", "//modules/skresources:__pkg__", "//src/android:__pkg__", "//src/pdf:__pkg__", "//tools/ganesh:__pkg__", ], deps = [ ":any_decoder", ], ) ANDROID_CODEC_HDRS = ["SkAndroidCodecAdapter.h"] ANDROID_CODEC_SRCS = [ "SkAndroidCodec.cpp", "SkAndroidCodecAdapter.cpp", "SkSampledCodec.cpp", "SkSampledCodec.h", ] skia_cc_library( name = "android_codec", srcs = ANDROID_CODEC_SRCS, hdrs = ANDROID_CODEC_HDRS + [ "//include/codec:android_public_hdrs", "//include/codec:any_codec_hdrs", ], features = ["layering_check"], visibility = ["//:__subpackages__"], deps = [ ":any_decoder", "//modules/skcms", "//src/base", "//src/core", "//src/core:core_priv", ], ) BMP_DECODE_HDRS = [ "SkBmpBaseCodec.h", "SkBmpCodec.h", "SkBmpMaskCodec.h", "SkBmpRLECodec.h", "SkBmpStandardCodec.h", ] BMP_DECODE_SRCS = [ "SkBmpBaseCodec.cpp", "SkBmpCodec.cpp", "SkBmpMaskCodec.cpp", "SkBmpRLECodec.cpp", "SkBmpStandardCodec.cpp", ] skia_cc_library( name = "bmp_decode", srcs = BMP_DECODE_SRCS, hdrs = BMP_DECODE_HDRS + [ "//include/codec:any_codec_hdrs", "//include/codec:bmp_public_hdrs", ], defines = ["SK_CODEC_DECODES_BMP"], features = ["layering_check"], visibility = ["//:__subpackages__"], deps = [ ":any_decoder", "//modules/skcms", "//src/base", "//src/core", "//src/core:core_priv", ], ) GIF_DECODE_SRCS = ["SkWuffsCodec.cpp"] skia_cc_library( name = "gif_decode", srcs = GIF_DECODE_SRCS, hdrs = [ "//include/codec:any_codec_hdrs", "//include/codec:gif_public_hdrs", ], defines = ["SK_CODEC_DECODES_GIF"], features = ["layering_check"], visibility = ["//:__subpackages__"], deps = [ ":any_decoder", "//modules/skcms", "//src/base", "//src/core", "//src/core:core_priv", "@wuffs", ], ) ICO_DECODE_HDRS = ["SkIcoCodec.h"] ICO_DECODE_SRCS = [ "SkBmpCodec.h", "SkIcoCodec.cpp", ] skia_cc_library( name = "ico_decode", srcs = ICO_DECODE_SRCS, hdrs = ICO_DECODE_HDRS + [ "//include/codec:any_codec_hdrs", "//include/codec:ico_public_hdrs", ], defines = ["SK_CODEC_DECODES_ICO"], features = ["layering_check"], visibility = ["//:__subpackages__"], deps = [ "//src/base", "//src/core", "//src/core:core_priv", "//modules/skcms", ":any_decoder", # icos can be either PNG or BMP ":bmp_decode", ":png_decode", ], ) COMMON_JPEG_HDRS = [ "SkJpegConstants.h", "SkJpegPriv.h", ] skia_filegroup( name = "common_jpeg_srcs", srcs = COMMON_JPEG_HDRS, visibility = ["//src/encode:__pkg__"], ) JPEG_DECODE_HDRS = [ "SkJpegCodec.h", "SkJpegDecoderMgr.h", "SkJpegMetadataDecoderImpl.h", "SkJpegSourceMgr.h", "SkJpegUtility.h", ] JPEG_DECODE_SRCS = [ "SkJpegCodec.cpp", "SkJpegDecoderMgr.cpp", "SkJpegMetadataDecoderImpl.cpp", "SkJpegSourceMgr.cpp", "SkJpegUtility.cpp", ":common_jpeg_srcs", "//include/private:jpeg_decode_srcs", ] skia_cc_library( name = "jpeg_decode", srcs = JPEG_DECODE_SRCS, hdrs = JPEG_DECODE_HDRS + [ "//include/codec:any_codec_hdrs", "//include/codec:jpeg_public_hdrs", ], defines = ["SK_CODEC_DECODES_JPEG"], features = ["layering_check"], visibility = ["//:__subpackages__"], deps = [ ":any_decoder", "//modules/skcms", "//src/base", "//src/core", "//src/core:core_priv", "@libjpeg_turbo", ], ) JPEGXL_DECODE_HDRS = ["SkJpegxlCodec.h"] JPEGXL_DECODE_SRCS = [ "SkJpegxlCodec.cpp", ] skia_cc_library( name = "jpegxl_decode", srcs = JPEGXL_DECODE_SRCS + COMMON_JPEG_HDRS, hdrs = JPEGXL_DECODE_HDRS + [ "//include/codec:any_codec_hdrs", "//include/codec:jpegxl_public_hdrs", ], defines = ["SK_CODEC_DECODES_JPEGXL"], features = ["layering_check"], visibility = ["//:__subpackages__"], deps = [ ":any_decoder", "//modules/skcms", "//src/base", "//src/core", "//src/core:core_priv", "@libjxl", ], ) PNG_CODEC_BASE_SRCS = ["SkPngCodecBase.cpp"] PNG_CODEC_BASE_HDRS = ["SkPngCodecBase.h"] skia_filegroup( name = "png_codec_base_srcs", srcs = PNG_CODEC_BASE_SRCS, ) skia_filegroup( name = "png_codec_base_hdrs", srcs = PNG_CODEC_BASE_HDRS, ) skia_cc_library( name = "png_codec_base", srcs = [":png_codec_base_srcs"], hdrs = PNG_CODEC_BASE_HDRS + [ "//include/codec:any_codec_hdrs", ], features = ["layering_check"], visibility = ["//experimental/rust_png/decoder:__pkg__"], deps = [ ":any_decoder", "//modules/skcms", "//src/base", "//src/core", "//src/core:core_priv", ], ) BUFFET_LIBPNG_HDRS = [ "SkPngCodec.h", "SkPngCompositeChunkReader.h", ] BUFFET_LIBPNG_SRCS = [ "SkPngCodec.cpp", "SkPngCompositeChunkReader.cpp", ] skia_filegroup( name = "buffet_libpng_srcs", srcs = BUFFET_LIBPNG_SRCS + BUFFET_LIBPNG_HDRS, ) COMMON_LIBPNG_HDRS = ["SkPngPriv.h"] skia_filegroup( name = "common_libpng_srcs", srcs = COMMON_LIBPNG_HDRS, visibility = ["//src/encode:__pkg__"], ) skia_cc_library( name = "png_decode", srcs = [ ":buffet_libpng_srcs", ":common_libpng_srcs", ], hdrs = [ "//include/codec:any_codec_hdrs", "//include/codec:png_public_hdrs", ], defines = [ "SK_CODEC_DECODES_PNG", "SK_CODEC_DECODES_PNG_WITH_LIBPNG", ], features = ["layering_check"], visibility = ["//:__subpackages__"], deps = [ ":any_decoder", ":png_codec_base", "//modules/skcms", "//src/base", "//src/core", "//src/core:core_priv", "@libpng", ], ) WBMP_DECODE_HDRS = ["SkWbmpCodec.h"] WBMP_DECODE_SRCS = [ "SkBmpBaseCodec.h", "SkBmpCodec.h", "SkBmpMaskCodec.h", "SkBmpRLECodec.h", "SkBmpStandardCodec.h", "SkWbmpCodec.cpp", "//include/codec:bmp_public_hdrs", ] skia_cc_library( name = "wbmp_decode", srcs = WBMP_DECODE_SRCS, hdrs = WBMP_DECODE_HDRS + [ "//include/codec:any_codec_hdrs", "//include/codec:wbmp_public_hdrs", ], defines = ["SK_CODEC_DECODES_WBMP"], features = ["layering_check"], visibility = ["//:__subpackages__"], deps = [ ":any_decoder", ":bmp_decode", # Avoid ODR violations by not duplicating .cpp files "//modules/skcms", "//src/base", "//src/core", "//src/core:core_priv", ], ) WEBP_DECODE_HDRS = ["SkWebpCodec.h"] WEBP_DECODE_SRCS = ["SkWebpCodec.cpp"] skia_cc_library( name = "webp_decode", srcs = WEBP_DECODE_SRCS, hdrs = WEBP_DECODE_HDRS + [ "//include/codec:any_codec_hdrs", "//include/codec:webp_public_hdrs", ], defines = ["SK_CODEC_DECODES_WEBP"], features = ["layering_check"], visibility = ["//:__subpackages__"], deps = [ ":any_decoder", "//modules/skcms", "//src/base", "//src/core", "//src/core:core_priv", "@libwebp", ], ) # The following are not yet incorporated into the Bazel build skia_filegroup( name = "xmp_srcs", srcs = [ "SkXmp.cpp", ], ) split_srcs_and_hdrs( name = "jpeg_xmp", files = [ "SkJpegXmp.cpp", "SkJpegXmp.h", ], ) generate_cpp_files_for_headers( name = "headers_to_compile", headers = PRIVATE_CODEC_HEADERS + ANY_DECODER_HDRS + ANDROID_CODEC_HDRS + BMP_DECODE_HDRS + ICO_DECODE_HDRS + COMMON_JPEG_HDRS + JPEG_DECODE_HDRS + JPEGXL_DECODE_HDRS + PNG_CODEC_BASE_HDRS + BUFFET_LIBPNG_HDRS + COMMON_LIBPNG_HDRS + WBMP_DECODE_HDRS + WEBP_DECODE_HDRS + [ "SkAvifCodec.h", "SkCrabbyAvifCodec.h", "SkJpegMultiPicture.h", "SkJpegSegmentScan.h", "SkRawCodec.h", ], )