# Copyright 2022 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

################################################################################
#                                                                              #
# E2E Test Artifacts Suite                                                     #
#                                                                              #
# Includes the generated cmake files to build the e2e test artifacts.          #
# The cmake files "generated_*.cmake" are generated by the python script:      #
# "build_tools/testing/generate_cmake_e2e_test_artifacts_suite.py" and sould   #
# not be edited manually. Please read README.md for the instructions to update #
# the test artifacts.                                                          #
#                                                                              #
################################################################################

if(NOT IREE_BUILD_E2E_TEST_ARTIFACTS)
  return()
endif()

################################################################################
# Defines the required variables.                                              #
################################################################################
iree_package_name(PACKAGE_NAME)
set(ROOT_ARTIFACTS_DIR "${IREE_BINARY_DIR}/e2e_test_artifacts")

################################################################################
# Defines the benchmark suite targets                                          #
#                                                                              #
# iree-benchmark-suites* fully prepares benchmark models for benchmarking:     #
#   * importing from source formats to IREE-compatible .mlir files             #
#   * compiling from .mlir files to benchmark-ready .vmfb files                #
#                                                                              #
# Each benchmark preset has a corresponding target                             #
# `iree-benchmark-suites-<preset>`. The full preset list can be found in:      #
# build_tools/python/benchmark_suites/iree/benchmark_presets.py                #
#                                                                              #
################################################################################

# Size-based execution benchmark preset targets.
add_custom_target(iree-benchmark-suites-default)
add_custom_target(iree-benchmark-suites-large)

# Architecture-based execution benchmark preset targets.
add_custom_target(iree-benchmark-suites-android-cpu)
add_custom_target(iree-benchmark-suites-android-gpu)
add_custom_target(iree-benchmark-suites-cuda)
add_custom_target(iree-benchmark-suites-cuda-large)
add_custom_target(iree-benchmark-suites-riscv)
add_custom_target(iree-benchmark-suites-vulkan-nvidia)
add_custom_target(iree-benchmark-suites-x86_64)
add_custom_target(iree-benchmark-suites-x86_64-large)

# Compilation benchmark preset targets.
add_custom_target(iree-benchmark-suites-comp-stats)
add_custom_target(iree-benchmark-suites-comp-stats-large)

# iree-e2e-test-artifacts builds all e2e test artifacts.
add_custom_target(iree-e2e-test-artifacts)
add_dependencies(iree-e2e-test-artifacts
  iree-benchmark-suites-default
  iree-benchmark-suites-large
  iree-benchmark-suites-comp-stats
  iree-benchmark-suites-comp-stats-large
)

# Map the legacy, intuitive target to default benchmark preset.
add_custom_target(iree-benchmark-suites)
add_dependencies(iree-benchmark-suites
  iree-benchmark-suites-default
)

# iree-benchmark-import-models* imports benchmark models from their source
# formats, such as .tflite flatbuffers, to IREE-compatible .mlir files.

# Imported models used in iree-benchmark-suites-default + iree-benchmark-suites-comp-stats-default
add_custom_target(iree-benchmark-import-models)
# Imported models used in iree-benchmark-suites-large + iree-benchmark-suites-comp-stats-large
add_custom_target(iree-benchmark-import-models-large)

# Import the generated benchmark suite cmake files.
include(generated_e2e_test_fetch_models.cmake)

include(generated_e2e_test_iree_artifacts.cmake)
