# This file is 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
"""LLVM libc starlark rules for math tests.
This rule delegates testing to libc_test_rules.bzl:libc_test.
It adds common math dependencies.
"""
load("//libc/test:libc_test_rules.bzl", "libc_test")
def math_test(name, hdrs = [], deps = [], **kwargs):
"""Add a target for the unittest of a math function.
Args:
name: The name of the function being tested.
hdrs: List of headers to add.
deps: The list of other libraries to be linked in to the test target.
**kwargs: Attributes relevant for a cc_test. For example, name, srcs.
"""
test_name = name + "_test"
libc_test(
name = test_name,
srcs = [test_name + ".cpp"] + hdrs,
libc_function_deps = ["//libc:func_name".replace("func_name", name)],
deps = [
"//libc:__support_cpp_algorithm",
"//libc:__support_cpp_bit",
"//libc:__support_cpp_limits",
"//libc:__support_cpp_type_traits",
"//libc:__support_fputil_basic_operations",
"//libc:__support_fputil_cast",
"//libc:__support_fputil_fenv_impl",
"//libc:__support_fputil_fp_bits",
"//libc:__support_fputil_manipulation_functions",
"//libc:__support_fputil_nearest_integer_operations",
"//libc:__support_fputil_normal_float",
"//libc:__support_macros_properties_architectures",
"//libc:__support_macros_properties_os",
"//libc:__support_macros_properties_types",
"//libc:__support_math_extras",
"//libc:__support_uint128",
"//libc:hdr_errno_macros",
"//libc:hdr_fenv_macros",
"//libc:hdr_math_macros",
"//libc/test/UnitTest:fp_test_helpers",
] + deps,
**kwargs
)
def math_mpfr_test(name, hdrs = [], deps = [], **kwargs):
"""Add a target for the unittest of a math function.
Args:
name: The name of the function being tested.
hdrs: List of headers to add.
deps: The list of other libraries to be linked in to the test target.
**kwargs: Attributes relevant for a cc_test. For example, name, srcs.
"""
math_test(
name = name,
hdrs = hdrs,
deps = deps + ["//libc/utils/MPFRWrapper:mpfr_wrapper"],
**kwargs
)