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