add_custom_target(libc_stdio_unittests) add_libc_test( fileop_test SUITE libc_stdio_unittests SRCS fileop_test.cpp DEPENDS libc.include.stdio libc.src.errno.errno libc.src.stdio.clearerr libc.src.stdio.fclose libc.src.stdio.feof libc.src.stdio.ferror libc.src.stdio.fflush libc.src.stdio.fopen libc.src.stdio.fputs libc.src.stdio.fread libc.src.stdio.fseek libc.src.stdio.fwrite ) add_libc_test( ungetc_test SUITE libc_stdio_unittests SRCS ungetc_test.cpp DEPENDS libc.include.stdio libc.src.stdio.fclose libc.src.stdio.fopen libc.src.stdio.fread libc.src.stdio.fseek libc.src.stdio.fwrite libc.src.stdio.ungetc ) add_libc_test( setbuf_test SUITE libc_stdio_unittests SRCS setbuf_test.cpp DEPENDS libc.include.stdio libc.src.stdio.fclose libc.src.stdio.fopen libc.src.stdio.fread libc.src.stdio.fwrite libc.src.stdio.setbuf libc.src.stdio.ungetc ) add_libc_test( setvbuf_test SUITE libc_stdio_unittests SRCS setvbuf_test.cpp DEPENDS libc.include.stdio libc.src.errno.errno libc.src.stdio.fclose libc.src.stdio.fopen libc.src.stdio.fread libc.src.stdio.fwrite libc.src.stdio.setvbuf ) add_libc_test( unlocked_fileop_test SUITE libc_stdio_unittests SRCS unlocked_fileop_test.cpp DEPENDS libc.include.stdio libc.src.errno.errno libc.src.stdio.clearerr_unlocked libc.src.stdio.fclose libc.src.stdio.feof_unlocked libc.src.stdio.ferror_unlocked libc.src.stdio.flockfile libc.src.stdio.fopen libc.src.stdio.fread_unlocked libc.src.stdio.funlockfile libc.src.stdio.fwrite_unlocked ) add_libc_test( fopencookie_test SUITE libc_stdio_unittests SRCS fopencookie_test.cpp DEPENDS libc.include.stdio libc.include.stdlib libc.src.errno.errno libc.src.stdio.clearerr libc.src.stdio.fclose libc.src.stdio.feof libc.src.stdio.ferror libc.src.stdio.fflush libc.src.stdio.fopencookie libc.src.stdio.fread libc.src.stdio.fseek libc.src.stdio.fwrite LINK_LIBRARIES LibcMemoryHelpers ) if(LIBC_CONF_PRINTF_DISABLE_FLOAT) list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_FLOAT") endif() if(LIBC_CONF_PRINTF_DISABLE_INDEX_MODE) list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_INDEX_MODE") endif() if(LIBC_CONF_PRINTF_DISABLE_WRITE_INT) list(APPEND sprintf_test_copts "-DLIBC_COPT_PRINTF_DISABLE_WRITE_INT") endif() add_fp_unittest( sprintf_test UNIT_TEST_ONLY SUITE libc_stdio_unittests SRCS sprintf_test.cpp DEPENDS libc.src.stdio.sprintf libc.src.__support.FPUtil.fp_bits COMPILE_OPTIONS ${sprintf_test_copts} ) add_libc_test( snprintf_test SUITE libc_stdio_unittests SRCS snprintf_test.cpp DEPENDS libc.src.stdio.snprintf ) if(LLVM_LIBC_FULL_BUILD) # In fullbuild mode, fprintf's tests use the internal FILE for other functions. list(APPEND fprintf_test_deps libc.src.stdio.fclose libc.src.stdio.ferror libc.src.stdio.fopen libc.src.stdio.fread ) # This is to be used for tests which write to libc's platform streams # under full build but write to system-lib's streams otherwise. set(hermetic_test_only HERMETIC_TEST_ONLY) else() # Else in overlay mode they use the system's FILE. set(use_system_file "-DLIBC_COPT_STDIO_USE_SYSTEM_FILE") endif() add_libc_test( fprintf_test SUITE libc_stdio_unittests SRCS fprintf_test.cpp DEPENDS libc.src.stdio.fprintf ${fprintf_test_deps} COMPILE_OPTIONS ${use_system_file} ) add_libc_test( printf_test ${hermetic_test_only} SUITE libc_stdio_unittests SRCS printf_test.cpp DEPENDS libc.src.stdio.printf ) add_fp_unittest( vsprintf_test UNIT_TEST_ONLY SUITE libc_stdio_unittests SRCS vsprintf_test.cpp DEPENDS libc.src.stdio.vsprintf ) add_libc_test( vsnprintf_test SUITE libc_stdio_unittests SRCS vsnprintf_test.cpp DEPENDS libc.src.stdio.vsnprintf ) add_libc_test( vfprintf_test SUITE libc_stdio_unittests SRCS vfprintf_test.cpp DEPENDS libc.src.stdio.vfprintf ${fprintf_test_deps} COMPILE_OPTIONS ${use_system_file} ) add_libc_test( vprintf_test ${hermetic_test_only} SUITE libc_stdio_unittests SRCS vprintf_test.cpp DEPENDS libc.src.stdio.vprintf ) if(LLVM_LIBC_FULL_BUILD) # In fullbuild mode, fscanf's tests use the internal FILE for other functions. list(APPEND fscanf_test_deps libc.src.stdio.fclose libc.src.stdio.ferror libc.src.stdio.fopen libc.src.stdio.fwrite ) endif() add_libc_test( fscanf_test SUITE libc_stdio_unittests SRCS fscanf_test.cpp DEPENDS libc.src.stdio.fscanf ${fscanf_test_deps} libc.src.__support.CPP.string_view COMPILE_OPTIONS ${use_system_file} ) add_libc_test( sscanf_test SUITE libc_stdio_unittests SRCS sscanf_test.cpp DEPENDS libc.src.stdio.sscanf LINK_LIBRARIES LibcFPTestHelpers ) add_libc_test( puts_test HERMETIC_TEST_ONLY # writes to libc's stdout SUITE libc_stdio_unittests SRCS puts_test.cpp DEPENDS libc.src.stdio.puts ) add_libc_test( fputs_test HERMETIC_TEST_ONLY # writes to libc's stdout and stderr SUITE libc_stdio_unittests SRCS fputs_test.cpp DEPENDS libc.src.stdio.fputs libc.src.stdio.stdout libc.src.stdio.stderr ) add_libc_test( fputc_test HERMETIC_TEST_ONLY # writes to libc's stdout and stderr SUITE libc_stdio_unittests SRCS fputc_test.cpp DEPENDS libc.src.stdio.fputc libc.src.stdio.putchar libc.src.stdio.stdout libc.src.stdio.stderr ) add_libc_test( fopen_test SUITE libc_stdio_unittests SRCS fopen_test.cpp DEPENDS libc.src.stdio.fread libc.src.stdio.fwrite libc.src.stdio.fclose libc.src.stdio.fopen ) add_libc_test( putc_test SUITE libc_stdio_unittests SRCS putc_test.cpp DEPENDS libc.src.stdio.putc libc.src.stdio.fclose libc.src.stdio.ferror libc.src.stdio.fopen libc.src.stdio.fread ) if(${LIBC_TARGET_OS} STREQUAL "linux") add_libc_test( remove_test SUITE libc_stdio_unittests SRCS remove_test.cpp DEPENDS libc.include.unistd libc.src.errno.errno libc.src.fcntl.open libc.src.stdio.remove libc.src.sys.stat.mkdirat libc.src.unistd.access libc.src.unistd.close ) endif() add_libc_test( fgetc_test SUITE libc_stdio_unittests SRCS fgetc_test.cpp DEPENDS libc.include.stdio libc.src.errno.errno libc.src.stdio.fclose libc.src.stdio.feof libc.src.stdio.ferror libc.src.stdio.fgetc libc.src.stdio.fopen libc.src.stdio.fwrite libc.src.stdio.getc ) add_libc_test( fgetc_unlocked_test SUITE libc_stdio_unittests SRCS fgetc_unlocked_test.cpp DEPENDS libc.include.stdio libc.src.errno.errno libc.src.stdio.fclose libc.src.stdio.ferror libc.src.stdio.ferror_unlocked libc.src.stdio.feof libc.src.stdio.feof_unlocked libc.src.stdio.fgetc_unlocked libc.src.stdio.flockfile libc.src.stdio.fopen libc.src.stdio.funlockfile libc.src.stdio.fwrite libc.src.stdio.getc_unlocked ) add_libc_test( fgets_test SUITE libc_stdio_unittests SRCS fgets_test.cpp DEPENDS libc.include.stdio libc.src.errno.errno libc.src.stdio.fclose libc.src.stdio.feof libc.src.stdio.ferror libc.src.stdio.fgets libc.src.stdio.fopen libc.src.stdio.fwrite ) add_libc_test( ftell_test SUITE libc_stdio_unittests SRCS ftell_test.cpp DEPENDS libc.include.stdio libc.src.stdio.fclose libc.src.stdio.fflush libc.src.stdio.fopen libc.src.stdio.fread libc.src.stdio.fseek libc.src.stdio.ftell libc.src.stdio.fwrite libc.src.stdio.setvbuf ) # Create an output directory for any temporary test files. file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testdata) if(LIBC_TARGET_ARCHITECTURE_IS_GPU) return() endif() add_subdirectory(printf_core) add_subdirectory(scanf_core) add_subdirectory(testdata)