| # 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() |