| # 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_fputil_basic_operations", |
| "//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_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 |
| ) |