# Copyright 2019 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# Main IREE build file.

package(
    default_visibility = ["//visibility:public"],
    features = ["layering_check"],
    licenses = ["notice"],  # Apache 2.0
)

# Enables the debug service and other profiling features.
# $ bazel build --define=IREE_DEBUG=1 :some_target
config_setting(
    name = "debug",
    define_values = {"IREE_DEBUG": "1"},
)

config_setting(
    name = "enable_tensorflow",
    define_values = {
        "iree_tensorflow": "true",
    },
)

# Note that the "proper" way to do this is via a query on @bazel_tools,
# but as with so many things bazel, it doesn't work reliably across versions,
# variants, etc. So we just define our own since we also own the config
# setting that activates it.
config_setting(
    name = "iree_is_msvc",
    define_values = {
        "iree_is_msvc": "true",
    },
)

# Same as above. Should be a query on @bazel_tools but this is simpler for now.
config_setting(
    name = "iree_is_android",
    define_values = {
        "iree_is_android": "true",
    },
)
