Revert "[lldb][test] Remove compiler version check and use regex" (#124101)
[llvm-project.git] / libc / test / src / stdio / CMakeLists.txt
blobe17f8d8c101a96590ae5f19f44be0b310550f395
1 add_custom_target(libc_stdio_unittests)
3 add_libc_test(
4   fileop_test
5   SUITE
6     libc_stdio_unittests
7   SRCS
8     fileop_test.cpp
9   DEPENDS
10     libc.include.stdio
11     libc.src.errno.errno
12     libc.src.stdio.clearerr
13     libc.src.stdio.fclose
14     libc.src.stdio.feof
15     libc.src.stdio.ferror
16     libc.src.stdio.fflush
17     libc.src.stdio.fileno
18     libc.src.stdio.fopen
19     libc.src.stdio.fputs
20     libc.src.stdio.fread
21     libc.src.stdio.fseek
22     libc.src.stdio.fwrite
25 add_libc_test(
26   ungetc_test
27   SUITE
28     libc_stdio_unittests
29   SRCS
30     ungetc_test.cpp
31   DEPENDS
32     libc.include.stdio
33     libc.src.stdio.fclose
34     libc.src.stdio.fopen
35     libc.src.stdio.fread
36     libc.src.stdio.fseek
37     libc.src.stdio.fwrite
38     libc.src.stdio.ungetc
41 add_libc_test(
42   setbuf_test
43   SUITE
44     libc_stdio_unittests
45   SRCS
46     setbuf_test.cpp
47   DEPENDS
48     libc.include.stdio
49     libc.src.stdio.fclose
50     libc.src.stdio.fopen
51     libc.src.stdio.fread
52     libc.src.stdio.fwrite
53     libc.src.stdio.setbuf
54     libc.src.stdio.ungetc
57 add_libc_test(
58   setvbuf_test
59   SUITE
60     libc_stdio_unittests
61   SRCS
62     setvbuf_test.cpp
63   DEPENDS
64     libc.include.stdio
65     libc.src.errno.errno
66     libc.src.stdio.fclose
67     libc.src.stdio.fopen
68     libc.src.stdio.fread
69     libc.src.stdio.fwrite
70     libc.src.stdio.setvbuf
73 add_libc_test(
74   unlocked_fileop_test
75   SUITE
76     libc_stdio_unittests
77   SRCS
78     unlocked_fileop_test.cpp
79   DEPENDS
80     libc.include.stdio
81     libc.src.errno.errno
82     libc.src.stdio.clearerr_unlocked
83     libc.src.stdio.fclose
84     libc.src.stdio.feof_unlocked
85     libc.src.stdio.ferror_unlocked
86     libc.src.stdio.flockfile
87     libc.src.stdio.fopen
88     libc.src.stdio.fread_unlocked
89     libc.src.stdio.funlockfile
90     libc.src.stdio.fwrite_unlocked
93 add_libc_test(
94   fopencookie_test
95   SUITE
96     libc_stdio_unittests
97   SRCS
98     fopencookie_test.cpp
99   DEPENDS
100     libc.include.stdio
101     libc.hdr.types.size_t
102     libc.src.errno.errno
103     libc.src.stdio.clearerr
104     libc.src.stdio.fclose
105     libc.src.stdio.feof
106     libc.src.stdio.ferror
107     libc.src.stdio.fflush
108     libc.src.stdio.fopencookie
109     libc.src.stdio.fread
110     libc.src.stdio.fseek
111     libc.src.stdio.fwrite
112   LINK_LIBRARIES
113     LibcMemoryHelpers
116 if(LIBC_CONF_PRINTF_DISABLE_FLOAT)
117   list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_FLOAT")
118 endif()
119 if(LIBC_CONF_PRINTF_FLOAT_TO_STR_USE_DYADIC_FLOAT)
120   list(APPEND sprintf_test_copts "-DLIBC_COPT_FLOAT_TO_STR_REDUCED_PRECISION")
121 endif()
122 if(LIBC_CONF_PRINTF_DISABLE_INDEX_MODE)
123   list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_INDEX_MODE")
124 endif()
125 if(LIBC_CONF_PRINTF_DISABLE_WRITE_INT)
126   list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_WRITE_INT")
127 endif()
128 if(LIBC_CONF_PRINTF_DISABLE_FIXED_POINT)
129   list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_FIXED_POINT")
130 endif()
131 if(LIBC_CONF_PRINTF_DISABLE_STRERROR)
132   list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_STRERROR")
133 endif()
135 add_fp_unittest(
136   sprintf_test
137   UNIT_TEST_ONLY
138   SUITE
139     libc_stdio_unittests
140   SRCS
141     sprintf_test.cpp
142   DEPENDS
143     libc.src.stdio.sprintf
144     libc.src.__support.FPUtil.fp_bits
145     libc.include.inttypes
146   COMPILE_OPTIONS
147     ${sprintf_test_copts}
150 add_libc_test(
151   snprintf_test
152   SUITE
153     libc_stdio_unittests
154   SRCS
155     snprintf_test.cpp
156   DEPENDS
157     libc.src.stdio.snprintf
160 if(LLVM_LIBC_FULL_BUILD)
161   # In fullbuild mode, fprintf's tests use the internal FILE for other functions.
162   list(APPEND fprintf_test_deps
163        libc.src.stdio.fclose
164        libc.src.stdio.ferror
165        libc.src.stdio.fopen
166        libc.src.stdio.fread
167   )
168   # This is to be used for tests which write to libc's platform streams
169   # under full build but write to system-lib's streams otherwise.
170   set(hermetic_test_only HERMETIC_TEST_ONLY)
171 else()
172 # Else in overlay mode they use the system's FILE.
173  set(use_system_file "-DLIBC_COPT_STDIO_USE_SYSTEM_FILE")
174 endif()
176 add_libc_test(
177   fprintf_test
178   SUITE
179     libc_stdio_unittests
180   SRCS
181     fprintf_test.cpp
182   DEPENDS
183     libc.src.stdio.fprintf
184     ${fprintf_test_deps}
185   COMPILE_OPTIONS
186     ${use_system_file}
189 add_libc_test(
190   printf_test
191   ${hermetic_test_only}
192   SUITE
193     libc_stdio_unittests
194   SRCS
195     printf_test.cpp
196   DEPENDS
197     libc.src.stdio.printf
200 add_libc_test(
201    asprintf_test
202    SUITE
203      libc_stdio_unittests
204    SRCS
205      asprintf_test.cpp
206    DEPENDS
207      libc.src.stdio.asprintf
208      libc.src.string.memset
209      libc.include.stdlib
210      libc.src.stdio.sprintf
213 add_fp_unittest(
214   vsprintf_test
215   UNIT_TEST_ONLY
216   SUITE
217     libc_stdio_unittests
218   SRCS
219     vsprintf_test.cpp
220   DEPENDS
221     libc.src.stdio.vsprintf
224 add_libc_test(
225   vsnprintf_test
226   SUITE
227     libc_stdio_unittests
228   SRCS
229     vsnprintf_test.cpp
230   DEPENDS
231     libc.src.stdio.vsnprintf
234 add_libc_test(
235   vfprintf_test
236   SUITE
237     libc_stdio_unittests
238   SRCS
239     vfprintf_test.cpp
240   DEPENDS
241     libc.src.stdio.vfprintf
242     ${fprintf_test_deps}
243   COMPILE_OPTIONS
244     ${use_system_file}
247 add_libc_test(
248   vprintf_test
249   ${hermetic_test_only}
250   SUITE
251     libc_stdio_unittests
252   SRCS
253     vprintf_test.cpp
254   DEPENDS
255     libc.src.stdio.vprintf
258 add_libc_test(
259    vasprintf_test
260    SUITE
261      libc_stdio_unittests
262    SRCS
263      vasprintf_test.cpp
264    DEPENDS
265      libc.src.stdio.vasprintf
266      libc.src.string.memset
267      libc.include.stdlib
268      libc.src.stdio.sprintf
271 if(LLVM_LIBC_FULL_BUILD)
272   # In fullbuild mode, fscanf's tests use the internal FILE for other functions.
273   list(APPEND fscanf_test_deps
274        libc.src.stdio.fclose
275        libc.src.stdio.ferror
276        libc.src.stdio.fopen
277        libc.src.stdio.fwrite
278   )
279 endif()
281 # FIXME: These tests currently fail on AMDGPU due to an optimization bug in the
282 #        `amdgpu-attributor` pass. Disable until that's fixed.
283 if(NOT LIBC_TARGET_ARCHITECTURE_IS_AMDGPU)
284   add_libc_test(
285     fscanf_test
286     SUITE
287       libc_stdio_unittests
288     SRCS
289       fscanf_test.cpp
290     DEPENDS
291       libc.src.stdio.fscanf
292       ${fscanf_test_deps}
293       libc.src.__support.CPP.string_view
294     COMPILE_OPTIONS
295       ${use_system_file}
296   )
298   add_libc_test(
299     vfscanf_test
300     SUITE
301       libc_stdio_unittests
302     SRCS
303       vfscanf_test.cpp
304     DEPENDS
305       libc.src.stdio.vfscanf
306       ${fscanf_test_deps}
307       libc.src.__support.CPP.string_view
308     COMPILE_OPTIONS
309       ${use_system_file}
310   )
311 endif()
313 if(LIBC_CONF_SCANF_DISABLE_FLOAT)
314   list(APPEND sscanf_test_copts "-DLIBC_COPT_SCANF_DISABLE_FLOAT")
315 endif()
316 if(LIBC_CONF_SCANF_DISABLE_INDEX_MODE)
317   list(APPEND sscanf_test_copts "-DLIBC_COPT_SCANF_DISABLE_INDEX_MODE")
318 endif()
320 add_libc_test(
321   sscanf_test
322   SUITE
323     libc_stdio_unittests
324   SRCS
325     sscanf_test.cpp
326   DEPENDS
327     libc.src.stdio.sscanf
328   LINK_LIBRARIES
329     LibcFPTestHelpers
330   COMPILE_OPTIONS
331     ${sscanf_test_copts}
334 add_libc_test(
335   vsscanf_test
336   SUITE
337     libc_stdio_unittests
338   SRCS
339     vsscanf_test.cpp
340   DEPENDS
341     libc.src.stdio.vsscanf
342   LINK_LIBRARIES
343     LibcFPTestHelpers
344   COMPILE_OPTIONS
345     ${sscanf_test_copts}
348 add_libc_test(
349   puts_test
350   HERMETIC_TEST_ONLY # writes to libc's stdout
351   SUITE
352     libc_stdio_unittests
353   SRCS
354     puts_test.cpp
355   DEPENDS
356     libc.src.stdio.puts
359 add_libc_test(
360   fputs_test
361   HERMETIC_TEST_ONLY # writes to libc's stdout and stderr
362   SUITE
363     libc_stdio_unittests
364   SRCS
365     fputs_test.cpp
366   DEPENDS
367     libc.src.stdio.fputs
368     libc.src.stdio.stdout
369     libc.src.stdio.stderr
372 add_libc_test(
373   fputc_test
374   HERMETIC_TEST_ONLY # writes to libc's stdout and stderr
375   SUITE
376     libc_stdio_unittests
377   SRCS
378     fputc_test.cpp
379   DEPENDS
380     libc.src.stdio.fputc
381     libc.src.stdio.putchar
382     libc.src.stdio.stdout
383     libc.src.stdio.stderr
386 add_libc_test(
387   fopen_test
388   SUITE
389     libc_stdio_unittests
390   SRCS
391     fopen_test.cpp
392   DEPENDS
393     libc.src.stdio.fread
394     libc.src.stdio.fwrite
395     libc.src.stdio.fclose
396     libc.src.stdio.fopen
399 add_libc_test(
400   putc_test
401   SUITE
402     libc_stdio_unittests
403   SRCS
404     putc_test.cpp
405   DEPENDS
406     libc.src.stdio.putc
407     libc.src.stdio.fclose
408     libc.src.stdio.ferror
409     libc.src.stdio.fopen
410     libc.src.stdio.fread
413 if(${LIBC_TARGET_OS} STREQUAL "linux")
414   add_libc_test(
415     remove_test
416     SUITE
417       libc_stdio_unittests
418     SRCS
419       remove_test.cpp
420     DEPENDS
421       libc.include.unistd
422       libc.src.errno.errno
423       libc.src.fcntl.open
424       libc.src.stdio.remove
425       libc.src.sys.stat.mkdirat
426       libc.src.unistd.access
427       libc.src.unistd.close
428   )
430   add_libc_test(
431     rename_test
432     SUITE
433       libc_stdio_unittests
434     SRCS
435       rename_test.cpp
436     DEPENDS
437       libc.src.errno.errno
438       libc.src.fcntl.open
439       libc.src.stdio.rename
440       libc.src.unistd.access
441       libc.src.unistd.close
442       libc.test.UnitTest.ErrnoSetterMatcher
443   )
445   add_libc_test(
446     fdopen_test
447     SUITE
448       libc_stdio_unittests
449     SRCS
450       fdopen_test.cpp
451     DEPENDS
452       libc.src.fcntl.open
453       libc.src.stdio.fclose
454       libc.src.stdio.fdopen
455       libc.src.stdio.fgets
456       libc.src.stdio.fputs
457       libc.src.unistd.close
458       libc.test.UnitTest.ErrnoSetterMatcher
459   )
460 endif()
462 add_libc_test(
463   fgetc_test
464   SUITE
465     libc_stdio_unittests
466   SRCS
467     fgetc_test.cpp
468   DEPENDS
469     libc.include.stdio
470     libc.src.errno.errno
471     libc.src.stdio.fclose
472     libc.src.stdio.feof
473     libc.src.stdio.ferror
474     libc.src.stdio.fgetc
475     libc.src.stdio.fopen
476     libc.src.stdio.fwrite
477     libc.src.stdio.getc
480 add_libc_test(
481   fgetc_unlocked_test
482   SUITE
483     libc_stdio_unittests
484   SRCS
485     fgetc_unlocked_test.cpp
486   DEPENDS
487     libc.include.stdio
488     libc.src.errno.errno
489     libc.src.stdio.fclose
490     libc.src.stdio.ferror
491     libc.src.stdio.ferror_unlocked
492     libc.src.stdio.feof
493     libc.src.stdio.feof_unlocked
494     libc.src.stdio.fgetc_unlocked
495     libc.src.stdio.flockfile
496     libc.src.stdio.fopen
497     libc.src.stdio.funlockfile
498     libc.src.stdio.fwrite
499     libc.src.stdio.getc_unlocked
502 add_libc_test(
503   fgets_test
504   SUITE
505     libc_stdio_unittests
506   SRCS
507     fgets_test.cpp
508   DEPENDS
509     libc.include.stdio
510     libc.src.errno.errno
511     libc.src.stdio.fclose
512     libc.src.stdio.feof
513     libc.src.stdio.ferror
514     libc.src.stdio.fgets
515     libc.src.stdio.fopen
516     libc.src.stdio.fwrite
519 add_libc_test(
520   ftell_test
521   SUITE
522     libc_stdio_unittests
523   SRCS
524     ftell_test.cpp
525   DEPENDS
526     libc.include.stdio
527     libc.src.stdio.fclose
528     libc.src.stdio.fflush
529     libc.src.stdio.fopen
530     libc.src.stdio.fread
531     libc.src.stdio.fseek
532     libc.src.stdio.ftell
533     libc.src.stdio.fseeko
534     libc.src.stdio.ftello
535     libc.src.stdio.fwrite
536     libc.src.stdio.setvbuf
539 # Create an output directory for any temporary test files.
540 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testdata)
542 if(LIBC_TARGET_OS_IS_GPU)
543   return()
544 endif()
546 add_subdirectory(printf_core)
547 add_subdirectory(scanf_core)
548 add_subdirectory(testdata)