6bc4bdf645
This removes the required dependency on our JSON code. In the Bazel rules, this dependency is pushed down into sksl instead of required by the cc_binary rules. It adds a stub version of SkVMDebugTrace.cpp and removes SkVMDebugTracePlayer unless the appropriate GN or Bazel flag is set (skia_enable_sksl_tracing and enable_sksl_tracing, respectively). There was an existing #define that CanvasKit used (CK_INCLUDE_SKSL_TRACE) and this was changed to SKSL_ENABLE_TRACING. Users of //:skia_core no longer need to specify a JSON dep, if sksl needs it (e.g. for tracing), then it will specify the dependency. Change-Id: I2fcd29cde118fc391c269ba2d8f8a40a6f164c99 Bug: skia:12541 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/528837 Reviewed-by: John Stiles <johnstiles@google.com> Commit-Queue: Kevin Lubick <kjlubick@google.com>
220 lines
5.9 KiB
Python
220 lines
5.9 KiB
Python
load(":defs.bzl", "bool_flag", "string_flag_with_values")
|
|
|
|
# https://github.com/bazelbuild/bazel-skylib
|
|
load("@bazel_skylib//lib:selects.bzl", "selects")
|
|
|
|
# @platforms is found at https://github.com/bazelbuild/platforms
|
|
package(default_visibility = ["//:__subpackages__"])
|
|
|
|
config_setting(
|
|
name = "linux_x64",
|
|
constraint_values = [
|
|
"@platforms//cpu:x86_64",
|
|
"@platforms//os:linux",
|
|
],
|
|
)
|
|
|
|
config_setting(
|
|
name = "windows_x64",
|
|
constraint_values = [
|
|
"@platforms//cpu:x86_64",
|
|
"@platforms//os:windows",
|
|
],
|
|
)
|
|
|
|
config_setting(
|
|
name = "linux_arm64",
|
|
constraint_values = [
|
|
"@platforms//cpu:arm64",
|
|
"@platforms//os:linux",
|
|
],
|
|
)
|
|
|
|
config_setting(
|
|
name = "debug_build",
|
|
values = {"compilation_mode": "dbg"},
|
|
)
|
|
|
|
config_setting(
|
|
name = "release_build",
|
|
values = {"compilation_mode": "opt"},
|
|
)
|
|
|
|
constraint_value(
|
|
name = "fuchsia",
|
|
constraint_setting = "@platforms//os:os",
|
|
)
|
|
|
|
config_setting(
|
|
name = "fuchsia_arm64",
|
|
constraint_values = [
|
|
"@platforms//cpu:arm64",
|
|
":fuchsia",
|
|
],
|
|
)
|
|
|
|
# We define this here because the emscripten toolchain calls the cpu wasm, whereas the
|
|
# bazelbuild/platforms call it wasm32. https://github.com/emscripten-core/emsdk/issues/919
|
|
config_setting(
|
|
name = "cpu_wasm",
|
|
values = {
|
|
"cpu": "wasm",
|
|
},
|
|
)
|
|
|
|
selects.config_setting_group(
|
|
name = "has_gpu_backend",
|
|
match_any = [
|
|
":gl_backend",
|
|
":dawn_backend",
|
|
":vulkan_backend",
|
|
],
|
|
)
|
|
|
|
selects.config_setting_group(
|
|
name = "vulkan_with_vma",
|
|
match_all = [
|
|
":vulkan_backend",
|
|
":use_vulkan_memory_allocator_true",
|
|
],
|
|
)
|
|
|
|
# =============================================================================
|
|
# Configurable Skia Features
|
|
# =============================================================================
|
|
# These are flags that we can specify when invoking bazel build to turn on and
|
|
# off certain features, such as GPU backend, or codec support.
|
|
# https://docs.bazel.build/versions/4.2.1/skylark/config.html#using-build-settings-on-the-command-line
|
|
# For example, to use the GL backend with the WebGL flavor, one would run
|
|
# bazel build //:skia-core --//bazel/common_config_settings:gpu_backend=gl_backend \
|
|
# --//bazel/common_config_settings:with_gl_standard=webgl_standard
|
|
# This is a bit wordy, so we define aliases in the //.bazelrc file that condense this to
|
|
# bazel build //:skia-core --gpu_backend=gl_backend --with_gl_standard=webgl_standard
|
|
#
|
|
# Developers can specify their own short-hands by making a .bazelrc file in their home
|
|
# directory. https://docs.bazel.build/versions/main/guide.html#where-are-the-bazelrc-files
|
|
#
|
|
|
|
string_flag_with_values(
|
|
flag_name = "gpu_backend",
|
|
multiple = True,
|
|
values = [
|
|
"gl_backend",
|
|
"vulkan_backend",
|
|
"dawn_backend",
|
|
],
|
|
)
|
|
|
|
string_flag_with_values(
|
|
flag_name = "with_gl_standard",
|
|
values = [
|
|
"gles_standard",
|
|
"gl_standard",
|
|
"webgl_standard",
|
|
],
|
|
)
|
|
|
|
string_flag_with_values(
|
|
default = "empty_fontmgr_factory",
|
|
flag_name = "fontmgr_factory",
|
|
values = [
|
|
# Makes the default SkFontMgr load fonts from a hard-coded directory on disk.
|
|
"custom_directory_fontmgr_factory",
|
|
# Makes the default SkFontMgr load fonts from an SkEmbeddedResource that has been compiled
|
|
# into the binary, e.g. with //tools/embed_resources.py
|
|
"custom_embedded_fontmgr_factory",
|
|
# Makes the default SkFontMgr return empty fonts (e.g. SkTypeface_Empty). This is typically
|
|
# used when someone wants to make their own custom SkFontMgr objects, but does not want the
|
|
# default SkFontMgr to do anything (e.g. force usage of the custom one).
|
|
"custom_empty_fontmgr_factory",
|
|
# Makes the default SkFontMgr return null. Typically used when font support is not desired.
|
|
"empty_fontmgr_factory",
|
|
],
|
|
)
|
|
|
|
# These flags need only be set if additional functionality beyond the fontmgr_factory flag is
|
|
# required. For example, the setting fontmgr_factory to custom_embedded_fontmgr_factory does not
|
|
# require setting include_fontmgr to custom_embedded_fontmgr, because those sources and settings
|
|
# will already be compiled in due to the _factory flag.
|
|
string_flag_with_values(
|
|
flag_name = "include_fontmgr",
|
|
multiple = True,
|
|
values = [
|
|
# Allows the construction of an SkFontMgr that loads files from a programmatically
|
|
# defined directory on disk.
|
|
"custom_directory_fontmgr",
|
|
# Allows the construction of an SkFontMgr which can load fonts from an SkEmbeddedResource
|
|
# or from another source of raw bytes.
|
|
"custom_embedded_fontmgr",
|
|
# Allows the construction of an SkFontMgr which returns empty fonts.
|
|
"custom_empty_fontmgr",
|
|
],
|
|
)
|
|
|
|
string_flag_with_values(
|
|
flag_name = "include_decoder",
|
|
multiple = True,
|
|
values = [
|
|
"gif_decode_codec",
|
|
"jpeg_decode_codec",
|
|
"png_decode_codec",
|
|
"raw_decode_codec",
|
|
"webp_decode_codec",
|
|
],
|
|
)
|
|
|
|
string_flag_with_values(
|
|
flag_name = "include_encoder",
|
|
multiple = True,
|
|
values = [
|
|
"jpeg_encode_codec",
|
|
"png_encode_codec",
|
|
"webp_encode_codec",
|
|
],
|
|
)
|
|
|
|
string_flag_with_values(
|
|
flag_name = "shaper_backend",
|
|
multiple = True,
|
|
values = [
|
|
"harfbuzz_shaper",
|
|
"coretext_shaper",
|
|
],
|
|
)
|
|
|
|
bool_flag(
|
|
default = False,
|
|
flag_name = "use_icu",
|
|
)
|
|
|
|
bool_flag(
|
|
default = False,
|
|
flag_name = "disable_tracing",
|
|
)
|
|
|
|
bool_flag(
|
|
default = False,
|
|
flag_name = "disable_effect_serialization",
|
|
)
|
|
|
|
bool_flag(
|
|
default = False,
|
|
flag_name = "enable_skslc",
|
|
)
|
|
|
|
bool_flag(
|
|
default = False,
|
|
flag_name = "enable_sksl_tracing",
|
|
)
|
|
|
|
bool_flag(
|
|
default = False,
|
|
flag_name = "is_skia_dev_build",
|
|
)
|
|
|
|
bool_flag(
|
|
default = True,
|
|
flag_name = "use_vulkan_memory_allocator",
|
|
public = False, # Users should use :vulkan_with_vma
|
|
)
|