load("@fbsource//tools/build_defs:fb_native_wrapper.bzl", "fb_native")

oncall("executorch")

# BUCK2 does not require user-defined configurations to set config_setting
# executorch-max-kernel-num-64 could be utilized by Executorch user apps to define the macro MAX_KERNEL_NUM=64
# MAX_KERNEL_NUM macro specifies the max number of kernels that can be registered in Executorch.

fb_native.config_setting(
    name = "executorch-max-kernel-num-64",
    constraint_values = [
        ":max-kernel-num-64",
    ],
    visibility = ["PUBLIC"],
)

fb_native.config_setting(
    name = "executorch-max-kernel-num-128",
    constraint_values = [
        ":max-kernel-num-128",
    ],
    visibility = ["PUBLIC"],
)

fb_native.config_setting(
    name = "executorch-max-kernel-num-256",
    constraint_values = [
        ":max-kernel-num-256",
    ],
    visibility = ["PUBLIC"],
)

fb_native.constraint_setting(
    name = "executorch-max-kernel-num",
    visibility = ["PUBLIC"],
)

fb_native.constraint_value(
    name = "max-kernel-num-64",
    constraint_setting = ":executorch-max-kernel-num",
    visibility = ["PUBLIC"],
)

fb_native.constraint_value(
    name = "max-kernel-num-128",
    constraint_setting = ":executorch-max-kernel-num",
    visibility = ["PUBLIC"],
)

fb_native.constraint_value(
    name = "max-kernel-num-256",
    constraint_setting = ":executorch-max-kernel-num",
    visibility = ["PUBLIC"],
)
fb_native.constraint_setting(
    name = "executorch-event-tracer"
)

fb_native.constraint_value(
    name = "event-tracer-enabled",
    constraint_setting = ":executorch-event-tracer",
    visibility = ["PUBLIC"],
)

# Enables the Ethos-U delegate's dedicated persistent region (Vela region 5)
# for delegate-owned streaming state. Off by default so flash-constrained
# images that never run stateful models do not carry the code.
fb_native.constraint_setting(
    name = "executorch-ethosu-persistent-region",
)

fb_native.constraint_value(
    name = "ethosu-persistent-region-enabled",
    constraint_setting = ":executorch-ethosu-persistent-region",
    visibility = ["PUBLIC"],
)

fb_native.config_setting(
    name = "executorch-lto-enabled",
    values = {
        "executorch.enable_lto": "true",
    },
    visibility = ["PUBLIC"],
)

fb_native.config_setting(
    name = "executorch-program-verification-disabled",
    constraint_values = [
        ":program-verification-disabled",
    ],
    visibility = ["PUBLIC"],
)

fb_native.constraint_setting(
    name = "executorch-program-verification",
    visibility = ["PUBLIC"],
)

fb_native.constraint_value(
    name = "program-verification-disabled",
    constraint_setting = ":executorch-program-verification",
    visibility = ["PUBLIC"],
)

fb_native.config_setting(
    name = "executorch-builtin-function-name-disabled",
    constraint_values = [
        ":builtin-function-name-disabled",
    ],
    visibility = ["PUBLIC"],
)

fb_native.constraint_setting(
    name = "executorch-builtin-function-name",
    visibility = ["PUBLIC"],
)

fb_native.constraint_value(
    name = "builtin-function-name-disabled",
    constraint_setting = ":executorch-builtin-function-name",
    visibility = ["PUBLIC"],
)

fb_native.config_setting(
    name = "executorch-et-log-disabled",
    constraint_values = [
        ":et-log-disabled",
    ],
    visibility = ["PUBLIC"],
)

fb_native.constraint_setting(
    name = "executorch-et-log",
    visibility = ["PUBLIC"],
)

fb_native.constraint_value(
    name = "et-log-disabled",
    constraint_setting = ":executorch-et-log",
    visibility = ["PUBLIC"],
)
