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_FREE 110 bool "Free memory unnecessarily" 111 default n 112 help 113 When a program exits, the operating system will clean up after it 114 (free memory, close files, etc). To save size, toybox usually relies 115 on this behavior. If you're running toybox under a debugger or 116 without a real OS (ala newlib+libgloss), enable this to make toybox 117 clean up after itself. 118 119config TOYBOX_NORECURSE 120 bool "Disable recursive execution" 121 default n 122 help 123 When one toybox command calls another, usually it just calls the new 124 command's main() function rather than searching the $PATH and calling 125 exec on another file (which is much slower). 126 127 This disables that optimization, so toybox will run external commands 128 even when it has a built-in version of that command. This requires 129 toybox symlinks to be installed in the $PATH, or re-invoking the 130 "toybox" multiplexer command by name. 131 132config TOYBOX_DEBUG 133 bool "Debugging tests" 134 default n 135 help 136 Enable extra checks for debugging purposes. All of them catch 137 things that can only go wrong at development time, not runtime. 138 139config TOYBOX_UID_SYS 140 int "First system UID" 141 default 100 142 help 143 When commands like useradd/groupadd allocate system IDs, start here. 144 145config TOYBOX_UID_USR 146 int "First user UID" 147 default 500 148 help 149 When commands like useradd/groupadd allocate user IDs, start here. 150 151config TOYBOX_FORCE_NOMMU 152 bool "Enable nommu support when the build can't detect it." 153 default n 154 help 155 When using musl-libc on a nommu system, you'll need to say "y" here 156 unless you used the patch in the mcm-buildall.sh script. You can also 157 say "y" here to test the nommu codepaths on an mmu system. 158 159 A nommu system can't use fork(), it can only vfork() which suspends 160 the parent until the child calls exec() or exits. When a program 161 needs a second instance of itself to run specific code at the same 162 time as the parent, it must use a more complicated approach (such as 163 exec("/proc/self/exe") then pass data to the new child through a pipe) 164 which is larger and slower, especially for things like toysh subshells 165 that need to duplicate a lot of internal state in the child process 166 fork() gives you for free. 167 168 Libraries like uclibc omit fork() on nommu systems, allowing 169 compile-time probes to select which codepath to use. But musl 170 intentionally includes a broken version of fork() that always returns 171 -ENOSYS on nommu systems, and goes out of its way to prevent any 172 cross-compile compatible compile-time probes for a nommu system. 173 (It doesn't even #define __MUSL__ in features.h.) Musl does this 174 despite the fact that a nommu system can't even run standard ELF 175 binaries (requiring specially packaged executables) because it wants 176 to force every program to either include all nommu code in every 177 instance ever built, or drop nommu support altogether. 178 179 Building a scripts/mcm-buildall.sh toolchain patches musl to fix this. 180 181endmenu 182