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