load("//bazel:flags.bzl", "bool_flag", "selects", "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.
config_setting(
    name = "mac_x64",
    constraint_values = [
        "@platforms//cpu:x86_64",
        "@platforms//os:macos",
    ],
)

# M1 Macs (and later) will use this setting.
config_setting(
    name = "mac_arm64",
    constraint_values = [
        "@platforms//cpu:arm64",
        "@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 = "fast_build",
    values = {"compilation_mode": "fastbuild"},
)

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 = "release_build_mac",
    match_all = [
        "@platforms//os:macos",
        ":release_build",
    ],
    visibility = ["//:__subpackages__"],
)

selects.config_setting_group(
    name = "release_build_linux",
    match_all = [
        "@platforms//os:linux",
        ":release_build",
    ],
    visibility = ["//:__subpackages__"],
)

selects.config_setting_group(
    name = "fast_build_mac",
    match_all = [
        "@platforms//os:macos",
        ":fast_build",
    ],
    visibility = ["//:__subpackages__"],
)

selects.config_setting_group(
    name = "fast_build_linux",
    match_all = [
        "@platforms//os:linux",
        ":fast_build",
    ],
    visibility = ["//:__subpackages__"],
)

# =============================================================================
#                     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://bazel.build/rules/config#defining-build-settings
# For example, to enable harfbuzz and icu, one would run
# bazel build //:skia-core --//bazel/common_config_settings:use_harfbuzz \
#             --//bazel/common_config_settings:use_icu
# This is a bit wordy, so we define aliases in the //.bazelrc file that condense this to
# bazel build //:skia-core --with_harfbuzz --with_icu
#
# Developers can specify their own short-hands by making a .bazelrc file in their home
# directory. https://bazel.build/docs/bazelrc#bazelrc-file-locations
#
# We check in some Bazel configs for "blessed builds" in //bazel/buildrc.
#
# We can also define flags closer to where they have the most impact. For example
# //src/pdf:enable_pdf_backend.

string_flag_with_values(
    name = "fontmgr_factory",
    default = "empty_fontmgr_factory",
    values = [
        "android_fontmgr_factory",
        # 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",
        "fontconfig_fontmgr_factory",
        # Deprecated, do not use.
        "fci_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(
    name = "include_fontmgr",
    multiple = True,
    values = [
        "android_fontmgr",
        # 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",
        "fontconfig_fontmgr",
        # Deprecated, do not use.
        "fci_fontmgr",
    ],
)

bool_flag(
    # This is necessary because Bazel provides no way to compile header files on their own
    name = "compile_generated_cpp_files_for_headers",
    default = False,
)

bool_flag(
    name = "enable_effect_serialization",
    default = True,
)

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

bool_flag(
    name = "use_harfbuzz",
    default = False,
)

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

# These are some helpers to mean "either the fontmgr was enabled or its factory was"

selects.config_setting_group(
    name = "uses_android_fontmgr",
    match_any = [
        ":android_fontmgr",
        ":android_fontmgr_factory",
    ],
)

selects.config_setting_group(
    name = "uses_custom_directory_fontmgr",
    match_any = [
        ":custom_directory_fontmgr",
        ":custom_directory_fontmgr_factory",
    ],
)

selects.config_setting_group(
    name = "uses_custom_embedded_fontmgr",
    match_any = [
        ":custom_embedded_fontmgr",
        ":custom_embedded_fontmgr_factory",
    ],
)

selects.config_setting_group(
    name = "uses_custom_empty_fontmgr",
    match_any = [
        ":custom_empty_fontmgr",
        ":custom_empty_fontmgr_factory",
    ],
)

selects.config_setting_group(
    name = "uses_fontconfig_fontmgr",
    match_any = [
        ":fontconfig_fontmgr",
        ":fontconfig_fontmgr_factory",
    ],
)

selects.config_setting_group(
    name = "uses_fci_fontmgr",
    match_any = [
        ":fci_fontmgr",
        ":fci_fontmgr_factory",
    ],
)
