|  | # 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 | 
|  |  | 
|  | # iree_microbenchmark_suite() | 
|  | # | 
|  | # Generates microbenchmark suites for MLIR input modules. | 
|  | # Parameters: | 
|  | #   NAME: Name of target. | 
|  | #   SRCS: Source files to compile into a bytecode module (list of strings). | 
|  | #   FLAGS: Flags to pass to the compiler tool (list of strings). | 
|  |  | 
|  | function(iree_microbenchmark_suite) | 
|  | if(NOT IREE_BUILD_MICROBENCHMARKS) | 
|  | return() | 
|  | endif() | 
|  |  | 
|  | cmake_parse_arguments( | 
|  | _RULE | 
|  | "" | 
|  | "NAME" | 
|  | "SRCS;FLAGS" | 
|  | ${ARGN} | 
|  | ) | 
|  |  | 
|  | iree_package_name(PACKAGE_NAME) | 
|  |  | 
|  | foreach(_SRC IN LISTS _RULE_SRCS) | 
|  | set(_COMPILE_TOOL "iree-compile") | 
|  | set(_TRANSLATE_SRC "${_SRC}") | 
|  | set(_MODULE_FILE_NAME "${_RULE_NAME}_${_SRC}.vmfb") | 
|  | set(_TARGET_NAME "${PACKAGE_NAME}_${_MODULE_FILE_NAME}") | 
|  | set(_ARGS "${_RULE_FLAGS}") | 
|  | get_filename_component(_TRANSLATE_SRC_PATH "${_TRANSLATE_SRC}" REALPATH) | 
|  | list(APPEND _ARGS "${_TRANSLATE_SRC_PATH}") | 
|  | list(APPEND _ARGS "-o") | 
|  | list(APPEND _ARGS "${_MODULE_FILE_NAME}") | 
|  |  | 
|  | add_custom_command( | 
|  | OUTPUT | 
|  | "${_MODULE_FILE_NAME}" | 
|  | COMMAND | 
|  | ${_COMPILE_TOOL} | 
|  | ${_ARGS} | 
|  | DEPENDS | 
|  | ${_COMPILE_TOOL} | 
|  | ${_TRANSLATE_SRC} | 
|  | VERBATIM | 
|  | ) | 
|  | add_custom_target("${_TARGET_NAME}" | 
|  | DEPENDS | 
|  | "${_MODULE_FILE_NAME}" | 
|  | ) | 
|  | add_dependencies(iree-microbenchmark-suites "${_TARGET_NAME}") | 
|  | endforeach(_SRC IN LISTS _SRCS) | 
|  | endfunction(iree_microbenchmark_suite) |