add_custom_target(libc_fenv_unittests)
add_libc_unittest(
rounding_mode_test
SUITE
libc_fenv_unittests
SRCS
rounding_mode_test.cpp
DEPENDS
libc.src.fenv.fegetround
libc.src.fenv.fesetround
LINK_LIBRARIES
LibcFPTestHelpers
)
add_libc_unittest(
exception_status_test
SUITE
libc_fenv_unittests
SRCS
exception_status_test.cpp
DEPENDS
libc.src.fenv.feclearexcept
libc.src.fenv.feraiseexcept
libc.src.fenv.fesetexcept
libc.src.fenv.fetestexcept
libc.src.__support.FPUtil.fenv_impl
LINK_LIBRARIES
LibcFPTestHelpers
)
add_libc_unittest(
getenv_and_setenv_test
SUITE
libc_fenv_unittests
SRCS
getenv_and_setenv_test.cpp
DEPENDS
libc.src.fenv.fegetenv
libc.src.fenv.fegetround
libc.src.fenv.fesetenv
libc.src.fenv.fesetround
libc.src.__support.FPUtil.fenv_impl
libc.src.__support.macros.properties.os
LINK_LIBRARIES
LibcFPTestHelpers
)
add_libc_unittest(
exception_flags_test
SUITE
libc_fenv_unittests
SRCS
exception_flags_test.cpp
DEPENDS
libc.src.fenv.fegetexceptflag
libc.src.fenv.fesetexceptflag
libc.src.fenv.fetestexceptflag
libc.src.__support.FPUtil.fenv_impl
LINK_LIBRARIES
LibcFPTestHelpers
)
add_libc_unittest(
feupdateenv_test
SUITE
libc_fenv_unittests
SRCS
feupdateenv_test.cpp
DEPENDS
libc.include.signal
libc.src.fenv.feupdateenv
libc.src.__support.FPUtil.fenv_impl
LINK_LIBRARIES
LibcFPTestHelpers
)
add_libc_unittest(
feclearexcept_test
SUITE
libc_fenv_unittests
SRCS
feclearexcept_test.cpp
DEPENDS
libc.src.fenv.feclearexcept
libc.src.__support.FPUtil.fenv_impl
LINK_LIBRARIES
LibcFPTestHelpers
)
add_libc_unittest(
feenableexcept_test
SUITE
libc_fenv_unittests
SRCS
feenableexcept_test.cpp
DEPENDS
libc.src.fenv.fedisableexcept
libc.src.fenv.feenableexcept
libc.src.fenv.fegetexcept
LINK_LIBRARIES
LibcFPTestHelpers
)
if (NOT (LLVM_USE_SANITIZER OR (${LIBC_TARGET_OS} STREQUAL "windows")
OR (${LIBC_TARGET_OS} STREQUAL "darwin")))
# Sanitizers don't like SIGFPE. So, we will run the
# tests which raise SIGFPE only in non-sanitizer builds.
# The tests are also disabled for Windows and MacOS as they fail currently.
# TODO: Investigate and fix the windows failures and enable them for Windows
# and MacOS.
add_fp_unittest(
enabled_exceptions_test
UNIT_TEST_ONLY
SUITE
libc_fenv_unittests
SRCS
enabled_exceptions_test.cpp
DEPENDS
libc.include.signal
libc.src.fenv.feclearexcept
libc.src.fenv.feraiseexcept
libc.src.fenv.fetestexcept
libc.src.__support.FPUtil.fenv_impl
LINK_LIBRARIES
LibcFPExceptionHelpers
LibcFPTestHelpers
)
add_fp_unittest(
feholdexcept_test
UNIT_TEST_ONLY
SUITE
libc_fenv_unittests
SRCS
feholdexcept_test.cpp
DEPENDS
libc.hdr.fenv_macros
libc.src.fenv.feholdexcept
libc.src.__support.FPUtil.fenv_impl
LINK_LIBRARIES
LibcFPExceptionHelpers
LibcFPTestHelpers
)
endif()