[libc] Switch to using the generic `<gpuintrin.h>` implementations (#121810)
[llvm-project.git] / libc / test / UnitTest / CMakeLists.txt
blob570bd600d1a4306d3a17289a25e9610e7113c972
1 function(add_unittest_framework_library name)
2   cmake_parse_arguments(
3     "TEST_LIB"
4     "" # No optional arguments
5     "" # No single value arguments
6     "SRCS;HDRS;DEPENDS" # Multi value arguments
7     ${ARGN}
8   )
9   if(NOT TEST_LIB_SRCS)
10     message(FATAL_ERROR "'add_unittest_framework_library' requires SRCS; for "
11                         "header only libraries, use 'add_header_library'")
12   endif()
14   foreach(lib IN ITEMS ${name}.unit ${name}.hermetic)
15     add_library(
16       ${lib}
17       STATIC
18       EXCLUDE_FROM_ALL
19       ${TEST_LIB_SRCS}
20       ${TEST_LIB_HDRS}
21     )
22     target_include_directories(${lib} PRIVATE ${LIBC_SOURCE_DIR})
23     if(TARGET libc.src.time.clock)
24       target_compile_definitions(${lib} PRIVATE TARGET_SUPPORTS_CLOCK)
25     endif()
26   endforeach()
28   if(LLVM_LIBC_FULL_BUILD)
29     # TODO: Build test framework with LIBC_FULL_BUILD in full build mode after
30     # making LibcFPExceptionHelpers and LibcDeathTestExecutors hermetic.
31     set(LLVM_LIBC_FULL_BUILD "")
32     _get_common_test_compile_options(compile_options "" "")
33     target_compile_options(${name}.unit PRIVATE ${compile_options})
34     set(LLVM_LIBC_FULL_BUILD ON)
35   else()
36     _get_common_test_compile_options(compile_options "" "")
37     target_compile_options(${name}.unit PRIVATE ${compile_options})
38 endif()
40   _get_hermetic_test_compile_options(compile_options "")
41   target_include_directories(${name}.hermetic PRIVATE ${LIBC_INCLUDE_DIR})
42   target_compile_options(${name}.hermetic PRIVATE ${compile_options} -nostdinc++)
44   if(TEST_LIB_DEPENDS)
45     foreach(dep IN ITEMS ${TEST_LIB_DEPENDS})
46       if(TARGET ${dep}.unit)
47         add_dependencies(${name}.unit ${dep}.unit)
48       else()
49         add_dependencies(${name}.unit ${dep})
50       endif()
51       if(TARGET ${dep}.hermetic)
52         add_dependencies(${name}.hermetic ${dep}.hermetic)
53       else()
54         add_dependencies(${name}.hermetic ${dep})
55       endif()
56     endforeach()
57   endif()
58 endfunction()
60 add_unittest_framework_library(
61   LibcTest
62   SRCS
63     CmakeFilePath.cpp
64     LibcTest.cpp
65     LibcTestMain.cpp
66     TestLogger.cpp
67   HDRS
68     LibcTest.h
69     Test.h
70     TestLogger.h
71   DEPENDS
72     libc.src.__support.big_int
73     libc.src.__support.c_string
74     libc.src.__support.CPP.string
75     libc.src.__support.CPP.string_view
76     libc.src.__support.CPP.type_traits
77     libc.src.__support.fixed_point.fx_rep
78     libc.src.__support.macros.properties.types
79     libc.src.__support.OSUtil.osutil
80     libc.src.__support.uint128
83 set(libc_death_test_srcs LibcDeathTestExecutors.cpp)
84 if(${LIBC_TARGET_OS} STREQUAL "linux")
85   list(APPEND libc_death_test_srcs ExecuteFunctionUnix.cpp)
86 endif()
88 add_unittest_framework_library(
89   LibcDeathTestExecutors
90   SRCS
91     ${libc_death_test_srcs}
92   HDRS
93     ExecuteFunction.h
96 add_unittest_framework_library(
97   LibcHermeticTestSupport
98   SRCS
99     HermeticTestUtils.cpp
102 add_header_library(
103   string_utils
104   HDRS
105     StringUtils.h
106   DEPENDS
107     libc.src.__support.big_int
108     libc.src.__support.CPP.string
109     libc.src.__support.CPP.type_traits
112 add_unittest_framework_library(
113   LibcFPTestHelpers
114   SRCS
115     FEnvSafeTest.cpp
116     RoundingModeUtils.cpp
117   HDRS
118     FEnvSafeTest.h
119     FPMatcher.h
120     RoundingModeUtils.h
121   DEPENDS
122     LibcTest
123     libc.test.UnitTest.string_utils
124     libc.src.__support.CPP.array
125     libc.src.__support.FPUtil.fp_bits
126     libc.src.__support.FPUtil.fpbits_str
127     libc.src.__support.FPUtil.fenv_impl
128     libc.src.__support.FPUtil.rounding_mode
131 add_unittest_framework_library(
132   LibcFPExceptionHelpers
133   SRCS
134     FPExceptMatcher.cpp
135   HDRS
136     FPExceptMatcher.h
137   DEPENDS
138     LibcTest
139     libc.src.__support.FPUtil.fp_bits
140     libc.src.__support.FPUtil.fenv_impl
141     libc.hdr.types.fenv_t
144 add_unittest_framework_library(
145   LibcMemoryHelpers
146   SRCS
147     MemoryMatcher.cpp
148   HDRS
149     MemoryMatcher.h
150   DEPENDS
151     LibcTest
152     libc.src.__support.CPP.span
155 add_unittest_framework_library(
156   LibcPrintfHelpers
157   SRCS
158     PrintfMatcher.cpp
159   HDRS
160     PrintfMatcher.h
161   DEPENDS
162     LibcTest
163     libc.src.__support.FPUtil.fp_bits
164     libc.src.stdio.printf_core.core_structs
165     libc.test.UnitTest.string_utils
168 add_unittest_framework_library(
169   LibcScanfHelpers
170   SRCS
171     ScanfMatcher.cpp
172   HDRS
173     ScanfMatcher.h
174   DEPENDS
175     LibcTest
176     libc.src.__support.FPUtil.fp_bits
177     libc.src.stdio.scanf_core.core_structs
178     libc.test.UnitTest.string_utils
181 add_header_library(
182   ErrnoSetterMatcher
183   HDRS
184     ErrnoSetterMatcher.h
185   DEPENDS
186     libc.src.__support.common
187     libc.src.__support.FPUtil.fp_bits
188     libc.src.__support.StringUtil.error_to_string
189     libc.src.errno.errno