1mainmenu "Toybox Configuration"
2
3
4source generated/Config.probed
5source generated/Config.in
6
7comment ""
8
9menu "Toybox global settings"
10
11# This entry controls the multiplexer, disabled for single command builds
12config TOYBOX
13	bool
14	default y
15	help
16	  usage: toybox [--long | --help | --version | [command] [arguments...]]
17
18	  With no arguments, shows available commands. First argument is
19	  name of a command to run, followed by any arguments to that command.
20
21	  --long	Show path to each command
22
23	  To install command symlinks with paths, try:
24	    for i in $(/bin/toybox --long); do ln -s /bin/toybox $i; done
25	  or all in one directory:
26	    for i in $(./toybox); do ln -s toybox $i; done; PATH=$PWD:$PATH
27
28	  Most toybox commands also understand the following arguments:
29
30	  --help		Show command help (only)
31	  --version	Show toybox version (only)
32
33	  The filename "-" means stdin/stdout, and "--" stops argument parsing.
34
35	  Numerical arguments accept a single letter suffix for
36	  kilo, mega, giga, tera, peta, and exabytes, plus an additional
37	  "d" to indicate decimal 1000's instead of 1024.
38
39	  Durations can be decimal fractions and accept minute ("m"), hour ("h"),
40	  or day ("d") suffixes (so 0.1m = 6s).
41
42config TOYBOX_SUID
43	bool "SUID support"
44	default y
45	help
46	  Support for the Set User ID bit, to install toybox suid root and drop
47	  permissions for commands which do not require root access. To use
48	  this change ownership of the file to the root user and set the suid
49	  bit in the file permissions:
50
51	  chown root:root toybox; chmod +s toybox
52
53choice
54	prompt "Security Blanket"
55	default TOYBOX_LSM_NONE
56	help
57	  Select a Linux Security Module to complicate your system
58	  until you can't find holes in it.
59
60config TOYBOX_LSM_NONE
61	bool "None"
62	help
63          Don't try to achieve "watertight" by plugging the holes in a
64          collander, instead use conventional unix security (and possibly
65          Linux Containers) for a simple straightforward system.
66
67config TOYBOX_SELINUX
68	bool "SELinux support"
69	help
70	  Include SELinux options in commands such as ls, and add
71	  SELinux-specific commands such as chcon to the Android menu.
72
73config TOYBOX_SMACK
74	bool "SMACK support"
75	help
76	  Include SMACK options in commands like ls for systems like Tizen.
77
78endchoice
79
80config TOYBOX_LIBCRYPTO
81       bool "Use libcrypto (OpenSSL/BoringSSL)"
82       default n
83       help
84         Use faster hash functions out of external -lcrypto library.
85
86config TOYBOX_LIBZ
87       bool "Use libz (zlib)"
88       default n
89       help
90         Use libz for gz support.
91
92config TOYBOX_FLOAT
93	bool "Floating point support"
94	default y
95	help
96	  Include floating point support infrastructure and commands that
97	  require it.
98
99config TOYBOX_HELP
100	bool "Help messages"
101	default y
102	help
103	  Include help text for each command.
104
105config TOYBOX_HELP_DASHDASH
106	bool "--help and --version"
107	default y
108	depends on TOYBOX_HELP
109	help
110	  Support --help argument in all commands, even ones with a NULL
111	  optstring. (Use TOYFLAG_NOHELP to disable.) Produces the same output
112	  as "help command". --version shows toybox version.
113
114config TOYBOX_I18N
115	bool "Internationalization support"
116	default y
117	help
118	  Support for UTF-8 character sets, and some locale support.
119
120config TOYBOX_FREE
121	bool "Free memory unnecessarily"
122	default n
123	help
124	  When a program exits, the operating system will clean up after it
125	  (free memory, close files, etc). To save size, toybox usually relies
126	  on this behavior. If you're running toybox under a debugger or
127	  without a real OS (ala newlib+libgloss), enable this to make toybox
128	  clean up after itself.
129
130config TOYBOX_NORECURSE
131	bool "Disable recursive execution"
132	default n
133	help
134	  When one toybox command calls another, usually it just calls the new
135	  command's main() function rather than searching the $PATH and calling
136	  exec on another file (which is much slower).
137
138	  This disables that optimization, so toybox will run external commands
139          even when it has a built-in version of that command. This requires
140          toybox symlinks to be installed in the $PATH, or re-invoking the
141          "toybox" multiplexer command by name.
142
143config TOYBOX_DEBUG
144	bool "Debugging tests"
145	default n
146	help
147	  Enable extra checks for debugging purposes. All of them catch
148	  things that can only go wrong at development time, not runtime.
149
150config TOYBOX_PEDANTIC_ARGS
151	bool "Pedantic argument checking"
152	default n
153	help
154	  Check arguments for commands that have no arguments.
155
156config TOYBOX_UID_SYS
157	int "First system UID"
158	default 100
159	help
160	  When commands like useradd/groupadd allocate system IDs, start here.
161
162config TOYBOX_UID_USR
163	int "First user UID"
164	default 500
165	help
166	  When commands like useradd/groupadd allocate user IDs, start here.
167
168config TOYBOX_FORCE_NOMMU
169	bool "Enable nommu support when the build can't detect it."
170	default n
171	help
172	  When using musl-libc on a nommu system, you'll need to say "y" here
173	  unless you used the patch in the mcm-buildall.sh script. You can also
174	  say "y" here to test the nommu codepaths on an mmu system.
175
176	  A nommu system can't use fork(), it can only vfork() which suspends
177	  the parent until the child calls exec() or exits. When a program
178	  needs a second instance of itself to run specific code at the same
179	  time as the parent, it must use a more complicated approach (such as
180	  exec("/proc/self/exe") then pass data to the new child through a pipe)
181	  which is larger and slower, especially for things like toysh subshells
182	  that need to duplicate a lot of internal state in the child process
183	  fork() gives you for free.
184
185	  Libraries like uclibc omit fork() on nommu systems, allowing
186	  compile-time probes to select which codepath to use. But musl
187	  intentionally includes a broken version of fork() that always returns
188	  -ENOSYS on nommu systems, and goes out of its way to prevent any
189	  cross-compile compatible compile-time probes for a nommu system.
190	  (It doesn't even #define __MUSL__ in features.h.) Musl does this
191	  despite the fact that a nommu system can't even run standard ELF
192	  binaries (requiring specially packaged executables) because it wants
193	  to force every program to either include all nommu code in every
194	  instance ever built, or drop nommu support altogether.
195
196	  Building a toolchain scripts/mcm-buildall.sh patches musl to fix this.
197
198endmenu
199