| # Helper function that creates an alias if a target specific implementation |
| # exists, otherwise it uses a generic one. |
| function(add_stdio_entrypoint_object name) |
| if(TARGET libc.src.stdio.${LIBC_TARGET_OS}.${name}) |
| add_entrypoint_object( |
| ${name} |
| ALIAS |
| DEPENDS |
| .${LIBC_TARGET_OS}.${name} |
| ) |
| elseif(TARGET libc.src.stdio.generic.${name}) |
| add_entrypoint_object( |
| ${name} |
| ALIAS |
| DEPENDS |
| .generic.${name} |
| ) |
| endif() |
| endfunction(add_stdio_entrypoint_object) |
| |
| if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS}) |
| add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS}) |
| endif() |
| |
| if(NOT LIBC_TARGET_ARCHITECTURE_IS_GPU) |
| add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/generic) |
| endif() |
| |
| if(NOT LLVM_LIBC_FULL_BUILD) |
| list(APPEND use_system_file "COMPILE_OPTIONS" "-DLIBC_COPT_STDIO_USE_SYSTEM_FILE") |
| endif() |
| |
| add_entrypoint_object( |
| flockfile |
| SRCS |
| flockfile.cpp |
| HDRS |
| flockfile.h |
| DEPENDS |
| libc.include.stdio |
| libc.src.__support.File.file |
| libc.src.__support.File.platform_file |
| ) |
| |
| add_entrypoint_object( |
| funlockfile |
| SRCS |
| funlockfile.cpp |
| HDRS |
| funlockfile.h |
| DEPENDS |
| libc.include.stdio |
| libc.src.__support.File.file |
| libc.src.__support.File.platform_file |
| ) |
| |
| add_entrypoint_object( |
| fopencookie |
| SRCS |
| fopencookie.cpp |
| HDRS |
| fopencookie.h |
| DEPENDS |
| libc.include.stdio |
| libc.src.__support.CPP.new |
| libc.src.__support.File.file |
| ) |
| |
| add_entrypoint_object( |
| setbuf |
| SRCS |
| setbuf.cpp |
| HDRS |
| setbuf.h |
| DEPENDS |
| libc.src.errno.errno |
| libc.include.stdio |
| libc.src.__support.File.file |
| libc.src.__support.File.platform_file |
| ) |
| |
| add_entrypoint_object( |
| setvbuf |
| SRCS |
| setvbuf.cpp |
| HDRS |
| setvbuf.h |
| DEPENDS |
| libc.src.errno.errno |
| libc.include.stdio |
| libc.src.__support.File.file |
| libc.src.__support.File.platform_file |
| ) |
| |
| list(APPEND scanf_deps |
| libc.src.__support.arg_list |
| libc.src.stdio.scanf_core.vfscanf_internal |
| ) |
| |
| if(LLVM_LIBC_FULL_BUILD) |
| list(APPEND scanf_deps |
| libc.src.__support.File.file |
| libc.src.__support.File.platform_file |
| libc.src.__support.File.platform_stdin |
| ) |
| endif() |
| |
| add_entrypoint_object( |
| sscanf |
| SRCS |
| sscanf.cpp |
| HDRS |
| sscanf.h |
| DEPENDS |
| libc.src.__support.arg_list |
| libc.src.stdio.scanf_core.reader |
| libc.src.stdio.scanf_core.scanf_main |
| ) |
| |
| add_entrypoint_object( |
| fscanf |
| SRCS |
| fscanf.cpp |
| HDRS |
| fscanf.h |
| DEPENDS |
| ${scanf_deps} |
| ) |
| |
| add_entrypoint_object( |
| scanf |
| SRCS |
| scanf.cpp |
| HDRS |
| scanf.h |
| DEPENDS |
| ${scanf_deps} |
| ) |
| |
| add_entrypoint_object( |
| sprintf |
| SRCS |
| sprintf.cpp |
| HDRS |
| sprintf.h |
| DEPENDS |
| libc.src.stdio.printf_core.printf_main |
| libc.src.stdio.printf_core.writer |
| ) |
| |
| add_entrypoint_object( |
| snprintf |
| SRCS |
| snprintf.cpp |
| HDRS |
| snprintf.h |
| DEPENDS |
| libc.src.stdio.printf_core.printf_main |
| libc.src.stdio.printf_core.writer |
| ) |
| |
| list(APPEND printf_deps |
| libc.src.__support.arg_list |
| libc.src.stdio.printf_core.vfprintf_internal |
| ) |
| |
| if(LLVM_LIBC_FULL_BUILD) |
| list(APPEND printf_deps |
| libc.src.__support.File.file |
| libc.src.__support.File.platform_file |
| libc.src.__support.File.platform_stdout |
| ) |
| endif() |
| |
| add_entrypoint_object( |
| printf |
| SRCS |
| printf.cpp |
| HDRS |
| printf.h |
| DEPENDS |
| ${printf_deps} |
| ) |
| |
| add_entrypoint_object( |
| fprintf |
| SRCS |
| fprintf.cpp |
| HDRS |
| fprintf.h |
| DEPENDS |
| libc.src.__support.arg_list |
| libc.src.stdio.printf_core.vfprintf_internal |
| ) |
| |
| add_entrypoint_object( |
| vsprintf |
| SRCS |
| vsprintf.cpp |
| HDRS |
| vsprintf.h |
| DEPENDS |
| libc.src.stdio.printf_core.printf_main |
| libc.src.stdio.printf_core.writer |
| ) |
| |
| add_entrypoint_object( |
| vsnprintf |
| SRCS |
| vsnprintf.cpp |
| HDRS |
| vsnprintf.h |
| DEPENDS |
| libc.src.stdio.printf_core.printf_main |
| libc.src.stdio.printf_core.writer |
| ) |
| |
| add_entrypoint_object( |
| vprintf |
| SRCS |
| vprintf.cpp |
| HDRS |
| vprintf.h |
| DEPENDS |
| ${printf_deps} |
| ) |
| |
| add_entrypoint_object( |
| vfprintf |
| SRCS |
| vfprintf.cpp |
| HDRS |
| vfprintf.h |
| DEPENDS |
| libc.src.__support.arg_list |
| libc.src.stdio.printf_core.vfprintf_internal |
| ) |
| |
| add_subdirectory(printf_core) |
| add_subdirectory(scanf_core) |
| |
| add_entrypoint_object( |
| remove |
| ALIAS |
| DEPENDS |
| .${LIBC_TARGET_OS}.remove |
| ) |
| |
| # These entrypoints have multiple potential implementations. |
| add_stdio_entrypoint_object(feof) |
| add_stdio_entrypoint_object(feof_unlocked) |
| add_stdio_entrypoint_object(ferror) |
| add_stdio_entrypoint_object(ferror_unlocked) |
| add_stdio_entrypoint_object(fseek) |
| add_stdio_entrypoint_object(ftell) |
| add_stdio_entrypoint_object(fflush) |
| add_stdio_entrypoint_object(clearerr) |
| add_stdio_entrypoint_object(clearerr_unlocked) |
| add_stdio_entrypoint_object(fopen) |
| add_stdio_entrypoint_object(fclose) |
| add_stdio_entrypoint_object(fread_unlocked) |
| add_stdio_entrypoint_object(fread) |
| add_stdio_entrypoint_object(puts) |
| add_stdio_entrypoint_object(fputs) |
| add_stdio_entrypoint_object(fwrite_unlocked) |
| add_stdio_entrypoint_object(fwrite) |
| add_stdio_entrypoint_object(fputc) |
| add_stdio_entrypoint_object(putc) |
| add_stdio_entrypoint_object(putchar) |
| add_stdio_entrypoint_object(fgetc) |
| add_stdio_entrypoint_object(fgetc_unlocked) |
| add_stdio_entrypoint_object(getc) |
| add_stdio_entrypoint_object(getc_unlocked) |
| add_stdio_entrypoint_object(getchar) |
| add_stdio_entrypoint_object(getchar_unlocked) |
| add_stdio_entrypoint_object(fgets) |
| add_stdio_entrypoint_object(ungetc) |
| add_stdio_entrypoint_object(stdin) |
| add_stdio_entrypoint_object(stdout) |
| add_stdio_entrypoint_object(stderr) |