blob: 7f6e782815c859b13938b5936308846a2180fa8b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
set(libc_test_srcs_common
CmakeFilePath.cpp
LibcTest.cpp
LibcTestMain.cpp
TestLogger.cpp
LibcTest.h
Test.h
TestLogger.h
)
set(libc_death_test_srcs ExecuteFunction.h)
if(${LIBC_TARGET_OS} STREQUAL "linux")
list(APPEND libc_death_test_srcs
LibcDeathTestExecutors.cpp ExecuteFunctionUnix.cpp)
endif()
# The Nvidia 'nvlink' linker does not support static libraries.
if(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX)
set(library_type OBJECT)
else()
set(library_type STATIC)
endif()
add_library(
LibcUnitTest
${library_type}
EXCLUDE_FROM_ALL
${libc_test_srcs_common}
${libc_death_test_srcs}
)
add_library(
LibcHermeticTest
${library_type}
EXCLUDE_FROM_ALL
${libc_test_srcs_common}
HermeticTestUtils.cpp
)
foreach(lib LibcUnitTest LibcHermeticTest)
target_include_directories(${lib} PUBLIC ${LIBC_SOURCE_DIR})
target_compile_options(${lib} PRIVATE -fno-exceptions -fno-rtti)
add_dependencies(${lib}
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.OSUtil.osutil
libc.src.__support.uint128
)
endforeach()
target_include_directories(LibcHermeticTest PRIVATE ${LIBC_BUILD_DIR}/include)
target_compile_options(LibcHermeticTest
PRIVATE ${LIBC_HERMETIC_TEST_COMPILE_OPTIONS} -ffreestanding -nostdlib -nostdlib++)
add_header_library(
string_utils
HDRS
StringUtils.h
DEPENDS
libc.src.__support.CPP.string
libc.src.__support.CPP.type_traits
)
add_library(
LibcFPTestHelpers
FPMatcher.h
RoundingModeUtils.cpp
RoundingModeUtils.h
)
add_dependencies(
LibcFPTestHelpers
LibcUnitTest
libc.test.UnitTest.string_utils
libc.src.__support.FPUtil.fp_bits
libc.src.__support.FPUtil.fenv_impl
libc.test.UnitTest.string_utils
)
add_library(
LibcFPExceptionHelpers
FPExceptMatcher.cpp
FPExceptMatcher.h
)
add_dependencies(
LibcFPExceptionHelpers
LibcUnitTest
libc.src.__support.FPUtil.fp_bits
libc.src.__support.FPUtil.fenv_impl
)
add_library(
LibcMemoryHelpers
${library_type}
MemoryMatcher.h
MemoryMatcher.cpp
)
add_dependencies(
LibcMemoryHelpers
LibcUnitTest
libc.src.__support.CPP.span
)
add_library(
LibcPrintfHelpers
PrintfMatcher.h
PrintfMatcher.cpp
)
add_dependencies(
LibcPrintfHelpers
LibcUnitTest
libc.src.__support.FPUtil.fp_bits
libc.src.stdio.printf_core.core_structs
libc.test.UnitTest.string_utils
)
add_library(
LibcScanfHelpers
ScanfMatcher.h
ScanfMatcher.cpp
)
add_dependencies(
LibcScanfHelpers
LibcUnitTest
libc.src.__support.FPUtil.fp_bits
libc.src.stdio.scanf_core.core_structs
libc.test.UnitTest.string_utils
)
foreach(lib LibcFPTestHelpers LibcFPExceptionHelpers LibcMemoryHelpers
LibcPrintfHelpers LibcScanfHelpers)
target_include_directories(${lib} PUBLIC ${LIBC_SOURCE_DIR})
target_compile_options(${lib} PRIVATE -fno-exceptions -fno-rtti)
target_link_libraries(${lib} LibcUnitTest)
endforeach()
# The GPU needs these flags applied to override the system triple.
if(LIBC_TARGET_ARCHITECTURE_IS_GPU)
foreach(lib LibcMemoryHelpers)
target_include_directories(${lib} PRIVATE ${LIBC_BUILD_DIR}/include)
target_compile_options(${lib}
PRIVATE ${LIBC_HERMETIC_TEST_COMPILE_OPTIONS} -ffreestanding -nostdlib -nostdlib++)
endforeach()
endif()
|