| 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_log_tester", | |
| srcs = ["src/log_tester.cpp"], | |
| target_compatible_with = select({ | |
| "@platforms//os:macos": [], | |
| "@platforms//os:ios": [], | |
| "//conditions:default": ["@platforms//:incompatible"], | |
| }), | |
| deps = [ | |
| "@skia//:core", | |
| ], | |
| ) | |
| 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", | |
| ], | |
| ) |