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