|  | # 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 | 
|  |  | 
|  | include(CMakeParseArguments) | 
|  |  | 
|  | # iree_cc_binary_benchmarks() | 
|  | # | 
|  | # Creates a binary and a test for a cc benchmark target. | 
|  | # | 
|  | # It's good to test that benchmarks run, but it's really annoying to run a | 
|  | # billion iterations of them every time you try to run tests. So we create these | 
|  | # as binaries and then invoke them as tests with `--benchmark_min_time=0`. | 
|  | # | 
|  | # Mirrors the bzl function of the same name. See iree_cc_binary and iree_cc_test | 
|  | # for more details on those rules | 
|  | # | 
|  | # Parameters: | 
|  | # NAME: name for the binary target. The test target will be "${NAME}_test" | 
|  | # SRCS: List of source files for the binary | 
|  | # DATA: List of other targets and files required for the binary | 
|  | # DEPS: List of other libraries to be linked in to the binary | 
|  | # COPTS: List of private compile options for the binary | 
|  | # DEFINES: List of public defines for the binary | 
|  | # LINKOPTS: List of link options for the binary | 
|  | # TESTONLY: whether the binary should only be compiled for tests | 
|  | # HOSTONLY: whether the binary should be compiled using host toolchain when | 
|  | #   cross-compiling | 
|  | # LABELS: Additional labels to apply to the test. The package path is added | 
|  | #     automatically. | 
|  | # | 
|  | # ) | 
|  |  | 
|  | function(iree_cc_binary_benchmark) | 
|  |  | 
|  | cmake_parse_arguments( | 
|  | _RULE | 
|  | "HOSTONLY;TESTONLY" | 
|  | "NAME" | 
|  | "SRCS;COPTS;DEFINES;LINKOPTS;DATA;DEPS;LABELS" | 
|  | ${ARGN} | 
|  | ) | 
|  |  | 
|  | set(_MAYBE_TESTONLY "") | 
|  | if(_RULE_TESTONLY) | 
|  | set(_MAYBE_TESTONLY "TESTONLY") | 
|  | endif() | 
|  |  | 
|  | set(_MAYBE_HOSTONLY "") | 
|  | if(_RULE_HOSTONLY) | 
|  | set(_MAYBE_HOSTONLY "HOSTONLY") | 
|  | endif() | 
|  |  | 
|  | iree_cc_binary( | 
|  | NAME | 
|  | ${_RULE_NAME} | 
|  | SRCS | 
|  | ${_RULE_SRCS} | 
|  | DEPS | 
|  | ${_RULE_DEPS} | 
|  | COPTS | 
|  | ${_RULE_COPTS} | 
|  | DEFINES | 
|  | ${_RULE_DEFINES} | 
|  | LINKOPTS | 
|  | ${_RULE_LINKOPTS} | 
|  | ${_MAYBE_TESTONLY} | 
|  | ${_MAYBE_HOSTONLY} | 
|  | ) | 
|  |  | 
|  |  | 
|  | iree_native_test( | 
|  | NAME | 
|  | ${_RULE_NAME}_test | 
|  | ARGS | 
|  | "--benchmark_min_time=0" | 
|  | SRC | 
|  | ::${_RULE_NAME} | 
|  | LABELS | 
|  | ${_RULE_LABELS} | 
|  | ) | 
|  | endfunction() |