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>
200 lines
4.6 KiB
CMake
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
|
|
)
|