lib: posix: Kconfig: Allow to enable individual components

Allow to enable individual POSIX components, like Pthreads.
CONFIG_POSIX_API now just enables all of individual POSIX components,
and sets up environment suitable to easily port POSIX applications to
Zephyr.

Fixes: #12965

Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index c7a549a..46c0f1c 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -2,8 +2,8 @@
 
 if(NOT CONFIG_NATIVE_APPLICATION)
 add_subdirectory(libc)
+add_subdirectory(posix)
 endif()
-add_subdirectory_ifdef(CONFIG_POSIX_API            posix)
 add_subdirectory_ifdef(CONFIG_CMSIS_RTOS_V1        cmsis_rtos_v1)
 add_subdirectory_ifdef(CONFIG_CMSIS_RTOS_V2        cmsis_rtos_v2)
 add_subdirectory(gui)
diff --git a/lib/posix/CMakeLists.txt b/lib/posix/CMakeLists.txt
index ed9a7c4..a9e292f 100644
--- a/lib/posix/CMakeLists.txt
+++ b/lib/posix/CMakeLists.txt
@@ -3,7 +3,9 @@
 
 zephyr_interface_library_named(posix_subsys)
 
-target_include_directories(posix_subsys INTERFACE ${ZEPHYR_BASE}/include/posix)
+if(CONFIG_POSIX_API)
+  target_include_directories(posix_subsys INTERFACE ${ZEPHYR_BASE}/include/posix)
+endif()
 
 zephyr_library()
 zephyr_library_sources(pthread_common.c)
@@ -11,10 +13,10 @@
 zephyr_library_sources_ifdef(CONFIG_PTHREAD_IPC pthread_mutex.c)
 zephyr_library_sources_ifdef(CONFIG_PTHREAD_IPC pthread_barrier.c)
 zephyr_library_sources_ifdef(CONFIG_PTHREAD_IPC pthread.c)
-zephyr_library_sources(pthread_sched.c)
-zephyr_library_sources(clock.c)
-zephyr_library_sources(sleep.c)
-zephyr_library_sources(timer.c)
+zephyr_library_sources_ifdef(CONFIG_PTHREAD_IPC pthread_sched.c)
+zephyr_library_sources_ifdef(CONFIG_POSIX_CLOCK clock.c)
+zephyr_library_sources_ifdef(CONFIG_POSIX_CLOCK sleep.c)
+zephyr_library_sources_ifdef(CONFIG_POSIX_CLOCK timer.c)
 zephyr_library_sources_ifdef(CONFIG_PTHREAD_IPC pthread_rwlock.c)
 zephyr_library_sources_ifdef(CONFIG_PTHREAD_IPC semaphore.c)
 zephyr_library_sources_ifdef(CONFIG_PTHREAD_IPC pthread_key.c)
diff --git a/lib/posix/Kconfig b/lib/posix/Kconfig
index 268a22a..af91c54 100644
--- a/lib/posix/Kconfig
+++ b/lib/posix/Kconfig
@@ -19,10 +19,9 @@
 	  Enable mostly-standards-compliant implementations of
 	  various POSIX (IEEE 1003.1) APIs.
 
-if POSIX_API
-
 config PTHREAD_IPC
 	bool "POSIX pthread IPC API"
+	default y if POSIX_API
 	help
 	  This enables a mostly-standards-compliant implementation of
 	  the pthread mutex, condition variable and barrier IPC
@@ -45,6 +44,13 @@
 
 endif # PTHREAD_IPC
 
+config POSIX_CLOCK
+	bool "POSIX clock, timer, and sleep APIs"
+	default y if POSIX_API
+	help
+	  This enables POSIX clock\_\*(), timer\_\*(), and \*sleep()
+	  functions.
+
 config MAX_TIMER_COUNT
 	int "Maximum timer count in POSIX application"
 	default 5
@@ -54,6 +60,7 @@
 
 config POSIX_MQUEUE
 	bool "Enable POSIX message queue"
+	default y if POSIX_API
 	help
 	  This enabled POSIX message queue related APIs.
 
@@ -83,6 +90,7 @@
 if FILE_SYSTEM
 config POSIX_FS
 	bool "Enable POSIX file system API support"
+	default y if POSIX_API
 	help
 	  This enables POSIX style file system related APIs.
 
@@ -96,6 +104,8 @@
 endif
 endif # FILE_SYSTEM
 
+if POSIX_API
+
 # The name of this option is mandated by zephyr_interface_library_named
 # cmake directive.
 config APP_LINK_WITH_POSIX_SUBSYS