Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / libc / test / src / stdio / CMakeLists.txt
blob9ab2b9f4909bc8f1a143497a4d14e4e321a09556
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.fopen
18     libc.src.stdio.fputs
19     libc.src.stdio.fread
20     libc.src.stdio.fseek
21     libc.src.stdio.fwrite
24 add_libc_test(
25   ungetc_test
26   SUITE
27     libc_stdio_unittests
28   SRCS
29     ungetc_test.cpp
30   DEPENDS
31     libc.include.stdio
32     libc.src.stdio.fclose
33     libc.src.stdio.fopen
34     libc.src.stdio.fread
35     libc.src.stdio.fseek
36     libc.src.stdio.fwrite
37     libc.src.stdio.ungetc
40 add_libc_test(
41   setbuf_test
42   SUITE
43     libc_stdio_unittests
44   SRCS
45     setbuf_test.cpp
46   DEPENDS
47     libc.include.stdio
48     libc.src.stdio.fclose
49     libc.src.stdio.fopen
50     libc.src.stdio.fread
51     libc.src.stdio.fwrite
52     libc.src.stdio.setbuf
53     libc.src.stdio.ungetc
56 add_libc_test(
57   setvbuf_test
58   SUITE
59     libc_stdio_unittests
60   SRCS
61     setvbuf_test.cpp
62   DEPENDS
63     libc.include.stdio
64     libc.src.errno.errno
65     libc.src.stdio.fclose
66     libc.src.stdio.fopen
67     libc.src.stdio.fread
68     libc.src.stdio.fwrite
69     libc.src.stdio.setvbuf
72 add_libc_test(
73   unlocked_fileop_test
74   SUITE
75     libc_stdio_unittests
76   SRCS
77     unlocked_fileop_test.cpp
78   DEPENDS
79     libc.include.stdio
80     libc.src.errno.errno
81     libc.src.stdio.clearerr_unlocked
82     libc.src.stdio.fclose
83     libc.src.stdio.feof_unlocked
84     libc.src.stdio.ferror_unlocked
85     libc.src.stdio.flockfile
86     libc.src.stdio.fopen
87     libc.src.stdio.fread_unlocked
88     libc.src.stdio.funlockfile
89     libc.src.stdio.fwrite_unlocked
92 add_libc_test(
93   fopencookie_test
94   SUITE
95     libc_stdio_unittests
96   SRCS
97     fopencookie_test.cpp
98   DEPENDS
99     libc.include.stdio
100     libc.include.stdlib
101     libc.src.errno.errno
102     libc.src.stdio.clearerr
103     libc.src.stdio.fclose
104     libc.src.stdio.feof
105     libc.src.stdio.ferror
106     libc.src.stdio.fflush
107     libc.src.stdio.fopencookie
108     libc.src.stdio.fread
109     libc.src.stdio.fseek
110     libc.src.stdio.fwrite
111   LINK_LIBRARIES
112     LibcMemoryHelpers
115 if(LIBC_CONF_PRINTF_DISABLE_FLOAT)
116   list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_FLOAT")
117 endif()
118 if(LIBC_CONF_PRINTF_DISABLE_INDEX_MODE)
119   list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_INDEX_MODE")
120 endif()
121 if(LIBC_CONF_PRINTF_DISABLE_WRITE_INT)
122   list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_WRITE_INT")
123 endif()
125 add_fp_unittest(
126   sprintf_test
127   UNIT_TEST_ONLY
128   SUITE
129     libc_stdio_unittests
130   SRCS
131     sprintf_test.cpp
132   DEPENDS
133     libc.src.stdio.sprintf
134     libc.src.__support.FPUtil.fp_bits
135     libc.src.__support.FPUtil.platform_defs
136   COMPILE_OPTIONS
137     ${sprintf_test_copts}
140 add_libc_test(
141   snprintf_test
142   SUITE
143     libc_stdio_unittests
144   SRCS
145     snprintf_test.cpp
146   DEPENDS
147     libc.src.stdio.snprintf
150 if(LLVM_LIBC_FULL_BUILD)
151   # In fullbuild mode, fprintf's tests use the internal FILE for other functions.
152   list(APPEND fprintf_test_deps
153        libc.src.stdio.fclose
154        libc.src.stdio.ferror
155        libc.src.stdio.fopen
156        libc.src.stdio.fread
157   )
158   # This is to be used for tests which write to libc's platform streams
159   # under full build but write to system-lib's streams otherwise.
160   set(hermetic_test_only HERMETIC_TEST_ONLY)
161 else()
162 # Else in overlay mode they use the system's FILE.
163  set(use_system_file "-DLIBC_COPT_STDIO_USE_SYSTEM_FILE")
164 endif()
166 add_libc_test(
167   fprintf_test
168   SUITE
169     libc_stdio_unittests
170   SRCS
171     fprintf_test.cpp
172   DEPENDS
173     libc.src.stdio.fprintf
174     ${fprintf_test_deps}
175   COMPILE_OPTIONS
176     ${use_system_file}
179 add_libc_test(
180   printf_test
181   ${hermetic_test_only}
182   SUITE
183     libc_stdio_unittests
184   SRCS
185     printf_test.cpp
186   DEPENDS
187     libc.src.stdio.printf
190 add_fp_unittest(
191   vsprintf_test
192   UNIT_TEST_ONLY
193   SUITE
194     libc_stdio_unittests
195   SRCS
196     vsprintf_test.cpp
197   DEPENDS
198     libc.src.stdio.vsprintf
201 add_libc_test(
202   vsnprintf_test
203   SUITE
204     libc_stdio_unittests
205   SRCS
206     vsnprintf_test.cpp
207   DEPENDS
208     libc.src.stdio.vsnprintf
211 add_libc_test(
212   vfprintf_test
213   SUITE
214     libc_stdio_unittests
215   SRCS
216     vfprintf_test.cpp
217   DEPENDS
218     libc.src.stdio.vfprintf
219     ${fprintf_test_deps}
220   COMPILE_OPTIONS
221     ${use_system_file}
224 add_libc_test(
225   vprintf_test
226   ${hermetic_test_only}
227   SUITE
228     libc_stdio_unittests
229   SRCS
230     vprintf_test.cpp
231   DEPENDS
232     libc.src.stdio.vprintf
236 if(LLVM_LIBC_FULL_BUILD)
237   # In fullbuild mode, fscanf's tests use the internal FILE for other functions.
238   list(APPEND fscanf_test_deps
239        libc.src.stdio.fclose
240        libc.src.stdio.ferror
241        libc.src.stdio.fopen
242        libc.src.stdio.fwrite
243   )
244 endif()
246 add_libc_test(
247   fscanf_test
248   SUITE
249     libc_stdio_unittests
250   SRCS
251     fscanf_test.cpp
252   DEPENDS
253     libc.src.stdio.fscanf
254     ${fscanf_test_deps}
255     libc.src.__support.CPP.string_view
256   COMPILE_OPTIONS
257     ${use_system_file}
260 add_libc_test(
261   sscanf_test
262   SUITE
263     libc_stdio_unittests
264   SRCS
265     sscanf_test.cpp
266   DEPENDS
267     libc.src.stdio.sscanf
268   LINK_LIBRARIES
269     LibcFPTestHelpers
272 add_libc_test(
273   puts_test
274   HERMETIC_TEST_ONLY # writes to libc's stdout
275   SUITE
276     libc_stdio_unittests
277   SRCS
278     puts_test.cpp
279   DEPENDS
280     libc.src.stdio.puts
283 add_libc_test(
284   fputs_test
285   HERMETIC_TEST_ONLY # writes to libc's stdout and stderr
286   SUITE
287     libc_stdio_unittests
288   SRCS
289     fputs_test.cpp
290   DEPENDS
291     libc.src.stdio.fputs
292     libc.src.stdio.stdout
293     libc.src.stdio.stderr
296 add_libc_test(
297   fputc_test
298   HERMETIC_TEST_ONLY # writes to libc's stdout and stderr
299   SUITE
300     libc_stdio_unittests
301   SRCS
302     fputc_test.cpp
303   DEPENDS
304     libc.src.stdio.fputc
305     libc.src.stdio.putchar
306     libc.src.stdio.stdout
307     libc.src.stdio.stderr
310 add_libc_test(
311   fopen_test
312   SUITE
313     libc_stdio_unittests
314   SRCS
315     fopen_test.cpp
316   DEPENDS
317     libc.src.stdio.fread
318     libc.src.stdio.fwrite
319     libc.src.stdio.fclose
320     libc.src.stdio.fopen
323 add_libc_test(
324   putc_test
325   SUITE
326     libc_stdio_unittests
327   SRCS
328     putc_test.cpp
329   DEPENDS
330     libc.src.stdio.putc
331     libc.src.stdio.fclose
332     libc.src.stdio.ferror
333     libc.src.stdio.fopen
334     libc.src.stdio.fread
337 if(${LIBC_TARGET_OS} STREQUAL "linux")
338   add_libc_test(
339     remove_test
340     SUITE
341       libc_stdio_unittests
342     SRCS
343       remove_test.cpp
344     DEPENDS
345       libc.include.unistd
346       libc.src.errno.errno
347       libc.src.fcntl.open
348       libc.src.stdio.remove
349       libc.src.sys.stat.mkdirat
350       libc.src.unistd.access
351       libc.src.unistd.close
352   )
353 endif()
355 add_libc_test(
356   fgetc_test
357   SUITE
358     libc_stdio_unittests
359   SRCS
360     fgetc_test.cpp
361   DEPENDS
362     libc.include.stdio
363     libc.src.errno.errno
364     libc.src.stdio.fclose
365     libc.src.stdio.feof
366     libc.src.stdio.ferror
367     libc.src.stdio.fgetc
368     libc.src.stdio.fopen
369     libc.src.stdio.fwrite
370     libc.src.stdio.getc
373 add_libc_test(
374   fgetc_unlocked_test
375   SUITE
376     libc_stdio_unittests
377   SRCS
378     fgetc_unlocked_test.cpp
379   DEPENDS
380     libc.include.stdio
381     libc.src.errno.errno
382     libc.src.stdio.fclose
383     libc.src.stdio.ferror
384     libc.src.stdio.ferror_unlocked
385     libc.src.stdio.feof
386     libc.src.stdio.feof_unlocked
387     libc.src.stdio.fgetc_unlocked
388     libc.src.stdio.flockfile
389     libc.src.stdio.fopen
390     libc.src.stdio.funlockfile
391     libc.src.stdio.fwrite
392     libc.src.stdio.getc_unlocked
395 add_libc_test(
396   fgets_test
397   SUITE
398     libc_stdio_unittests
399   SRCS
400     fgets_test.cpp
401   DEPENDS
402     libc.include.stdio
403     libc.src.errno.errno
404     libc.src.stdio.fclose
405     libc.src.stdio.feof
406     libc.src.stdio.ferror
407     libc.src.stdio.fgets
408     libc.src.stdio.fopen
409     libc.src.stdio.fwrite
412 add_libc_test(
413   ftell_test
414   SUITE
415     libc_stdio_unittests
416   SRCS
417     ftell_test.cpp
418   DEPENDS
419     libc.include.stdio
420     libc.src.stdio.fclose
421     libc.src.stdio.fflush
422     libc.src.stdio.fopen
423     libc.src.stdio.fread
424     libc.src.stdio.fseek
425     libc.src.stdio.ftell
426     libc.src.stdio.fwrite
427     libc.src.stdio.setvbuf
430 # Create an output directory for any temporary test files.
431 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testdata)
433 if(LIBC_TARGET_ARCHITECTURE_IS_GPU)
434   return()
435 endif()
437 add_subdirectory(printf_core)
438 add_subdirectory(scanf_core)
439 add_subdirectory(testdata)