Summary: As Zephyr getopt is not really compatible with Posix getopt, rename Zephyr getopt to sys_getopt. Background: Zephyr getopt module was introduced in #31356 to be used by the shell. Zephyr's getopt is not the standard one. It has multiple APIs which make it more suited for a system like Zephyr where different components may want to use it for different purposes. Including APIs to init it, get and set its internal state etc. Several Zephyr modules (shell, net, wifi, ztest) use this getopt with these special APIs. The getopt module is bundled in the POSIX compatibility API subsystem (CONFIG_POSIX_C_LIB_EXT). Problem description: As it is not the standard getopt(), no C library can possibly provide a Zephyr compatible version (even if such C library were to provide a standard getopt()). As it is bundled in Zephyr's POSIX API in CONFIG_POSIX_C_LIB_EXT), multiple components that depend on it are selecting CONFIG_POSIX_C_LIB_EXT. Zephyr core components should not depend on the POSIX API in this way. Changes done in this commit: Rename the getopt*() APIs to sys_getopt*() and move them into a module under lib/utils with its own Kconfig option to enable it. Zephyr's users are changed to use this new component. The POSIX subsystem can continue providing getopt() by calling the new sys_getopt() and in that way retain backwards compatibility for external users. Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
37 lines
832 B
CMake
37 lines
832 B
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
zephyr_sources_ifdef(CONFIG_BASE64 base64.c)
|
|
|
|
zephyr_sources(
|
|
dec.c
|
|
hex.c
|
|
rb.c
|
|
timeutil.c
|
|
bitarray.c
|
|
bitmask.c
|
|
)
|
|
|
|
zephyr_library_sources_ifdef(CONFIG_GETOPT getopt/getopt.c getopt/getopt_common.c)
|
|
zephyr_library_sources_ifdef(CONFIG_GETOPT_LONG getopt/getopt_long.c)
|
|
|
|
zephyr_sources_ifdef(CONFIG_ONOFF onoff.c)
|
|
|
|
zephyr_sources_ifdef(CONFIG_NOTIFY notify.c)
|
|
|
|
zephyr_sources_ifdef(CONFIG_JSON_LIBRARY json.c)
|
|
|
|
zephyr_sources_ifdef(CONFIG_RING_BUFFER ring_buffer.c)
|
|
|
|
zephyr_sources_ifdef(CONFIG_UTF8 utf8.c)
|
|
|
|
zephyr_sources_ifdef(CONFIG_WINSTREAM winstream.c)
|
|
|
|
zephyr_sources_ifdef(CONFIG_COBS cobs.c)
|
|
|
|
zephyr_library_include_directories(
|
|
${ZEPHYR_BASE}/kernel/include
|
|
${ZEPHYR_BASE}/arch/${ARCH}/include
|
|
)
|
|
|
|
zephyr_sources_ifdef(CONFIG_LINKER_LAST_SECTION_ID last_section_id.c)
|