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 Toybox multicall binary: https://landley.net/toybox/about.html 19 20 With no arguments, "toybox" shows available COMMAND names. Add --long 21 to include suggested install path for each command, see 22 https://landley.net/toybox/faq.html#install for details. 23 24 First argument is name of a COMMAND to run, followed by any ARGUMENTS 25 to that command. Most toybox commands also understand: 26 27 --help Show command help (only) 28 --version Show toybox version (only) 29 30 The filename "-" means stdin/stdout, and "--" stops argument parsing. 31 32 Numerical arguments accept a single letter suffix for 33 kilo, mega, giga, tera, peta, and exabytes, plus an additional 34 "d" to indicate decimal 1000's instead of 1024. 35 36 Durations can be decimal fractions and accept minute ("m"), hour ("h"), 37 or day ("d") suffixes (so 0.1m = 6s). 38 39config TOYBOX_SUID 40 bool "SUID support" 41 default y 42 help 43 Support for the Set User ID bit, to install toybox suid root and drop 44 permissions for commands which do not require root access. To use 45 this change ownership of the file to the root user and set the suid 46 bit in the file permissions: 47 48 chown root:root toybox; chmod +s toybox 49 50choice 51 prompt "Security Blanket" 52 default TOYBOX_LSM_NONE 53 help 54 Select a Linux Security Module to complicate your system 55 until you can't find holes in it. 56 57config TOYBOX_LSM_NONE 58 bool "None" 59 help 60 Don't try to achieve "watertight" by plugging the holes in a 61 collander, instead use conventional unix security (and possibly 62 Linux Containers) for a simple straightforward system. 63 64config TOYBOX_SELINUX 65 bool "SELinux support" 66 help 67 Include SELinux options in commands such as ls, and add 68 SELinux-specific commands such as chcon to the Android menu. 69 70config TOYBOX_SMACK 71 bool "SMACK support" 72 help 73 Include SMACK options in commands like ls for systems like Tizen. 74 75endchoice 76 77config TOYBOX_LIBCRYPTO 78 bool "Use libcrypto (OpenSSL/BoringSSL)" 79 default n 80 help 81 Use faster hash functions out of external -lcrypto library. 82 83config TOYBOX_LIBZ 84 bool "Use libz (zlib)" 85 default n 86 help 87 Use libz for gz support. 88 89config TOYBOX_FLOAT 90 bool "Floating point support" 91 default y 92 help 93 Include floating point support infrastructure and commands that 94 require it. 95 96config TOYBOX_HELP 97 bool "Help messages" 98 default y 99 help 100 Include help text for each command. 101 102config TOYBOX_HELP_DASHDASH 103 bool "--help and --version" 104 default y 105 depends on TOYBOX_HELP 106 help 107 Support --help argument in all commands, even ones with a NULL 108 optstring. (Use TOYFLAG_NOHELP to disable.) Produces the same output 109 as "help command". --version shows toybox version. 110 111config TOYBOX_I18N 112 bool "Internationalization support" 113 default y 114 help 115 Support for UTF-8 character sets, and some locale support. 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_PEDANTIC_ARGS 148 bool "Pedantic argument checking" 149 default n 150 help 151 Check arguments for commands that have no arguments. 152 153config TOYBOX_UID_SYS 154 int "First system UID" 155 default 100 156 help 157 When commands like useradd/groupadd allocate system IDs, start here. 158 159config TOYBOX_UID_USR 160 int "First user UID" 161 default 500 162 help 163 When commands like useradd/groupadd allocate user IDs, start here. 164 165config TOYBOX_FORCE_NOMMU 166 bool "Enable nommu support when the build can't detect it." 167 default n 168 help 169 When using musl-libc on a nommu system, you'll need to say "y" here 170 unless you used the patch in the mcm-buildall.sh script. You can also 171 say "y" here to test the nommu codepaths on an mmu system. 172 173 A nommu system can't use fork(), it can only vfork() which suspends 174 the parent until the child calls exec() or exits. When a program 175 needs a second instance of itself to run specific code at the same 176 time as the parent, it must use a more complicated approach (such as 177 exec("/proc/self/exe") then pass data to the new child through a pipe) 178 which is larger and slower, especially for things like toysh subshells 179 that need to duplicate a lot of internal state in the child process 180 fork() gives you for free. 181 182 Libraries like uclibc omit fork() on nommu systems, allowing 183 compile-time probes to select which codepath to use. But musl 184 intentionally includes a broken version of fork() that always returns 185 -ENOSYS on nommu systems, and goes out of its way to prevent any 186 cross-compile compatible compile-time probes for a nommu system. 187 (It doesn't even #define __MUSL__ in features.h.) Musl does this 188 despite the fact that a nommu system can't even run standard ELF 189 binaries (requiring specially packaged executables) because it wants 190 to force every program to either include all nommu code in every 191 instance ever built, or drop nommu support altogether. 192 193 Building a toolchain scripts/mcm-buildall.sh patches musl to fix this. 194 195endmenu 196