Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / libc / test / src / string / CMakeLists.txt
blob6088289532d771da1195cceb58f9a7209d56b07f
1 add_custom_target(libc-string-tests)
3 add_subdirectory(memory_utils)
5 add_libc_test(
6   bcopy_test
7   SUITE
8     libc-string-tests
9   SRCS
10     bcopy_test.cpp
11   DEPENDS
12     libc.src.string.bcopy
13   LINK_LIBRARIES
14     LibcMemoryHelpers
17 add_header_library(
18   strchr_test_support
19   HDRS
20     StrchrTest.h
23 add_libc_test(
24   index_test
25   SUITE
26     libc-string-tests
27   SRCS
28     index_test.cpp
29   DEPENDS
30     libc.src.string.index
31     .strchr_test_support
34 add_libc_test(
35   memccpy_test
36   SUITE
37     libc-string-tests
38   SRCS
39     memccpy_test.cpp
40   DEPENDS
41     libc.src.string.memccpy
44 add_libc_test(
45   mempcpy_test
46   SUITE
47     libc-string-tests
48   SRCS
49     mempcpy_test.cpp
50   DEPENDS
51     libc.src.string.mempcpy
54 add_libc_test(
55   memmem_test
56   SUITE
57     libc-string-tests
58   SRCS
59     memmem_test.cpp
60   DEPENDS
61     libc.src.string.memmem
64 add_libc_test(
65   memchr_test
66   SUITE
67     libc-string-tests
68   SRCS
69     memchr_test.cpp
70   DEPENDS
71     libc.src.string.memchr
74 add_libc_test(
75   memrchr_test
76   SUITE
77     libc-string-tests
78   SRCS
79     memrchr_test.cpp
80   DEPENDS
81     libc.src.string.memrchr
84 add_libc_test(
85   rindex_test
86   SUITE
87     libc-string-tests
88   SRCS
89     rindex_test.cpp
90   DEPENDS
91     libc.src.string.rindex
92     .strchr_test_support
95 add_libc_test(
96   stpcpy_test
97   SUITE
98     libc-string-tests
99   SRCS
100     stpcpy_test.cpp
101   DEPENDS
102     libc.src.string.stpcpy
105 add_libc_test(
106   stpncpy_test
107   SUITE
108     libc-string-tests
109   SRCS
110     stpncpy_test.cpp
111   DEPENDS
112     libc.src.string.stpncpy
115 add_libc_test(
116   strcat_test
117   SUITE
118     libc-string-tests
119   SRCS
120     strcat_test.cpp
121   DEPENDS
122     libc.src.string.strcat
125 add_libc_test(
126   strchr_test
127   SUITE
128     libc-string-tests
129   SRCS
130     strchr_test.cpp
131   DEPENDS
132     libc.src.string.strchr
133     .strchr_test_support
136 add_libc_test(
137   strchrnul_test
138   SUITE
139     libc-string-tests
140   SRCS
141     strchrnul_test.cpp
142   DEPENDS
143     libc.src.string.strchrnul
146 add_libc_test(
147   strcmp_test
148   SUITE
149     libc-string-tests
150   SRCS
151     strcmp_test.cpp
152   DEPENDS
153     libc.src.string.strcmp
156 add_libc_test(
157   strcasecmp_test
158   SUITE
159     libc-string-tests
160   SRCS
161     strcasecmp_test.cpp
162   DEPENDS
163     libc.src.string.strcasecmp
166 add_libc_test(
167   strcasestr_test
168   SUITE
169     libc-string-tests
170   SRCS
171     strcasestr_test.cpp
172   DEPENDS
173     libc.src.string.strcasestr
176 add_libc_test(
177   strcoll_test
178   SUITE
179     libc-string-tests
180   SRCS
181     strcoll_test.cpp
182   DEPENDS
183     libc.src.string.strcoll
186 add_libc_test(
187   strcpy_test
188   SUITE
189     libc-string-tests
190   SRCS
191     strcpy_test.cpp
192   DEPENDS
193     libc.src.string.strcpy
196 add_libc_test(
197   strcspn_test
198   SUITE
199     libc-string-tests
200   SRCS
201     strcspn_test.cpp
202   DEPENDS
203     libc.src.string.strcspn
206 add_libc_test(
207   strdup_test
208   SUITE
209     libc-string-tests
210   SRCS
211     strdup_test.cpp
212   DEPENDS
213     libc.include.stdlib
214     libc.src.string.strdup
215     libc.src.errno.errno
218 add_libc_test(
219   strerror_test
220   SUITE
221     libc-string-tests
222   SRCS
223     strerror_test.cpp
224   DEPENDS
225     libc.src.string.strerror
229 add_libc_test(
230   strerror_r_test
231   SUITE
232     libc-string-tests
233   SRCS
234     strerror_r_test.cpp
235   DEPENDS
236     libc.src.string.strerror_r
239 add_libc_test(
240   strlcat_test
241   SUITE
242     libc-string-tests
243   SRCS
244     strlcat_test.cpp
245   DEPENDS
246     libc.src.string.strlcat
249 add_libc_test(
250   strlcpy_test
251   SUITE
252     libc-string-tests
253   SRCS
254     strlcpy_test.cpp
255   DEPENDS
256     libc.src.string.strlcpy
259 add_libc_test(
260   strlen_test
261   SUITE
262     libc-string-tests
263   SRCS
264     strlen_test.cpp
265   DEPENDS
266     libc.src.string.strlen
269 add_libc_test(
270   strncat_test
271   SUITE
272     libc-string-tests
273   SRCS
274     strncat_test.cpp
275   DEPENDS
276     libc.src.string.strncat
279 add_libc_test(
280   strncmp_test
281   SUITE
282     libc-string-tests
283   SRCS
284     strncmp_test.cpp
285   DEPENDS
286     libc.src.string.strncmp
289 add_libc_test(
290   strncasecmp_test
291   SUITE
292     libc-string-tests
293   SRCS
294     strncasecmp_test.cpp
295   DEPENDS
296     libc.src.string.strncasecmp
299 add_libc_test(
300   strncpy_test
301   SUITE
302     libc-string-tests
303   SRCS
304     strncpy_test.cpp
305   DEPENDS
306     libc.src.string.strncpy
309 add_libc_test(
310   strndup_test
311   SUITE
312     libc-string-tests
313   SRCS
314     strndup_test.cpp
315   DEPENDS
316     libc.include.stdlib
317     libc.src.string.strndup
320 add_libc_test(
321   strnlen_test
322   SUITE
323     libc-string-tests
324   SRCS
325     strnlen_test.cpp
326   DEPENDS
327     libc.src.string.strnlen
330 add_libc_test(
331   strpbrk_test
332   SUITE
333     libc-string-tests
334   SRCS
335     strpbrk_test.cpp
336   DEPENDS
337     libc.src.string.strpbrk
340 add_libc_test(
341   strrchr_test
342   SUITE
343     libc-string-tests
344   SRCS
345     strrchr_test.cpp
346   DEPENDS
347     libc.src.string.strrchr
348     .strchr_test_support
351 add_libc_test(
352   strsep_test
353   SUITE
354     libc-string-tests
355   SRCS
356     strsep_test.cpp
357   DEPENDS
358     libc.src.string.strsep
361 add_libc_test(
362   strsignal_test
363   SUITE
364     libc-string-tests
365   SRCS
366     strsignal_test.cpp
367   DEPENDS
368     libc.src.string.strsignal
371 add_libc_test(
372   strspn_test
373   SUITE
374     libc-string-tests
375   SRCS
376     strspn_test.cpp
377   DEPENDS
378     libc.src.string.strspn
381 add_libc_test(
382   strstr_test
383   SUITE
384     libc-string-tests
385   SRCS
386     strstr_test.cpp
387   DEPENDS
388     libc.src.string.strstr
391 add_libc_test(
392   strtok_test
393   SUITE
394     libc-string-tests
395   SRCS
396     strtok_test.cpp
397   DEPENDS
398     libc.src.string.strtok
401 add_libc_test(
402   strtok_r_test
403   SUITE
404     libc-string-tests
405   SRCS
406     strtok_r_test.cpp
407   DEPENDS
408     libc.src.string.strtok_r
411 add_libc_test(
412   strxfrm_test
413   SUITE
414     libc-string-tests
415   SRCS
416     strxfrm_test.cpp
417   DEPENDS
418     libc.src.string.strxfrm
421 # Tests all implementations that can run on the target CPU.
422 function(add_libc_multi_impl_test name)
423   get_property(fq_implementations GLOBAL PROPERTY ${name}_implementations)
424   foreach(fq_config_name IN LISTS fq_implementations)
425     get_target_property(required_cpu_features ${fq_config_name} REQUIRE_CPU_FEATURES)
426     cpu_supports(can_run "${required_cpu_features}")
427     if(can_run)
428       string(FIND ${fq_config_name} "." last_dot_loc REVERSE)
429       math(EXPR name_loc "${last_dot_loc} + 1")
430       string(SUBSTRING ${fq_config_name} ${name_loc} -1 target_name)
431       add_libc_test(
432         ${target_name}_test
433         SUITE
434           libc-string-tests
435         COMPILE_OPTIONS
436           ${LIBC_COMPILE_OPTIONS_NATIVE}
437         LINK_LIBRARIES
438           LibcMemoryHelpers
439         ${ARGN}
440         DEPENDS
441           ${fq_config_name}
442           libc.src.__support.macros.sanitizer
443       )
444       get_fq_target_name(${fq_config_name}_test fq_target_name)
445     else()
446       message(STATUS "Skipping test for '${fq_config_name}' insufficient host cpu features '${required_cpu_features}'")
447     endif()
448   endforeach()
449 endfunction()
451 add_libc_multi_impl_test(bcmp SRCS bcmp_test.cpp)
452 add_libc_multi_impl_test(bzero SRCS bzero_test.cpp)
453 add_libc_multi_impl_test(memcmp SRCS memcmp_test.cpp)
454 add_libc_multi_impl_test(memcpy SRCS memcpy_test.cpp)
455 add_libc_multi_impl_test(memmove SRCS memmove_test.cpp)
456 add_libc_multi_impl_test(memset SRCS memset_test.cpp)