load("//:defines.bzl", "DEFAULT_DEFINES", "DEFAULT_LOCAL_DEFINES") load("@skia_user_config//:copts.bzl", "DEFAULT_OBJC_COPTS") load("//bazel:flags.bzl", "selects") load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_cc_library", "skia_objc_library") licenses(["notice"]) exports_files_legacy() # All the mm files from the Skia library are rolled up to this objc library since cc_library # ignores mm files. This private library is then deps'ed into the public and internal versions # of the SKia library below. The Skia library Objective-C code requires ARC, while non-library code # does not. skia_objc_library( name = "skia_objc", srcs = [ "//src:objc_srcs", ], copts = DEFAULT_OBJC_COPTS + ["-fobjc-arc"], defines = DEFAULT_DEFINES, deps = [ "//src:deps", "@skia_user_config//:user_config", ], ) # This target exposes the Skia public API. It is what external clients should use. skia_cc_library( name = "skia_public", srcs = [ "//include:private_hdrs", "//include:srcs", "//src:private_hdrs", "//src:srcs", ], hdrs = ["//include:public_hdrs"], defines = DEFAULT_DEFINES, local_defines = DEFAULT_LOCAL_DEFINES, visibility = ["//visibility:public"], deps = [ "//src:deps", "@skia_user_config//:user_config", ] + select({ "//src/gpu:metal_backend": ["//:skia_objc"], "//conditions:default": [], }), ) # This target exposes headers beyond the public, supported API. It is intended to be # used by Skia's tests and tooling. skia_cc_library( name = "skia_internal", srcs = [ "//include:srcs", "//src:srcs", ], hdrs = [ "//include:private_hdrs", "//include:public_hdrs", "//src:private_hdrs", ], defines = DEFAULT_DEFINES, local_defines = DEFAULT_LOCAL_DEFINES, visibility = [ "//dm:__subpackages__", "//gm:__subpackages__", "//modules:__subpackages__", "//tests:__subpackages__", "//tools:__subpackages__", ], deps = [ "//src:deps", "@skia_user_config//:user_config", ] + select({ "//src/gpu:metal_backend": ["//:skia_objc"], "//conditions:default": [], }), ) #################################################################### # Experimental public buffet targets below alias( name = "core", actual = "//src:core", visibility = ["//visibility:public"], ) alias( name = "pathops", actual = "//src:pathops", visibility = ["//visibility:public"], ) alias( name = "default_malloc", actual = "//src/ports:default_malloc", visibility = ["//visibility:public"], ) alias( name = "default_logging", actual = "//src/ports:default_logging", visibility = ["//visibility:public"], ) # Load bearing comment below - gazelle looks here (and not in any other BUILD.bazel files) # for a special comment indicating the prefix. # gazelle:prefix go.skia.org/skia # This is an alias to avoid having to load the golang toolchain code just to # create the rules in our primary BUILD.bazel file alias( name = "gazelle", actual = "//infra:gazelle", visibility = ["//visibility:public"], ) # Convenience condition that is always true. This condition is satisfied if an arbitrarily chosen # boolean built-in flag (https://bazel.build/docs/user-manual#stamp) is either true or false. # # Inspired by # https://github.com/bazelbuild/bazel-skylib/blob/2f0bb4cec0297bb38f830a72fa8961bee057c3cd/lib/selects.bzl#L227. selects.config_setting_group( name = "always_true", match_any = [ ":always_true_0", ":always_true_1", ], visibility = ["//visibility:public"], ) config_setting( name = "always_true_0", values = {"stamp": "0"}, ) config_setting( name = "always_true_1", values = {"stamp": "1"}, )