578 lines · plain
1add_custom_target(libc_include_tests)2add_dependencies(check-libc libc_include_tests)3 4add_libc_test(5 assert_test6 SUITE7 libc_include_tests8 SRCS9 assert_test.cpp10 DEPENDS11 libc.include.llvm-libc-macros.assert_macros12)13 14add_libc_test(15 complex_test16 SUITE17 libc_include_tests18 SRCS19 complex_test.cpp20 DEPENDS21 libc.include.llvm-libc-macros.complex_macros22)23 24add_libc_test(25 sys_queue_test26 SUITE27 libc_include_tests28 SRCS29 sys/queue_test.cpp30 DEPENDS31 libc.include.llvm-libc-macros.sys_queue_macros32 libc.src.__support.char_vector33 libc.src.__support.CPP.string34 COMPILE_OPTIONS35 # This is needed because the __containerof macro uses statement expression.36 -Wno-gnu-statement-expression-from-macro-expansion37)38 39add_libc_test(40 stdbit_test41 SUITE42 libc_include_tests43 HDRS44 stdbit_stub.h45 SRCS46 stdbit_test.cpp47 DEPENDS48 libc.include.llvm-libc-macros.stdbit_macros49 libc.include.llvm_libc_common_h50 libc.include.stdbit51 # Intentionally do not depend on libc.src.stdbit.*. The include test is52 # simply testing the macros provided by stdbit.h, not the implementation53 # of the underlying functions which the type generic macros may dispatch54 # to.55)56add_libc_test(57 stdbit_c_test58 C_TEST59 UNIT_TEST_ONLY60 SUITE61 libc_include_tests62 HDRS63 stdbit_stub.h64 SRCS65 stdbit_test.c66 COMPILE_OPTIONS67 -Wall68 -Werror69 DEPENDS70 libc.include.llvm-libc-macros.stdbit_macros71 libc.include.llvm_libc_common_h72 libc.include.stdbit73 libc.src.assert.__assert_fail74 # Intentionally do not depend on libc.src.stdbit.*. The include test is75 # simply testing the macros provided by stdbit.h, not the implementation76 # of the underlying functions which the type generic macros may dispatch77 # to.78)79 80add_libc_test(81 stdckdint_test82 SUITE83 libc_include_tests84 SRCS85 stdckdint_test.cpp86 DEPENDS87 libc.include.llvm-libc-macros.stdckdint_macros88)89 90add_libc_test(91 issubnormal_test92 SUITE93 libc_include_tests94 SRCS95 issubnormal_test.cpp96 DEPENDS97 libc.include.llvm-libc-macros.math_function_macros98)99 100add_libc_test(101 issubnormalf_test102 SUITE103 libc_include_tests104 SRCS105 issubnormalf_test.cpp106 DEPENDS107 libc.include.llvm-libc-macros.math_function_macros108)109 110add_libc_test(111 issubnormall_test112 SUITE113 libc_include_tests114 SRCS115 issubnormall_test.cpp116 DEPENDS117 libc.include.llvm-libc-macros.math_function_macros118)119 120add_libc_test(121 isnormal_test122 SUITE123 libc_include_tests124 SRCS125 isnormal_test.cpp126 DEPENDS127 libc.include.llvm-libc-macros.math_function_macros128)129 130add_libc_test(131 isnormalf_test132 SUITE133 libc_include_tests134 SRCS135 isnormalf_test.cpp136 DEPENDS137 libc.include.llvm-libc-macros.math_function_macros138)139 140add_libc_test(141 isnormall_test142 SUITE143 libc_include_tests144 SRCS145 isnormall_test.cpp146 DEPENDS147 libc.include.llvm-libc-macros.math_function_macros148)149 150add_libc_test(151 fpclassify_test152 SUITE153 libc_include_tests154 SRCS155 fpclassify_test.cpp156 DEPENDS157 libc.include.llvm-libc-macros.math_function_macros158)159 160add_libc_test(161 fpclassifyf_test162 SUITE163 libc_include_tests164 SRCS165 fpclassifyf_test.cpp166 DEPENDS167 libc.include.llvm-libc-macros.math_function_macros168)169 170add_libc_test(171 fpclassifyl_test172 SUITE173 libc_include_tests174 SRCS175 fpclassifyl_test.cpp176 DEPENDS177 libc.include.llvm-libc-macros.math_function_macros178)179 180add_libc_test(181 iszero_test182 SUITE183 libc_include_tests184 SRCS185 iszero_test.cpp186 DEPENDS187 libc.include.llvm-libc-macros.math_function_macros188)189 190add_libc_test(191 iszerof_test192 SUITE193 libc_include_tests194 SRCS195 iszerof_test.cpp196 DEPENDS197 libc.include.llvm-libc-macros.math_function_macros198)199 200add_libc_test(201 iszerol_test202 SUITE203 libc_include_tests204 SRCS205 iszerol_test.cpp206 DEPENDS207 libc.include.llvm-libc-macros.math_function_macros208)209 210add_libc_test(211 netinet_in_test212 SUITE213 libc_include_tests214 SRCS215 netinet_in_test.cpp216 DEPENDS217 libc.include.llvm-libc-macros.netinet_in_macros218)219 220add_libc_test(221 signbit_test222 SUITE223 libc_include_tests224 SRCS225 signbit_test.cpp226 DEPENDS227 libc.include.llvm-libc-macros.math_function_macros228)229 230add_libc_test(231 signbitf_test232 SUITE233 libc_include_tests234 SRCS235 signbitf_test.cpp236 DEPENDS237 libc.include.llvm-libc-macros.math_function_macros238)239 240add_libc_test(241 signbitl_test242 SUITE243 libc_include_tests244 SRCS245 signbitl_test.cpp246 DEPENDS247 libc.include.llvm-libc-macros.math_function_macros248)249 250add_libc_test(251 isnan_test252 SUITE253 libc_include_tests254 SRCS255 isnan_test.cpp256 DEPENDS257 libc.include.llvm-libc-macros.math_function_macros258)259 260add_libc_test(261 isnanf_test262 SUITE263 libc_include_tests264 SRCS265 isnanf_test.cpp266 DEPENDS267 libc.include.llvm-libc-macros.math_function_macros268)269 270add_libc_test(271 isnanl_test272 SUITE273 libc_include_tests274 SRCS275 isnanl_test.cpp276 DEPENDS277 libc.include.llvm-libc-macros.math_function_macros278)279 280add_libc_test(281 isinf_test282 SUITE283 libc_include_tests284 SRCS285 isinf_test.cpp286 DEPENDS287 libc.include.llvm-libc-macros.math_function_macros288)289 290add_libc_test(291 isinff_test292 SUITE293 libc_include_tests294 SRCS295 isinff_test.cpp296 DEPENDS297 libc.include.llvm-libc-macros.math_function_macros298)299 300add_libc_test(301 isinfl_test302 SUITE303 libc_include_tests304 SRCS305 isinfl_test.cpp306 DEPENDS307 libc.include.llvm-libc-macros.math_function_macros308)309 310add_libc_test(311 isfinite_test312 SUITE313 libc_include_tests314 SRCS315 isfinite_test.cpp316 DEPENDS317 libc.include.llvm-libc-macros.math_function_macros318)319 320add_libc_test(321 isfinitef_test322 SUITE323 libc_include_tests324 SRCS325 isfinitef_test.cpp326 DEPENDS327 libc.include.llvm-libc-macros.math_function_macros328)329 330add_libc_test(331 isfinitel_test332 SUITE333 libc_include_tests334 SRCS335 isfinitel_test.cpp336 DEPENDS337 libc.include.llvm-libc-macros.math_function_macros338)339 340add_libc_test(341 signbit_c_test342 C_TEST343 UNIT_TEST_ONLY344 SUITE345 libc_include_tests346 SRCS347 signbit_test.c348 COMPILE_OPTIONS349 -Wall350 -Werror351 DEPENDS352 libc.include.llvm-libc-macros.math_function_macros353)354 355add_libc_test(356 isnan_c_test357 C_TEST358 UNIT_TEST_ONLY359 SUITE360 libc_include_tests361 SRCS362 isnan_test.c363 COMPILE_OPTIONS364 -Wall365 -Werror366 DEPENDS367 libc.include.llvm-libc-macros.math_function_macros368)369 370add_libc_test(371 isnormal_c_test372 C_TEST373 UNIT_TEST_ONLY374 SUITE375 libc_include_tests376 SRCS377 isnormal_test.c378 COMPILE_OPTIONS379 -Wall380 -Werror381 DEPENDS382 libc.include.llvm-libc-macros.math_function_macros383)384 385# TODO(https://github.com/llvm/llvm-project/issues/114618): fix linkage failures386# add_libc_test(387# issignaling_c_test388# C_TEST389# UNIT_TEST_ONLY390# SUITE391# libc_include_tests392# SRCS393# issignaling_test.c394# COMPILE_OPTIONS395# -Wall396# -Werror397# DEPENDS398# libc.include.llvm-libc-macros.math_function_macros399# libc.src.math.issignaling400# libc.src.math.issignalingf401# libc.src.math.issignalingl402# )403 404# add_libc_test(405# iscanonical_c_test406# C_TEST407# UNIT_TEST_ONLY408# SUITE409# libc_include_tests410# SRCS411# iscanonical_test.c412# COMPILE_OPTIONS413# -Wall414# -Werror415# DEPENDS416# libc.include.llvm-libc-macros.math_function_macros417# libc.src.math.iscanonical418# libc.src.math.iscanonicalf419# libc.src.math.iscanonicall420# )421 422add_libc_test(423 isinf_c_test424 C_TEST425 UNIT_TEST_ONLY426 SUITE427 libc_include_tests428 SRCS429 isinf_test.c430 COMPILE_OPTIONS431 -Wall432 -Werror433 DEPENDS434 libc.include.llvm-libc-macros.math_function_macros435)436 437add_libc_test(438 isfinite_c_test439 C_TEST440 UNIT_TEST_ONLY441 SUITE442 libc_include_tests443 SRCS444 isfinite_test.c445 COMPILE_OPTIONS446 -Wall447 -Werror448 DEPENDS449 libc.include.llvm-libc-macros.math_function_macros450)451 452add_libc_test(453 issubnormal_c_test454 C_TEST455 UNIT_TEST_ONLY456 SUITE457 libc_include_tests458 SRCS459 issubnormal_test.c460 COMPILE_OPTIONS461 -Wall462 -Werror463 DEPENDS464 libc.include.llvm-libc-macros.math_function_macros465)466 467add_libc_test(468 fpclassify_c_test469 C_TEST470 UNIT_TEST_ONLY471 SUITE472 libc_include_tests473 SRCS474 fpclassify_test.c475 COMPILE_OPTIONS476 -Wall477 -Werror478 DEPENDS479 libc.include.llvm-libc-macros.math_function_macros480)481 482add_libc_test(483 iszero_c_test484 C_TEST485 UNIT_TEST_ONLY486 SUITE487 libc_include_tests488 SRCS489 iszero_test.c490 COMPILE_OPTIONS491 -Wall492 -Werror493 DEPENDS494 libc.include.llvm-libc-macros.math_function_macros495)496 497add_libc_test(498 math_constants_c_test499 C_TEST500 UNIT_TEST_ONLY501 SUITE502 libc_include_tests503 SRCS504 math_constants_test.c505 COMPILE_OPTIONS506 -Wall507 -Werror508 DEPENDS509 libc.include.llvm-libc-macros.math_macros510)511 512# Test `#include <...>` of each header in each available language mode.513# This is gated on -DLLVM_LIBC_BUILD_HEADER_TESTS=ON until all the bugs514# in headers are fixed so the tests all compile.515set(TEST_STDC_VERSIONS 89;99;11;17;23)516set(TEST_STDCXX_VERSIONS 03;11;14;17;20;23;26)517 518function(add_header_test target_name source_file deps std_mode)519 if(LLVM_LIBC_BUILD_HEADER_TESTS)520 add_libc_test(521 ${target_name}522 C_TEST523 HERMETIC_TEST_ONLY524 SUITE525 libc_include_tests526 SRCS527 ${source_file}528 COMPILE_OPTIONS529 -Werror530 -Wsystem-headers531 -Wall532 -Wextra533 -std=${std_mode}534 DEPENDS535 ${deps}536 )537 endif()538endfunction()539 540foreach(target ${TARGET_PUBLIC_HEADERS})541 string(REPLACE "libc.include." "" header ${target})542 get_target_property(HEADER_NAME ${target} HEADER_NAME)543 544 set(test_stdc_file "${CMAKE_CURRENT_BINARY_DIR}/${header}_test.c")545 configure_file(header-test-template.c ${test_stdc_file} @ONLY)546 foreach(stdc_version ${TEST_STDC_VERSIONS})547 add_header_test(548 "${header}_c${stdc_version}_test"549 ${test_stdc_file}550 ${target}551 "c${stdc_version}"552 )553 add_header_test(554 "${header}_gnu${stdc_version}_test"555 ${test_stdc_file}556 ${target}557 "gnu${stdc_version}"558 )559 endforeach()560 561 set(test_stdcxx_file "${CMAKE_CURRENT_BINARY_DIR}/${header}_test.cpp")562 configure_file(header-test-template.c ${test_stdcxx_file} @ONLY)563 foreach(stdcxx_version ${TEST_STDCXX_VERSIONS})564 add_header_test(565 "${header}_cpp${stdcxx_version}_test"566 ${test_stdcxx_file}567 ${target}568 "c++${stdcxx_version}"569 )570 add_header_test(571 "${header}_gnucpp${stdcxx_version}_test"572 ${test_stdcxx_file}573 ${target}574 "gnu++${stdcxx_version}"575 )576 endforeach()577endforeach()578