blob: c4ff7d6402d4957baaab08f3de84d386eede15b0 [file] [log] [blame]
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",
"SkHdrAgtmPriv.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",
"SkHdrAgtm.cpp",
"SkHdrAgtmParse.cpp",
"SkHdrMetadata.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 = [
"//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"],
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",
],
)
skia_filegroup(
name = "rust_png_srcs",
srcs = [
"SkPngRustCodec.cpp",
"SkPngRustCodec.h",
"SkPngRustDecoder.cpp",
],
)
skia_cc_library(
name = "rust_png_decoder",
srcs = [":rust_png_srcs"],
hdrs = ["//include/codec:rust_png_public_hdrs"],
defines = ["SK_CODEC_DECODES_PNG_WITH_RUST"],
features = ["layering_check"],
visibility = ["//:__pkg__"],
deps = [
":any_decoder",
":png_codec_base",
"//:core",
"//modules/skcms",
"//rust/common:ffi_utils",
"//rust/png:cxx_bridge",
"//rust/png:ffi_cpp",
"//src/base",
"//src/core:core_priv",
"@crates//:cxx_cc",
],
)
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",
],
)