# 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("//build_tools/bazel:build_defs.oss.bzl", "iree_cmake_extra_content", "iree_runtime_cc_binary")
load("//build_tools/bazel:iree_bytecode_module.bzl", "iree_bytecode_module")
load("//build_tools/bazel:native_binary.bzl", "native_test")

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

iree_cmake_extra_content(
    content = """
if(IREE_HAL_DRIVER_LOCAL_SYNC AND IREE_HAL_EXECUTABLE_LOADER_VMVX_MODULE AND
   (IREE_TARGET_BACKEND_VMVX OR IREE_HOST_BIN_DIR))
""",
    inline = True,
)

iree_runtime_cc_binary(
    name = "simple_embedding_vmvx_sync",
    srcs = [
        "device_vmvx_sync.c",
        "simple_embedding.c",
    ],
    deps = [
        ":simple_embedding_test_bytecode_module_vmvx_c",
        "//runtime/src/iree/base",
        "//runtime/src/iree/hal",
        "//runtime/src/iree/hal/drivers/local_sync:sync_driver",
        "//runtime/src/iree/hal/local",
        "//runtime/src/iree/hal/local/loaders:vmvx_module_loader",
        "//runtime/src/iree/modules/hal",
        "//runtime/src/iree/vm",
        "//runtime/src/iree/vm/bytecode:module",
    ],
)

iree_bytecode_module(
    name = "simple_embedding_test_bytecode_module_vmvx",
    src = "simple_embedding_test.mlir",
    c_identifier = "iree_samples_simple_embedding_test_module_vmvx",
    flags = [
        "--iree-hal-target-device=local",
        "--iree-hal-local-target-device-backends=vmvx",
    ],
)

native_test(
    name = "simple_embedding_vmvx_sync_test",
    src = ":simple_embedding_vmvx_sync",
)

iree_cmake_extra_content(
    content = """
endif()
""",
    inline = True,
)

iree_cmake_extra_content(
    content = """
iree_compiler_targeting_iree_arch(_IREE_COMPILER_TARGETING_ARM_32 "arm_32")
iree_compiler_targeting_iree_arch(_IREE_COMPILER_TARGETING_ARM_64 "arm_64")
iree_compiler_targeting_iree_arch(_IREE_COMPILER_TARGETING_RISCV_32 "riscv_32")
iree_compiler_targeting_iree_arch(_IREE_COMPILER_TARGETING_RISCV_64 "riscv_64")
iree_compiler_targeting_iree_arch(_IREE_COMPILER_TARGETING_X86_64 "x86_64")
if(IREE_HAL_DRIVER_LOCAL_SYNC AND
   IREE_HAL_EXECUTABLE_LOADER_EMBEDDED_ELF AND
   ((IREE_TARGET_BACKEND_LLVM_CPU AND
    _IREE_COMPILER_TARGETING_ARM_32 AND
    _IREE_COMPILER_TARGETING_ARM_64 AND
    _IREE_COMPILER_TARGETING_RISCV_32 AND
    _IREE_COMPILER_TARGETING_RISCV_64 AND
    _IREE_COMPILER_TARGETING_X86_64) OR IREE_HOST_BIN_DIR))
""",
    inline = True,
)

iree_runtime_cc_binary(
    name = "simple_embedding_embedded_sync",
    srcs = [
        "device_embedded_sync.c",
        "simple_embedding.c",
    ],
    deps = [
        #":simple_embedding_test_bytecode_module_cpu_arm_32_c",
        ":simple_embedding_test_bytecode_module_cpu_arm_64_c",
        ":simple_embedding_test_bytecode_module_cpu_riscv_32_c",
        ":simple_embedding_test_bytecode_module_cpu_riscv_64_c",
        ":simple_embedding_test_bytecode_module_cpu_x86_64_c",
        "//runtime/src/iree/base",
        "//runtime/src/iree/hal",
        "//runtime/src/iree/hal/drivers/local_sync:sync_driver",
        "//runtime/src/iree/hal/local",
        "//runtime/src/iree/hal/local/loaders:embedded_elf_loader",
        "//runtime/src/iree/modules/hal",
        "//runtime/src/iree/vm",
        "//runtime/src/iree/vm/bytecode:module",
    ],
)

