blob: 70eb45c22c5f236cc57c4e644e1acaf134932d41 [file] [log] [blame]
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"},
)