load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_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_freetype", "@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", ], ) 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", ], ) 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_freetype"], "@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_freetype"], "@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_writer", ] + select({ "@platforms//os:linux": ["@skia//:fontmgr_fontconfig_freetype"], "@platforms//os:macos": ["@skia//:fontmgr_coretext"], "//conditions:default": [], }), )