mainmenu "Toybox Configuration" source generated/Config.probed source generated/Config.in comment "" menu "Toybox global settings" # This entry controls the multiplexer, disabled for single command builds config TOYBOX bool default y help usage: toybox [--long | --help | --version | [COMMAND] [ARGUMENTS...]] With no arguments, "toybox" shows available COMMAND names. Add --long to include suggested install path for each command, see https://landley.net/toybox/faq.html#install for details. First argument is name of a COMMAND to run, followed by any ARGUMENTS to that command. Most toybox commands also understand: --help Show command help (only) --version Show toybox version (only) The filename "-" means stdin/stdout, and "--" stops argument parsing. Numerical arguments accept a single letter suffix for kilo, mega, giga, tera, peta, and exabytes, plus an additional "d" to indicate decimal 1000's instead of 1024. Durations can be decimal fractions and accept minute ("m"), hour ("h"), or day ("d") suffixes (so 0.1m = 6s). config TOYBOX_SUID bool "SUID support" default y help Support for the Set User ID bit, to install toybox suid root and drop permissions for commands which do not require root access. To use this change ownership of the file to the root user and set the suid bit in the file permissions: chown root:root toybox; chmod +s toybox choice prompt "Security Blanket" default TOYBOX_LSM_NONE help Select a Linux Security Module to complicate your system until you can't find holes in it. config TOYBOX_LSM_NONE bool "None" help Don't try to achieve "watertight" by plugging the holes in a collander, instead use conventional unix security (and possibly Linux Containers) for a simple straightforward system. config TOYBOX_SELINUX bool "SELinux support" help Include SELinux options in commands such as ls, and add SELinux-specific commands such as chcon to the Android menu. config TOYBOX_SMACK bool "SMACK support" help Include SMACK options in commands like ls for systems like Tizen. endchoice config TOYBOX_LIBCRYPTO bool "Use libcrypto (OpenSSL/BoringSSL)" default n help Use faster hash functions out of external -lcrypto library. config TOYBOX_LIBZ bool "Use libz (zlib)" default n help Use libz for gz support. config TOYBOX_FLOAT bool "Floating point support" default y help Include floating point support infrastructure and commands that require it. config TOYBOX_HELP bool "Help messages" default y help Include help text for each command. config TOYBOX_HELP_DASHDASH bool "--help and --version" default y depends on TOYBOX_HELP help Support --help argument in all commands, even ones with a NULL optstring. (Use TOYFLAG_NOHELP to disable.) Produces the same output as "help command". --version shows toybox version. config TOYBOX_FREE bool "Free memory unnecessarily" default n help When a program exits, the operating system will clean up after it (free memory, close files, etc). To save size, toybox usually relies on this behavior. If you're running toybox under a debugger or without a real OS (ala newlib+libgloss), enable this to make toybox clean up after itself. config TOYBOX_NORECURSE bool "Disable recursive execution" default n help When one toybox command calls another, usually it just calls the new command's main() function rather than searching the $PATH and calling exec on another file (which is much slower). This disables that optimization, so toybox will run external commands even when it has a built-in version of that command. This requires toybox symlinks to be installed in the $PATH, or re-invoking the "toybox" multiplexer command by name. config TOYBOX_DEBUG bool "Debugging tests" default n help Enable extra checks for debugging purposes. All of them catch things that can only go wrong at development time, not runtime. config TOYBOX_PEDANTIC_ARGS bool "Pedantic argument checking" default n help Check arguments for commands that have no arguments. config TOYBOX_UID_SYS int "First system UID" default 100 help When commands like useradd/groupadd allocate system IDs, start here. config TOYBOX_UID_USR int "First user UID" default 500 help When commands like useradd/groupadd allocate user IDs, start here. config TOYBOX_FORCE_NOMMU bool "Enable nommu support when the build can't detect it." default n help When using musl-libc on a nommu system, you'll need to say "y" here unless you used the patch in the mcm-buildall.sh script. You can also say "y" here to test the nommu codepaths on an mmu system. A nommu system can't use fork(), it can only vfork() which suspends the parent until the child calls exec() or exits. When a program needs a second instance of itself to run specific code at the same time as the parent, it must use a more complicated approach (such as exec("/proc/self/exe") then pass data to the new child through a pipe) which is larger and slower, especially for things like toysh subshells that need to duplicate a lot of internal state in the child process fork() gives you for free. Libraries like uclibc omit fork() on nommu systems, allowing compile-time probes to select which codepath to use. But musl intentionally includes a broken version of fork() that always returns -ENOSYS on nommu systems, and goes out of its way to prevent any cross-compile compatible compile-time probes for a nommu system. (It doesn't even #define __MUSL__ in features.h.) Musl does this despite the fact that a nommu system can't even run standard ELF binaries (requiring specially packaged executables) because it wants to force every program to either include all nommu code in every instance ever built, or drop nommu support altogether. Building a scripts/mcm-buildall.sh toolchain patches musl to fix this. endmenu