blob: dc32964c465f46fdde182e62482b011bccb74e62 [file] [log] [blame]
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
load("@rules_cc//cc:objc_library.bzl", "objc_library")
# This first example only needs the core Skia functionality and the pathops
# module. Thus, the client defines a cc_library (skia_core_and_pathops) with
# those components and then depending on that library.
cc_binary(
name = "path_combiner",
srcs = ["src/path_main.cpp"],
linkopts = [
"-fuse-ld=lld",
"-lpthread",
],
deps = [":skia_core_and_pathops"],
)
cc_library(
name = "skia_core_and_pathops",
deps = [
"@skia//:core",
"@skia//:pathops",
],
)
cc_binary(
name = "png_decoder",
srcs = ["src/decode_png_main.cpp"],
linkopts = [
"-fuse-ld=lld",
"-lpthread",
],
deps = [
"@skia//:core",
"@skia//:png_decode_codec",
],
)
cc_binary(
name = "decode_everything",
srcs = ["src/decode_everything.cpp"],
linkopts = select({
"@platforms//os:linux": [
"-fuse-ld=lld",
"-lpthread",
],
"//conditions:default": [],
}),
deps = [
"@skia//:bmp_decode_codec",
"@skia//:core",
"@skia//:gif_decode_codec",
"@skia//:ico_decode_codec",
"@skia//:jpeg_decode_codec",
"@skia//:jpegxl_decode_codec",
"@skia//:png_decode_codec",
"@skia//:wbmp_decode_codec",
"@skia//:webp_decode_codec",
],
)
cc_binary(
name = "write_text_to_png",
srcs = ["src/write_text_to_png.cpp"],
linkopts = [
"-fuse-ld=lld",
"-lpthread",
],
deps = [
"@skia//:core",
"@skia//:png_encode_codec",
] + select({
"@platforms//os:linux": [
"@skia//:fontmgr_fontconfig",
"@skia//:freetype_support",
],
"@platforms//os:macos": ["@skia//:fontmgr_coretext"],
"//conditions:default": ["@skia//:fontmgr_empty_freetype"],
}),
)
cc_binary(
name = "shape_text",
srcs = ["src/shape_text.cpp"],
linkopts = [
"-fuse-ld=lld",
"-lpthread",
],
deps = [
"@skia//:core",
"@skia//:fontmgr_empty_freetype",
"@skia//:jpeg_encode_codec",
"@skia//:skparagraph_harfbuzz_skunicode",
"@skia//:skunicode_icu",
],
)
cc_binary(
name = "use_ganesh_gl",
srcs = ["src/ganesh_gl.cpp"],
linkopts = [
] + select(
{
"@platforms//os:windows": [],
"//conditions:default": [
"-lpthread",
],
},
) + select(
{
"@platforms//os:linux": [
"-lGL",
"-lX11",
],
"@platforms//os:windows": [
"-lgdi32",
"-lOpenGL32",
"-luser32",
],
"//conditions:default": [],
},
),
deps = [
"@skia//:core",
"@skia//:ganesh_gl",
"@skia//:webp_encode_codec",
] + select({
"@platforms//os:linux": ["@skia//:ganesh_glx_factory"],
"@platforms//os:macos": [
":gl_context_helper",
"@skia//:ganesh_gl_mac_factory",
],
"@platforms//os:windows": [
"@skia//:ganesh_gl_win_factory",
],
"//conditions:default": ["@platforms//:incompatible"],
}),
)
objc_library(
name = "gl_context_helper",
srcs = ["src/gl_context_helper.mm"],
hdrs = ["src/gl_context_helper.h"],
copts = ["-DGL_SILENCE_DEPRECATION"],
includes = ["src"],
sdk_frameworks = [
"OpenGL",
],
target_compatible_with = select({
"@platforms//os:macos": [],
"@platforms//os:ios": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
)
cc_binary(
name = "use_ganesh_vulkan",
srcs = ["src/ganesh_vulkan.cpp"],
linkopts = [
"-lpthread",
],
deps = [
"@skia//:core",
"@skia//:ganesh_vulkan",
],
)
cc_binary(
name = "use_ganesh_metal",
srcs = ["src/ganesh_metal.cpp"],
target_compatible_with = select({
"@platforms//os:macos": [],
"@platforms//os:ios": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
deps = [
":ganesh_metal_context_helper",
"@skia//:core",
"@skia//:ganesh_metal",
"@skia//:jpeg_encode_codec",
],
)
objc_library(
name = "ganesh_metal_context_helper",
srcs = ["src/ganesh_metal_context_helper.mm"],
hdrs = ["src/ganesh_metal_context_helper.h"],
includes = ["src"],
sdk_frameworks = [
# Without MetalKit added as a dependency, `[*device newCommandQueue]` fails
"MetalKit",
"Metal",
],
target_compatible_with = select({
"@platforms//os:macos": [],
"@platforms//os:ios": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
deps = [
"@skia//:core",
"@skia//:ganesh_metal",
],
)
cc_binary(
name = "use_graphite_native_metal",
srcs = ["src/graphite_native_metal.cpp"],
target_compatible_with = select({
"@platforms//os:macos": [],
"@platforms//os:ios": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
deps = [
":graphite_metal_context_helper",
"@skia//:core",
"@skia//:graphite_native_metal",
"@skia//:jpeg_encode_codec",
],
)
cc_binary(
name = "use_graphite_metal_capture",
srcs = ["src/graphite_metal_capture.cpp"],
target_compatible_with = select({
"@platforms//os:macos": [],
"@platforms//os:ios": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
deps = [
":graphite_metal_context_helper",
"@skia//:core",
"@skia//:graphite_native_metal",
"@skia//:jpeg_encode_codec",
],
)
objc_library(
name = "graphite_metal_context_helper",
srcs = ["src/graphite_metal_context_helper.mm"],
hdrs = ["src/graphite_metal_context_helper.h"],
includes = ["src"],
sdk_frameworks = [
# Without MetalKit added as a dependency, `[*device newCommandQueue]` fails
"MetalKit",
"Metal",
],
target_compatible_with = select({
"@platforms//os:macos": [],
"@platforms//os:ios": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
deps = [
"@skia//:core",
"@skia//:graphite_native_metal",
],
)
cc_binary(
name = "use_graphite_native_vulkan",
srcs = ["src/graphite_native_vulkan.cpp"],
linkopts = [
"-lpthread",
],
deps = [
"@skia//:core",
"@skia//:graphite_native_vulkan",
"@vulkan_headers",
],
)
cc_binary(
name = "use_skresources",
srcs = ["src/use_skresources.cpp"],
linkopts = [
"-lpthread",
],
deps = [
"@skia//:core",
"@skia//:jpeg_decode_codec",
"@skia//:png_decode_codec",
"@skia//:skresources",
],
)
cc_binary(
name = "svg_with_primitive",
srcs = ["src/svg_renderer.cpp"],
linkopts = [
"-lpthread",
],
deps = [
"@skia//:core",
"@skia//:png_encode_codec",
"@skia//:skshaper_core",
"@skia//:svg_renderer",
] + select({
"@platforms//os:linux": [
"@skia//:fontmgr_fontconfig",
"@skia//:freetype_support",
],
"@platforms//os:macos": ["@skia//:fontmgr_coretext"],
"//conditions:default": [],
}),
)
cc_binary(
name = "svg_with_harfbuzz",
srcs = ["src/svg_renderer.cpp"],
linkopts = [
"-lpthread",
],
deps = [
"@skia//:core",
"@skia//:png_encode_codec",
"@skia//:skshaper_harfbuzz",
"@skia//:skshaper_unicode",
"@skia//:skunicode_icu",
"@skia//:svg_renderer",
] + select({
"@platforms//os:linux": [
"@skia//:fontmgr_fontconfig",
"@skia//:freetype_support",
],
"@platforms//os:macos": ["@skia//:fontmgr_coretext"],
"//conditions:default": [],
}),
)
cc_binary(
name = "write_to_pdf",
srcs = ["src/write_to_pdf.cpp"],
linkopts = [
"-lpthread",
],
deps = [
"@skia//:core",
"@skia//:pdf_jpeg_helpers",
"@skia//:pdf_writer",
] + select({
"@platforms//os:linux": [
"@skia//:fontmgr_fontconfig",
"@skia//:freetype_support",
],
"@platforms//os:macos": ["@skia//:fontmgr_coretext"],
"//conditions:default": [],
}),
)
cc_binary(
name = "play_skottie",
srcs = ["src/play_skottie.cpp"],
linkopts = [
"-lpthread",
],
deps = [
"@skia//:core",
"@skia//:png_encode_codec",
"@skia//:skottie",
],
)