# 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

# Tests for common transforms.

load("//build_tools/bazel:enforce_glob.bzl", "enforce_glob")
load("//build_tools/bazel:iree_lit_test.bzl", "iree_lit_test_suite")

package(
    features = ["layering_check"],
    licenses = ["notice"],  # Apache 2.0
)

iree_lit_test_suite(
    name = "lit",
    srcs = enforce_glob(
        # keep sorted
        [
            "executable_benchmarks.mlir",
            "hal_executable.mlir",
            "inline_dynamic_hal_executable.mlir",
            "inline_static_hal_executable.mlir",
            "precompile.mlir",
            "preprocessing_flags.mlir",
            "smoketest.mlir",
            "streams.mlir",
        ],
        include = ["*.mlir"],
    ),
    cfg = "//tests:lit.cfg.py",
    tags = ["hostonly"],
    tools = [
        "//tools:iree-compile",
        "@llvm-project//llvm:FileCheck",
    ],
)
