# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

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

cc_library(
    name = "ModelBuilder",
    srcs = ["ModelBuilder.cpp"],
    hdrs = ["ModelBuilder.h"],
    tags = [
        "noga",
    ],
    deps = [
        "@llvm-project//llvm:support",
        "@llvm-project//mlir:EDSC",
        "@llvm-project//mlir:IR",
        "@llvm-project//mlir:LinalgOps",
        "@llvm-project//mlir:LinalgTransforms",
    ],
)

cc_library(
    name = "ModelRunner",
    srcs = ["ModelRunner.cpp"],
    hdrs = [
        "MLIRRunnerUtils.h",
        "MemRefUtils.h",
        "ModelRunner.h",
    ],
    linkopts = [
        "-ldl",
    ],
    tags = [
        "noga",
    ],
    deps = [
        ":ModelBuilder",
        "@llvm-project//llvm:support",
        "@llvm-project//mlir:ExecutionEngine",
        "@llvm-project//mlir:ExecutionEngineUtils",
        "@llvm-project//mlir:IR",
        "@llvm-project//mlir:LLVMTransforms",
        "@llvm-project//mlir:LinalgToLLVM",
        "@llvm-project//mlir:LinalgTransforms",
        "@llvm-project//mlir:Pass",
        "@llvm-project//mlir:TargetLLVMIR",
        "@llvm-project//mlir:TransformUtils",
    ],
)
