load("//bazel:macros.bzl", "selects")
load(":defs.bzl", "bool_flag", "string_flag_with_values")

licenses(["notice"])

# @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",
    ],
)

# Apple devices with intel processors released before the shift to the M1 chip
# will use this config setting. Because M1 chips use the arm cpu instruction set,
# this flag will not be used.
config_setting(
    name = "mac_x64",
    constraint_values = [
        "@platforms//cpu:x86_64",
        "@platforms//os:macos",
    ],
)

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 = "needs_sksl",
    match_any = [
        ":has_gpu_backend",
        ":enable_sksl_true",
    ],
)

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 = True,
    flag_name = "enable_effect_serialization",
)

bool_flag(
    default = False,
    flag_name = "enable_sksl",
)

bool_flag(
    default = False,
    flag_name = "enable_skslc",
)

bool_flag(
    default = False,
    flag_name = "enable_sksl_tracing",
)

bool_flag(
    # See SkTraceEventCommon.h for more on this type of tracing.
    default = True,
    flag_name = "enable_tracing",
)

bool_flag(
    default = False,
    flag_name = "enable_svg_canvas",
)

bool_flag(
    default = False,
    flag_name = "is_skia_dev_build",
)

bool_flag(
    default = False,
    flag_name = "use_icu",
)

bool_flag(
    default = True,
    flag_name = "use_vulkan_memory_allocator",
    public = False,  # Users should use :vulkan_with_vma
)
