blob: 24935cec048ba8f66428ac39223f1f24dec5294e [file] [log] [blame] [edit]
add_custom_target(libc_include_tests)
add_dependencies(check-libc libc_include_tests)
add_libc_test(
assert_test
SUITE
libc_include_tests
SRCS
assert_test.cpp
DEPENDS
libc.include.llvm-libc-macros.assert_macros
)
add_libc_test(
complex_test
SUITE
libc_include_tests
SRCS
complex_test.cpp
DEPENDS
libc.include.llvm-libc-macros.complex_macros
)
add_libc_test(
sys_queue_test
SUITE
libc_include_tests
SRCS
sys/queue_test.cpp
DEPENDS
libc.include.llvm-libc-macros.sys_queue_macros
libc.src.__support.char_vector
libc.src.__support.CPP.string
COMPILE_OPTIONS
# This is needed because the __containerof macro uses statement expression.
-Wno-gnu-statement-expression-from-macro-expansion
)
add_libc_test(
stdbit_test
SUITE
libc_include_tests
HDRS
stdbit_stub.h
SRCS
stdbit_test.cpp
DEPENDS
libc.include.llvm-libc-macros.stdbit_macros
libc.include.llvm_libc_common_h
libc.include.stdbit
# Intentionally do not depend on libc.src.stdbit.*. The include test is
# simply testing the macros provided by stdbit.h, not the implementation
# of the underlying functions which the type generic macros may dispatch
# to.
)
add_libc_test(
stdbit_c_test
C_TEST
UNIT_TEST_ONLY
SUITE
libc_include_tests
HDRS
stdbit_stub.h
SRCS
stdbit_test.c
COMPILE_OPTIONS
-Wall
-Werror
DEPENDS
libc.include.llvm-libc-macros.stdbit_macros
libc.include.llvm_libc_common_h
libc.include.stdbit
libc.src.assert.__assert_fail
# Intentionally do not depend on libc.src.stdbit.*. The include test is
# simply testing the macros provided by stdbit.h, not the implementation
# of the underlying functions which the type generic macros may dispatch
# to.
)
add_libc_test(
stdckdint_test
SUITE
libc_include_tests
SRCS
stdckdint_test.cpp
DEPENDS
libc.include.llvm-libc-macros.stdckdint_macros
)
add_libc_test(
issubnormal_test
SUITE
libc_include_tests
SRCS
issubnormal_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
issubnormalf_test
SUITE
libc_include_tests
SRCS
issubnormalf_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
issubnormall_test
SUITE
libc_include_tests
SRCS
issubnormall_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isnormal_test
SUITE
libc_include_tests
SRCS
isnormal_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isnormalf_test
SUITE
libc_include_tests
SRCS
isnormalf_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isnormall_test
SUITE
libc_include_tests
SRCS
isnormall_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
fpclassify_test
SUITE
libc_include_tests
SRCS
fpclassify_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
fpclassifyf_test
SUITE
libc_include_tests
SRCS
fpclassifyf_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
fpclassifyl_test
SUITE
libc_include_tests
SRCS
fpclassifyl_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
iszero_test
SUITE
libc_include_tests
SRCS
iszero_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
iszerof_test
SUITE
libc_include_tests
SRCS
iszerof_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
iszerol_test
SUITE
libc_include_tests
SRCS
iszerol_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
signbit_test
SUITE
libc_include_tests
SRCS
signbit_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
signbitf_test
SUITE
libc_include_tests
SRCS
signbitf_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
signbitl_test
SUITE
libc_include_tests
SRCS
signbitl_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isnan_test
SUITE
libc_include_tests
SRCS
isnan_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isnanf_test
SUITE
libc_include_tests
SRCS
isnanf_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isnanl_test
SUITE
libc_include_tests
SRCS
isnanl_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isinf_test
SUITE
libc_include_tests
SRCS
isinf_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isinff_test
SUITE
libc_include_tests
SRCS
isinff_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isinfl_test
SUITE
libc_include_tests
SRCS
isinfl_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isfinite_test
SUITE
libc_include_tests
SRCS
isfinite_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isfinitef_test
SUITE
libc_include_tests
SRCS
isfinitef_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isfinitel_test
SUITE
libc_include_tests
SRCS
isfinitel_test.cpp
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
signbit_c_test
C_TEST
UNIT_TEST_ONLY
SUITE
libc_include_tests
SRCS
signbit_test.c
COMPILE_OPTIONS
-Wall
-Werror
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isnan_c_test
C_TEST
UNIT_TEST_ONLY
SUITE
libc_include_tests
SRCS
isnan_test.c
COMPILE_OPTIONS
-Wall
-Werror
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isnormal_c_test
C_TEST
UNIT_TEST_ONLY
SUITE
libc_include_tests
SRCS
isnormal_test.c
COMPILE_OPTIONS
-Wall
-Werror
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
# TODO(https://github.com/llvm/llvm-project/issues/114618): fix linkage failures
# add_libc_test(
# issignaling_c_test
# C_TEST
# UNIT_TEST_ONLY
# SUITE
# libc_include_tests
# SRCS
# issignaling_test.c
# COMPILE_OPTIONS
# -Wall
# -Werror
# DEPENDS
# libc.include.llvm-libc-macros.math_function_macros
# libc.src.math.issignaling
# libc.src.math.issignalingf
# libc.src.math.issignalingl
# )
# add_libc_test(
# iscanonical_c_test
# C_TEST
# UNIT_TEST_ONLY
# SUITE
# libc_include_tests
# SRCS
# iscanonical_test.c
# COMPILE_OPTIONS
# -Wall
# -Werror
# DEPENDS
# libc.include.llvm-libc-macros.math_function_macros
# libc.src.math.iscanonical
# libc.src.math.iscanonicalf
# libc.src.math.iscanonicall
# )
add_libc_test(
isinf_c_test
C_TEST
UNIT_TEST_ONLY
SUITE
libc_include_tests
SRCS
isinf_test.c
COMPILE_OPTIONS
-Wall
-Werror
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
isfinite_c_test
C_TEST
UNIT_TEST_ONLY
SUITE
libc_include_tests
SRCS
isfinite_test.c
COMPILE_OPTIONS
-Wall
-Werror
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
issubnormal_c_test
C_TEST
UNIT_TEST_ONLY
SUITE
libc_include_tests
SRCS
issubnormal_test.c
COMPILE_OPTIONS
-Wall
-Werror
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
fpclassify_c_test
C_TEST
UNIT_TEST_ONLY
SUITE
libc_include_tests
SRCS
fpclassify_test.c
COMPILE_OPTIONS
-Wall
-Werror
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
add_libc_test(
iszero_c_test
C_TEST
UNIT_TEST_ONLY
SUITE
libc_include_tests
SRCS
iszero_test.c
COMPILE_OPTIONS
-Wall
-Werror
DEPENDS
libc.include.llvm-libc-macros.math_function_macros
)
# Test `#include <...>` of each header in each available language mode.
# This is gated on -DLLVM_LIBC_BUILD_HEADER_TESTS=ON until all the bugs
# in headers are fixed so the tests all compile.
set(TEST_STDC_VERSIONS 89;99;11;17;23)
set(TEST_STDCXX_VERSIONS 03;11;14;17;20;23;26)
function(add_header_test target_name source_file deps std_mode)
if(LLVM_LIBC_BUILD_HEADER_TESTS)
add_libc_test(
${target_name}
C_TEST
HERMETIC_TEST_ONLY
SUITE
libc_include_tests
SRCS
${source_file}
COMPILE_OPTIONS
-Werror
-Wsystem-headers
-Wall
-Wextra
-std=${std_mode}
DEPENDS
${deps}
)
endif()
endfunction()
foreach(target ${TARGET_PUBLIC_HEADERS})
string(REPLACE "libc.include." "" header ${target})
get_target_property(HEADER_NAME ${target} HEADER_NAME)
set(test_stdc_file "${CMAKE_CURRENT_BINARY_DIR}/${header}_test.c")
configure_file(header-test-template.c ${test_stdc_file} @ONLY)
foreach(stdc_version ${TEST_STDC_VERSIONS})
add_header_test(
"${header}_c${stdc_version}_test"
${test_stdc_file}
${target}
"c${stdc_version}"
)
add_header_test(
"${header}_gnu${stdc_version}_test"
${test_stdc_file}
${target}
"gnu${stdc_version}"
)
endforeach()
set(test_stdcxx_file "${CMAKE_CURRENT_BINARY_DIR}/${header}_test.cpp")
configure_file(header-test-template.c ${test_stdcxx_file} @ONLY)
foreach(stdcxx_version ${TEST_STDCXX_VERSIONS})
add_header_test(
"${header}_cpp${stdcxx_version}_test"
${test_stdcxx_file}
${target}
"c++${stdcxx_version}"
)
add_header_test(
"${header}_gnucpp${stdcxx_version}_test"
${test_stdcxx_file}
${target}
"gnu++${stdcxx_version}"
)
endforeach()
endforeach()