diff --git a/cmake/toolchain/armclang/Kconfig b/cmake/toolchain/armclang/Kconfig index c2df1e1024a..72ae8149eee 100644 --- a/cmake/toolchain/armclang/Kconfig +++ b/cmake/toolchain/armclang/Kconfig @@ -15,6 +15,7 @@ choice LIBC_IMPLEMENTATION config ARMCLANG_STD_LIBC bool "ARM Compiler C library" + select COMMON_LIBC_TIME if POSIX_CLOCK help Use the full Arm Compiler runtime libraries. A reduced Zephyr minimal libc will be used for library functionality diff --git a/lib/libc/CMakeLists.txt b/lib/libc/CMakeLists.txt index 3f298b157fc..e640e36c145 100644 --- a/lib/libc/CMakeLists.txt +++ b/lib/libc/CMakeLists.txt @@ -5,3 +5,5 @@ add_subdirectory_ifdef(CONFIG_ARMCLANG_STD_LIBC armstdc) add_subdirectory_ifdef(CONFIG_MINIMAL_LIBC minimal) add_subdirectory_ifdef(CONFIG_NEWLIB_LIBC newlib) add_subdirectory_ifdef(CONFIG_PICOLIBC picolibc) + +add_subdirectory(common) diff --git a/lib/libc/Kconfig b/lib/libc/Kconfig index 11768537fe3..4e55388bf27 100644 --- a/lib/libc/Kconfig +++ b/lib/libc/Kconfig @@ -75,6 +75,7 @@ endchoice # LIBC_IMPLEMENTATION config HAS_NEWLIB_LIBC_NANO bool +rsource "common/Kconfig" rsource "minimal/Kconfig" rsource "newlib/Kconfig" rsource "picolibc/Kconfig" diff --git a/lib/libc/common/CMakeLists.txt b/lib/libc/common/CMakeLists.txt new file mode 100644 index 00000000000..207cef418f6 --- /dev/null +++ b/lib/libc/common/CMakeLists.txt @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: Apache-2.0 + +zephyr_library() +zephyr_library_sources_ifdef(CONFIG_COMMON_LIBC_TIME source/time/time.c) diff --git a/lib/libc/common/Kconfig b/lib/libc/common/Kconfig new file mode 100644 index 00000000000..6e155957f21 --- /dev/null +++ b/lib/libc/common/Kconfig @@ -0,0 +1,7 @@ +# Copyright (c) 2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +config COMMON_LIBC_TIME + bool + help + common implementation of time(). diff --git a/lib/libc/minimal/source/time/time.c b/lib/libc/common/source/time/time.c similarity index 100% rename from lib/libc/minimal/source/time/time.c rename to lib/libc/common/source/time/time.c diff --git a/lib/libc/minimal/CMakeLists.txt b/lib/libc/minimal/CMakeLists.txt index a13ecbacd25..65996456fbc 100644 --- a/lib/libc/minimal/CMakeLists.txt +++ b/lib/libc/minimal/CMakeLists.txt @@ -33,7 +33,6 @@ zephyr_library_sources( if(CONFIG_MINIMAL_LIBC_TIME) zephyr_library_sources(source/time/gmtime.c) - zephyr_library_sources_ifdef(CONFIG_POSIX_CLOCK source/time/time.c) endif() zephyr_library_sources_ifdef(CONFIG_MINIMAL_LIBC_RAND source/stdlib/rand.c) diff --git a/lib/libc/minimal/Kconfig b/lib/libc/minimal/Kconfig index 30e0f0385fe..521f17b98fc 100644 --- a/lib/libc/minimal/Kconfig +++ b/lib/libc/minimal/Kconfig @@ -66,6 +66,7 @@ config MINIMAL_LIBC_RAND config MINIMAL_LIBC_TIME bool "Time functions" + select COMMON_LIBC_TIME if POSIX_CLOCK default y help Enable time() and gmtime_r() for the minimal libc.