Skip to content

Commit

Permalink
lib: posix: Kconfig: Allow to enable individual components
Browse files Browse the repository at this point in the history
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: zephyrproject-rtos#12965

Signed-off-by: Paul Sokolovsky <[email protected]>
  • Loading branch information
pfalcon authored and galak committed Sep 26, 2019
1 parent a4c3196 commit 0dcee73
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
2 changes: 1 addition & 1 deletion lib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
12 changes: 7 additions & 5 deletions lib/posix/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,20 @@

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)
zephyr_library_sources_ifdef(CONFIG_PTHREAD_IPC pthread_cond.c)
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)
Expand Down
14 changes: 12 additions & 2 deletions lib/posix/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,9 @@ config POSIX_API
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
Expand All @@ -45,6 +44,13 @@ config SEM_VALUE_MAX

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
Expand All @@ -54,6 +60,7 @@ config MAX_TIMER_COUNT

config POSIX_MQUEUE
bool "Enable POSIX message queue"
default y if POSIX_API
help
This enabled POSIX message queue related APIs.

Expand Down Expand Up @@ -83,6 +90,7 @@ endif
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.

Expand All @@ -96,6 +104,8 @@ config POSIX_MAX_OPEN_FILES
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
Expand Down

0 comments on commit 0dcee73

Please sign in to comment.