# 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

load("@bazel_skylib//rules:common_settings.bzl", "string_flag")

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

exports_files(["assert_empty_query.sh"])

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

# OS platform constraints. Used in select() for platform-specific backend
# selection. bazel_to_cmake maps these to CMAKE_SYSTEM_NAME checks.
config_setting(
    name = "iree_is_linux",
    constraint_values = ["@platforms//os:linux"],
)

config_setting(
    name = "iree_is_macos",
    constraint_values = ["@platforms//os:macos"],
)

config_setting(
    name = "iree_is_windows",
    constraint_values = ["@platforms//os:windows"],
)

config_setting(
    name = "iree_is_wasm",
    constraint_values = ["@platforms//cpu:wasm32"],
)

# Selects a user-provided system allocator. Users must provide
# IREE_ALLOCATOR_SYSTEM_CTL, and optionally IREE_ALLOCATOR_SYSTEM_SELF, via
# their own copts/defines and link the implementation into final binaries.
config_setting(
    name = "iree_allocator_system_custom",
    define_values = {
        "iree_allocator_system": "custom",
    },
)

# Selects a user-provided freestanding WebAssembly libc. The wasm toolchains
# keep the freestanding target model but stop injecting IREE's libc headers; users
# must provide their own declared headers, include paths, and allocator/libc
# objects.
config_setting(
    name = "iree_wasm_libc_custom",
    define_values = {
        "iree_wasm_libc": "custom",
    },
)

# ROCM GPU chip target for test and sample compilation. Override with:
#   --//build_tools/bazel:rocm_test_target=gfx942
string_flag(
    name = "rocm_test_target",
    build_setting_default = "gfx1100",
)