iree_bytecode_module(
    name = "simple_embedding_test_bytecode_module_cpu_x86_64",
    src = "simple_embedding_test.mlir",
    c_identifier = "iree_samples_simple_embedding_test_module_cpu_x86_64",
    flags = [
        "--iree-hal-target-device=local",
        "--iree-hal-local-target-device-backends=llvm-cpu",
        "--iree-llvmcpu-target-triple=x86_64-pc-linux-elf",
        "--iree-llvmcpu-target-cpu=generic",
        "--iree-llvmcpu-debug-symbols=false",
        "--iree-vm-bytecode-module-strip-source-map=true",
        "--iree-vm-emit-polyglot-zip=false",
    ],
)

iree_bytecode_module(
    name = "simple_embedding_test_bytecode_module_cpu_riscv_32",
    src = "simple_embedding_test.mlir",
    c_identifier = "iree_samples_simple_embedding_test_module_cpu_riscv_32",
    flags = [
        "--iree-hal-target-device=local",
        "--iree-hal-local-target-device-backends=llvm-cpu",
        "--iree-llvmcpu-target-triple=riscv32-pc-linux-elf",
        "--iree-llvmcpu-target-cpu-features=+m,+f",
        "--iree-llvmcpu-target-abi=ilp32",
        "--iree-llvmcpu-debug-symbols=false",
        "--iree-vm-bytecode-module-strip-source-map=true",
        "--iree-vm-emit-polyglot-zip=false",
    ],
)

iree_bytecode_module(
    name = "simple_embedding_test_bytecode_module_cpu_riscv_64",
    src = "simple_embedding_test.mlir",
    c_identifier = "iree_samples_simple_embedding_test_module_cpu_riscv_64",
    flags = [
        "--iree-hal-target-device=local",
        "--iree-hal-local-target-device-backends=llvm-cpu",
        "--iree-llvmcpu-target-triple=riscv64-pc-linux-elf",
        "--iree-llvmcpu-target-cpu-features=+m,+a,+f,+d,+c",
        "--iree-llvmcpu-target-abi=lp64d",
        "--iree-llvmcpu-debug-symbols=false",
        "--iree-vm-bytecode-module-strip-source-map=true",
        "--iree-vm-emit-polyglot-zip=false",
    ],
)

# TODO(#22161): reenable the bytecode module.
#iree_bytecode_module(
#    name = "simple_embedding_test_bytecode_module_cpu_arm_32",
#    src = "simple_embedding_test.mlir",
#    c_identifier = "iree_samples_simple_embedding_test_module_cpu_arm_32",
#    flags = [
#        "--iree-hal-target-device=local",
#        "--iree-hal-local-target-device-backends=llvm-cpu",
#        "--iree-llvmcpu-target-triple=armv7a-pc-linux-elf",
#        "--iree-llvmcpu-target-cpu=generic",
#        "--iree-llvmcpu-target-float-abi=hard",
#        "--iree-llvmcpu-debug-symbols=false",
#        "--iree-vm-bytecode-module-strip-source-map=true",
#        "--iree-vm-emit-polyglot-zip=false",
#    ],
#)

iree_bytecode_module(
    name = "simple_embedding_test_bytecode_module_cpu_arm_64",
    src = "simple_embedding_test.mlir",
    c_identifier = "iree_samples_simple_embedding_test_module_cpu_arm_64",
    flags = [
        "--iree-hal-target-device=local",
        "--iree-hal-local-target-device-backends=llvm-cpu",
        "--iree-llvmcpu-target-triple=aarch64-pc-linux-elf",
        "--iree-llvmcpu-target-cpu=generic",
        "--iree-llvmcpu-debug-symbols=false",
        "--iree-vm-bytecode-module-strip-source-map=true",
        "--iree-vm-emit-polyglot-zip=false",
    ],
)

native_test(
    name = "simple_embedding_embedded_sync_test",
    src = ":simple_embedding_embedded_sync",
)

iree_cmake_extra_content(
    content = """
if(IREE_HAL_DRIVER_LOCAL_TASK AND IREE_HAL_EXECUTABLE_LOADER_EMBEDDED_ELF)
""",
    inline = True,
)

