Files
clang-p2996/libc/test/UnitTest/CMakeLists.txt
William Huynh 473dea9b0b [libc] Output all headers with LIBC_CONF_OUTPUT_ALL_HEADERS (#144114)
Following discussion from
https://discourse.llvm.org/t/missing-declarations-in-header-files/86678,
we decided to add a flag to output all headers. Requires #144049.

- Allows outputting all headers
- Minor whitespace change for alignment

---------

Co-authored-by: Michael Jones <michaelrj@google.com>
2025-06-13 14:37:25 -07:00

200 lines
4.6 KiB
CMake

function(add_unittest_framework_library name)
cmake_parse_arguments(
"TEST_LIB"
"" # No optional arguments
"" # No single value arguments
"SRCS;HDRS;DEPENDS" # Multi value arguments
${ARGN}
)
if(NOT TEST_LIB_SRCS)
message(FATAL_ERROR "'add_unittest_framework_library' requires SRCS; for "
"header only libraries, use 'add_header_library'")
endif()
foreach(lib IN ITEMS ${name}.unit ${name}.hermetic)
add_library(
${lib}
STATIC
EXCLUDE_FROM_ALL
${TEST_LIB_SRCS}
${TEST_LIB_HDRS}
)
target_include_directories(${lib} PRIVATE ${LIBC_SOURCE_DIR})
if(TARGET libc.src.time.clock)
target_compile_definitions(${lib} PRIVATE TARGET_SUPPORTS_CLOCK)
endif()
endforeach()
if(LLVM_LIBC_FULL_BUILD)
# TODO: Build test framework with LIBC_FULL_BUILD in full build mode after
# making LibcFPExceptionHelpers and LibcDeathTestExecutors hermetic.
set(LLVM_LIBC_FULL_BUILD "")
_get_common_test_compile_options(compile_options "" "")
target_compile_options(${name}.unit PRIVATE ${compile_options})
set(LLVM_LIBC_FULL_BUILD ON)
else()
_get_common_test_compile_options(compile_options "" "")
target_compile_options(${name}.unit PRIVATE ${compile_options})
endif()
_get_hermetic_test_compile_options(compile_options "")
target_include_directories(${name}.hermetic PRIVATE ${LIBC_INCLUDE_DIR})
target_compile_options(${name}.hermetic PRIVATE ${compile_options} -nostdinc++)
if(TEST_LIB_DEPENDS)
foreach(dep IN ITEMS ${TEST_LIB_DEPENDS})
if(TARGET ${dep}.unit)
add_dependencies(${name}.unit ${dep}.unit)
else()
add_dependencies(${name}.unit ${dep})
endif()
if(TARGET ${dep}.hermetic)
add_dependencies(${name}.hermetic ${dep}.hermetic)
else()
add_dependencies(${name}.hermetic ${dep})
endif()
endforeach()
endif()
endfunction()
add_unittest_framework_library(
LibcTest
SRCS
CmakeFilePath.cpp
LibcTest.cpp
LibcTestMain.cpp
TestLogger.cpp
HDRS
LibcTest.h
Test.h
TestLogger.h
DEPENDS
libc.src.__support.big_int
libc.src.__support.c_string
libc.src.__support.CPP.string
libc.src.__support.CPP.string_view
libc.src.__support.CPP.type_traits
libc.src.__support.fixed_point.fx_rep
libc.src.__support.macros.properties.types
libc.src.__support.OSUtil.osutil
libc.src.__support.uint128
)
set(libc_death_test_srcs LibcDeathTestExecutors.cpp)
if(${LIBC_TARGET_OS} STREQUAL "linux")
list(APPEND libc_death_test_srcs ExecuteFunctionUnix.cpp)
endif()
add_unittest_framework_library(
LibcDeathTestExecutors
SRCS
${libc_death_test_srcs}
HDRS
ExecuteFunction.h
)
add_unittest_framework_library(
LibcHermeticTestSupport
SRCS
HermeticTestUtils.cpp
)
add_header_library(
string_utils
HDRS
StringUtils.h
DEPENDS
libc.src.__support.big_int
libc.src.__support.CPP.string
libc.src.__support.CPP.type_traits
)
add_unittest_framework_library(
LibcFPTestHelpers
SRCS
FEnvSafeTest.cpp
RoundingModeUtils.cpp
HDRS
FEnvSafeTest.h
FPMatcher.h
RoundingModeUtils.h
DEPENDS
LibcTest
libc.test.UnitTest.string_utils
libc.src.__support.CPP.array
libc.src.__support.FPUtil.fp_bits
libc.src.__support.FPUtil.fpbits_str
libc.src.__support.FPUtil.fenv_impl
libc.src.__support.FPUtil.rounding_mode
)
add_unittest_framework_library(
LibcFPExceptionHelpers
SRCS
FPExceptMatcher.cpp
HDRS
FPExceptMatcher.h
DEPENDS
LibcTest
libc.src.__support.FPUtil.fp_bits
libc.src.__support.FPUtil.fenv_impl
libc.hdr.types.fenv_t
)
add_unittest_framework_library(
LibcMemoryHelpers
SRCS
MemoryMatcher.cpp
HDRS
MemoryMatcher.h
DEPENDS
LibcTest
libc.src.__support.CPP.span
)
add_unittest_framework_library(
LibcPrintfHelpers
SRCS
PrintfMatcher.cpp
HDRS
PrintfMatcher.h
DEPENDS
LibcTest
libc.src.__support.FPUtil.fp_bits
libc.src.stdio.printf_core.core_structs
libc.test.UnitTest.string_utils
)
add_unittest_framework_library(
LibcScanfHelpers
SRCS
ScanfMatcher.cpp
HDRS
ScanfMatcher.h
DEPENDS
LibcTest
libc.src.__support.FPUtil.fp_bits
libc.src.stdio.scanf_core.core_structs
libc.test.UnitTest.string_utils
)
add_header_library(
ErrnoSetterMatcher
HDRS
ErrnoSetterMatcher.h
DEPENDS
libc.src.__support.common
libc.src.__support.FPUtil.fp_bits
libc.src.__support.StringUtil.error_to_string
libc.src.errno.errno
)
add_header_library(
ErrnoCheckingTest
HDRS
ErrnoCheckingTest.h
DEPENDS
libc.src.__support.common
libc.src.errno.errno
)