1# Copyright (c) 2016 Intel Corporation
2# SPDX-License-Identifier: Apache-2.0
3
4menu "Utility Library"
5
6config JSON_LIBRARY
7	bool "Build JSON library"
8	help
9	  Build a minimal JSON parsing/encoding library. Used by sample
10	  applications such as the NATS client.
11
12config JSON_LIBRARY_FP_SUPPORT
13	bool "Floating point support in JSON library"
14	depends on JSON_LIBRARY
15	select CBPRINTF_FP_SUPPORT
16	select REQUIRES_FULL_LIBC
17	help
18	  Build the JSON library with support for floating point types.
19
20	  Requires a libc implementation with support for floating point
21	  functions: strtof(), strtod(), isnan() and isinf().
22
23config RING_BUFFER
24	bool "Ring buffers"
25	help
26	  Provide highly efficient ring buffer management for arbitrary data.
27	  Some facilities such as kernel pipes are built on top of this.
28	  May be used directly e.g. when the pipe overhead is unnecessary.
29
30config RING_BUFFER_LARGE
31	bool "Allow large ring buffer sizes"
32	depends on RING_BUFFER
33	help
34	  Increase maximum buffer size from 32KB to 2GB. When this is enabled,
35	  all struct ring_buf instances become 12 bytes bigger.
36
37config NOTIFY
38	bool "Asynchronous Notifications"
39	help
40	  Use this API to support async transactions.
41
42config BASE64
43	bool "Base64 encoding and decoding"
44	help
45	  Enable base64 encoding and decoding functionality
46
47config ONOFF
48	bool "On-Off Manager"
49	select NOTIFY
50	help
51	  An on-off manager supports an arbitrary number of clients of a
52	  service which has a binary state.  Example applications are power
53	  rails, clocks, and binary device power management.
54
55config WINSTREAM
56	bool "Lockless shared memory window byte stream"
57	help
58	  Winstream is a byte stream IPC for use in shared memory
59	  "windows", generally for transmit to non-Zephyr contexts that
60	  can't share Zephyr APIs or data structures.
61
62if WINSTREAM
63config WINSTREAM_STDLIB_MEMCOPY
64	bool "Use standard memcpy() in winstream"
65	help
66	  The sys_winstream utility is sometimes used in early boot
67	  environments before the standard library is usable.  By
68	  default it uses a simple internal bytewise memcpy().  Set
69	  this to use the one from the standard library.
70endif
71
72config UTF8
73	bool "UTF-8 string operation supported"
74	help
75	  Enable the utf8 API. The API implements functions to specifically
76	  handle UTF-8 encoded strings.
77
78config COBS
79	bool "Consistent overhead byte stuffing"
80	select NET_BUF
81	help
82	  Enable consistent overhead byte stuffing
83
84config GETOPT
85	bool "Getopt library support"
86	help
87	  This option adds support of the sys_getopt API.
88
89config GETOPT_LONG
90	bool "Getopt long library support"
91	depends on GETOPT
92	help
93	  This option adds support of the getopt long.
94	  Different shell backends are using their own instance of getopt to
95	  not interfere with each other.
96	  All not shell threads share one global instance of getopt state, hence
97	  apart from shell this library is not thread safe. User can add support
98	  for other threads by extending function sys_getopt_state_get in
99	  getopt_common.c file.
100
101config TIMEUTIL_APPLY_SKEW
102	bool "Support applying clock skew corrections in conversion functions"
103	default y
104	help
105	  Accurately applying clock skew correction in timeutil_sync_ref_from_local
106	  and timeutil_sync_local_from_ref requires double-precision floating point
107	  operations. If this is the only usage of double precision logic in the
108	  build, but clocks skews are not used, this can be a significant ROM
109	  overhead. Disabling this option can save ~2.4 kB of ROM.
110
111endmenu
112