[libc-commits] [libc] 89fc7e5 - [libc] Include (v)s(n)printf in baremetal configs
Petr Hosek via libc-commits
libc-commits at lists.llvm.org
Sun Sep 3 19:39:29 PDT 2023
Author: Petr Hosek
Date: 2023-09-04T02:39:02Z
New Revision: 89fc7e52ab49f9221ec282042ad41035cfb1cbb5
URL: https://github.com/llvm/llvm-project/commit/89fc7e52ab49f9221ec282042ad41035cfb1cbb5
DIFF: https://github.com/llvm/llvm-project/commit/89fc7e52ab49f9221ec282042ad41035cfb1cbb5.diff
LOG: [libc] Include (v)s(n)printf in baremetal configs
These are commonly used on baremetal targets. We disable float
support and other features to reduce the binary size. This would
ideally eventually be handled using the proposed config mechanism:
https://discourse.llvm.org/t/rfc-systematic-way-to-introduce-and-use-libc-config-options/72943
but for now we use a CMake conditional.
Differential Revision: https://reviews.llvm.org/D159067
Added:
Modified:
libc/config/baremetal/arm/entrypoints.txt
libc/config/baremetal/arm/headers.txt
libc/config/baremetal/riscv32/entrypoints.txt
libc/config/baremetal/riscv32/headers.txt
libc/src/stdio/CMakeLists.txt
libc/src/stdio/printf_core/CMakeLists.txt
Removed:
################################################################################
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index 56daccc731c3a76..a88b7aa749e5654 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -63,6 +63,12 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.inttypes.imaxdiv
libc.src.inttypes.strtoimax
libc.src.inttypes.strtoumax
+
+ # stdio.h entrypoints
+ libc.src.stdio.sprintf
+ libc.src.stdio.snprintf
+ libc.src.stdio.vsprintf
+ libc.src.stdio.vsnprintf
# stdlib.h entrypoints
libc.src.stdlib.abs
diff --git a/libc/config/baremetal/arm/headers.txt b/libc/config/baremetal/arm/headers.txt
index fe7c88e922e07e8..e7be1fd80e8754b 100644
--- a/libc/config/baremetal/arm/headers.txt
+++ b/libc/config/baremetal/arm/headers.txt
@@ -4,6 +4,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.errno
libc.include.inttypes
libc.include.math
+ libc.include.stdio
libc.include.stdlib
libc.include.string
libc.include.strings
diff --git a/libc/config/baremetal/riscv32/entrypoints.txt b/libc/config/baremetal/riscv32/entrypoints.txt
index 37651aaef1b0887..3b7ca513eb0965a 100644
--- a/libc/config/baremetal/riscv32/entrypoints.txt
+++ b/libc/config/baremetal/riscv32/entrypoints.txt
@@ -64,6 +64,12 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.inttypes.strtoimax
libc.src.inttypes.strtoumax
+ # stdio.h entrypoints
+ libc.src.stdio.sprintf
+ libc.src.stdio.snprintf
+ libc.src.stdio.vsprintf
+ libc.src.stdio.vsnprintf
+
# stdlib.h entrypoints
libc.src.stdlib.abs
libc.src.stdlib.atoi
diff --git a/libc/config/baremetal/riscv32/headers.txt b/libc/config/baremetal/riscv32/headers.txt
index fe7c88e922e07e8..e7be1fd80e8754b 100644
--- a/libc/config/baremetal/riscv32/headers.txt
+++ b/libc/config/baremetal/riscv32/headers.txt
@@ -4,6 +4,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.errno
libc.include.inttypes
libc.include.math
+ libc.include.stdio
libc.include.stdlib
libc.include.string
libc.include.strings
diff --git a/libc/src/stdio/CMakeLists.txt b/libc/src/stdio/CMakeLists.txt
index 7101796957ab237..fc8588d75ad416b 100644
--- a/libc/src/stdio/CMakeLists.txt
+++ b/libc/src/stdio/CMakeLists.txt
@@ -26,6 +26,14 @@ if(NOT LIBC_TARGET_ARCHITECTURE_IS_GPU)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/generic)
endif()
+if(${LIBC_TARGET_OS} STREQUAL "baremetal")
+ list(APPEND printf_copts
+ "-DLIBC_COPT_PRINTF_DISABLE_FLOAT"
+ "-DLIBC_COPT_PRINTF_DISABLE_INDEX_MODE"
+ "-DLIBC_COPT_PRINTF_DISABLE_WRITE_INT"
+ )
+endif()
+
add_subdirectory(printf_core)
add_subdirectory(scanf_core)
@@ -419,13 +427,13 @@ list(APPEND printf_deps
libc.src.stdio.printf_core.vfprintf_internal
)
if(LLVM_LIBC_FULL_BUILD)
- list(APPEND printf_deps
+ list(APPEND printf_deps
libc.src.__support.File.file
libc.src.__support.File.platform_file
libc.src.__support.File.platform_stdout
)
else()
- set(printf_copts "-DLIBC_COPT_PRINTF_USE_SYSTEM_FILE")
+ list(APPEND printf_copts "-DLIBC_COPT_PRINTF_USE_SYSTEM_FILE")
endif()
add_entrypoint_object(
diff --git a/libc/src/stdio/printf_core/CMakeLists.txt b/libc/src/stdio/printf_core/CMakeLists.txt
index a2227fbf77c7acb..0b3766b55e8d4b4 100644
--- a/libc/src/stdio/printf_core/CMakeLists.txt
+++ b/libc/src/stdio/printf_core/CMakeLists.txt
@@ -93,6 +93,7 @@ add_object_library(
libc.src.__support.float_to_string
COMPILE_OPTIONS
-DLIBC_COPT_FLOAT_TO_STR_USE_MEGA_LONG_DOUBLE_TABLE
+ ${printf_copts}
)
More information about the libc-commits
mailing list