iree_runtime_cc_binary(
    name = "simple_embedding_embedded",
    srcs = [
        "device_embedded.c",
        "simple_embedding.c",
    ],
    deps = [
        ":simple_embedding_test_bytecode_module_cpu_arm_64_c",
        ":simple_embedding_test_bytecode_module_cpu_riscv_32_c",
        ":simple_embedding_test_bytecode_module_cpu_riscv_64_c",
        ":simple_embedding_test_bytecode_module_cpu_x86_64_c",
        "//runtime/src/iree/base",
        "//runtime/src/iree/hal",
        "//runtime/src/iree/hal/drivers/local_task:task_driver",
        "//runtime/src/iree/hal/local",
        "//runtime/src/iree/hal/local/loaders:embedded_elf_loader",
        "//runtime/src/iree/modules/hal",
        "//runtime/src/iree/task:api",
        "//runtime/src/iree/vm",
        "//runtime/src/iree/vm/bytecode:module",
    ],
)

native_test(
    name = "simple_embedding_embedded_test",
    src = ":simple_embedding_embedded",
)

iree_cmake_extra_content(
    content = """
endif()
""",
    inline = True,
)

iree_cmake_extra_content(
    content = """
endif()

if(IREE_HAL_DRIVER_VULKAN AND
   (IREE_TARGET_BACKEND_VULKAN_SPIRV OR IREE_HOST_BIN_DIR))
""",
    inline = True,
)

iree_runtime_cc_binary(
    name = "simple_embedding_vulkan",
    srcs = [
        "device_vulkan.c",
        "simple_embedding.c",
    ],
    deps = [
        ":simple_embedding_test_bytecode_module_vulkan_c",
        "//runtime/src/iree/base",
        "//runtime/src/iree/hal",
        "//runtime/src/iree/hal/drivers/vulkan/registration",
        "//runtime/src/iree/modules/hal",
        "//runtime/src/iree/vm",
        "//runtime/src/iree/vm/bytecode:module",
    ],
)

iree_bytecode_module(
    name = "simple_embedding_test_bytecode_module_vulkan",
    src = "simple_embedding_test.mlir",
    c_identifier = "iree_samples_simple_embedding_test_module_vulkan",
    flags = [
        "--iree-hal-target-device=vulkan",
        "--iree-llvmcpu-debug-symbols=false",
    ],
)

native_test(
    name = "simple_embedding_vulkan_test",
    src = ":simple_embedding_vulkan",
    tags = [
        "driver=vulkan",
    ],
)

iree_cmake_extra_content(
    content = """
endif()
""",
    inline = True,
)

# Disabled because CUDA is not universally available and Bazel does not
# support configurability in a reasonable or useful way.
# iree_cmake_extra_content(
#     content = """
# if(IREE_HAL_DRIVER_CUDA AND
#    (IREE_TARGET_BACKEND_CUDA OR IREE_HOST_BIN_DIR))
# """,
#     inline = True,
# )

# iree_runtime_cc_binary(
#     name = "simple_embedding_cuda",
#     srcs = [
#         "device_cuda.c",
#         "simple_embedding.c",
#     ],
#     deps = [
#         ":simple_embedding_test_bytecode_module_cuda_c",
#         "//runtime/src/iree/base",
#         "//runtime/src/iree/hal",
#         "//runtime/src/iree/hal/drivers/cuda/registration",
#         "//runtime/src/iree/modules/hal",
#         "//runtime/src/iree/vm",
#         "//runtime/src/iree/vm/bytecode:module",
#     ],
# )

# iree_bytecode_module(
#     name = "simple_embedding_test_bytecode_module_cuda",
#     src = "simple_embedding_test.mlir",
#     c_identifier = "iree_samples_simple_embedding_test_module_cuda",
#     flags = [
#         "--iree-hal-target-device=cuda",
#         "--iree-llvmcpu-debug-symbols=false",
#     ],
# )

# # native_test(
# #     name = "simple_embedding_cuda_test",
# #     src = ":simple_embedding_cuda",
# #     tags = [
# #         "driver=cuda",
# #     ],
# # )

# iree_cmake_extra_content(
#     content = """
# iree_native_test(
#   NAME
#     "simple_embedding_cuda_test"
#   LABELS
#     "driver=cuda"
#   SRC
#     ::simple_embedding_cuda
# )

# endif()
# """,
#     inline = True,
# )
