1
/* vi: set sw=4 ts=4: */
2
// This file defines the feature set to be compiled into busybox.
3
// When you turn things off here, they won't be compiled in at all.
5
//// This file is parsed by sed. You MUST use single line comments.
6
// i.e., //#define BB_BLAH
9
// BusyBox Applications
28
//#define BB_DEALLOCVT
45
//#define BB_FREERAMDISK
46
//#define BB_FSCK_MINIX
78
//#define BB_MKFS_MINIX
92
//#define BB_PIVOT_ROOT
106
//#define BB_RPM2CPIO
108
//#define BB_SETKEYCODES
124
//#define BB_TRACEROUTE
125
#define BB_TRUE_FALSE
127
//#define BB_UNIX2DOS
128
//#define BB_UUENCODE
129
//#define BB_UUDECODE
137
//#define BB_WATCHDOG
144
// End of Applications List
148
// ---------------------------------------------------------
149
// This is where feature definitions go. Generally speaking,
150
// turning this stuff off makes things a bit smaller (and less
154
// If you enabled one or more of the shells, you may select which one
155
// should be run when sh is invoked:
156
#define BB_FEATURE_SH_IS_ASH
157
//#define BB_FEATURE_SH_IS_HUSH
158
//#define BB_FEATURE_SH_IS_LASH
159
//#define BB_FEATURE_SH_IS_MSH
161
// BusyBox will, by default, malloc space for its buffers. This costs code
162
// size for the call to xmalloc. You can use the following feature to have
163
// them put on the stack. For some very small machines with limited stack
164
// space, this can be deadly. For most folks, this works just fine...
165
#define BB_FEATURE_BUFFERS_GO_ON_STACK
166
// The third alternative for buffer allocation is to use BSS. This works
167
// beautifully for computers with a real MMU (and OS support), but wastes
168
// runtime RAM for uCLinux. This behavior was the only one available for
169
// BusyBox versions 0.48 and earlier.
170
//#define BB_FEATURE_BUFFERS_GO_IN_BSS
172
// Turn this on to use Erik's very cool devps, and devmtab kernel drivers,
173
// thereby eliminating the need for the /proc filesystem and thereby saving
174
// lots and lots memory for more important things. NOTE: If you enable this
175
// feature, you _must_ have patched the kernel to include the devps patch that
176
// is included in the busybox/kernel-patches directory. You will also need to
177
// create some device special files in /dev on your embedded system:
178
// mknod /dev/mtab c 10 22
179
// mknod /dev/ps c 10 21
180
// I emailed Linus and this patch will not be going into the stock kernel.
181
//#define BB_FEATURE_USE_DEVPS_PATCH
183
// show verbose usage messages
184
#define BB_FEATURE_VERBOSE_USAGE
186
// Use termios to manipulate the screen ('more' is prettier with this on)
187
//#define BB_FEATURE_USE_TERMIOS
189
// calculate terminal & column widths (for more, ls, and telnet)
190
#define BB_FEATURE_AUTOWIDTH
192
// show username/groupnames for ls
193
//#define BB_FEATURE_LS_USERNAME
195
// show file timestamps in ls
196
#define BB_FEATURE_LS_TIMESTAMPS
198
// enable ls -p and -F
199
#define BB_FEATURE_LS_FILETYPES
201
// sort the file names
202
#define BB_FEATURE_LS_SORTFILES
205
#define BB_FEATURE_LS_RECURSIVE
208
#define BB_FEATURE_LS_FOLLOWLINKS
210
// Use color to identify different file types
211
//#define BB_FEATURE_LS_COLOR
213
// Disable for a smaller (but less functional) ping
214
#define BB_FEATURE_FANCY_PING
216
// Make init use a simplified /etc/inittab file (recommended).
217
#define BB_FEATURE_USE_INITTAB
219
//Enable init being called as /linuxrc
220
// #define BB_FEATURE_LINUXRC
222
//Have init enable core dumping for child processes (for debugging only)
223
//#define BB_FEATURE_INIT_COREDUMPS
225
//Make sure nothing is printed to the console on boot
226
//#define BB_FEATURE_EXTRA_QUIET
228
// enable syslogd -R remotehost
229
//#define BB_FEATURE_REMOTE_LOG
232
//#define BB_FEATURE_IPC_SYSLOG
234
//Disable for a simple tail implementation (2.34k vs 3k for the full one).
235
//Both provide 'tail -f', but this cuts out -c, -q, -s, and -v.
236
#define BB_FEATURE_FANCY_TAIL
238
// Enable support for loop devices in mount
239
#define BB_FEATURE_MOUNT_LOOP
241
// Enable support for a real /etc/mtab file instead of /proc/mounts
242
//#define BB_FEATURE_MTAB_SUPPORT
244
// Enable support for mounting remote NFS volumes.
245
// You may need to mount with "-o nolock" if you are
246
// not running a local portmapper daemon...
248
// If you are using uClibc, be sure that you've already compiled
249
// uClibc with INCLUDE_RPC=true (contained in the Config file)
250
//#define BB_FEATURE_NFSMOUNT
252
// Enable support forced filesystem unmounting
253
// (i.e., in case of an unreachable NFS system).
254
#define BB_FEATURE_MOUNT_FORCE
256
// Enable support for creation of tar files.
257
#define BB_FEATURE_TAR_CREATE
259
// Enable support for "--exclude" and "-X" for excluding files
260
#define BB_FEATURE_TAR_EXCLUDE
262
// Enable support for tar -z option (currently only works for inflating)
263
#define BB_FEATURE_TAR_GZIP
265
// Enable reverse sort
266
#define BB_FEATURE_SORT_REVERSE
269
#define BB_FEATURE_SORT_UNIQUE
271
// Enable command line editing in the shell.
272
// Only relevant if a shell is enabled. On by default.
273
#define BB_FEATURE_COMMAND_EDITING
275
// Enable tab completion in the shell. This is now working quite nicely.
276
// This feature adds a bit over 4k. Only relevant if a shell is enabled.
277
#define BB_FEATURE_COMMAND_TAB_COMPLETION
279
// Attempts to match usernames in a ~-prefixed path
280
//#define BB_FEATURE_COMMAND_USERNAME_COMPLETION
282
//Allow the shell to invoke all the compiled in BusyBox applets as if they
283
//were shell builtins. Nice for staticly linking an emergency rescue shell,
284
//among other things. Off by default.
285
// Only relevant if a shell is enabled.
286
#define BB_FEATURE_SH_STANDALONE_SHELL
288
//When this is enabled, busybox shell applets can be called using full path
289
//names. This causes applets (i.e., most busybox commands) to override
290
//real commands on the filesystem. For example, if you run run /bin/cat, it
291
//will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_
292
//busybox. Some systems want this, others do not. Choose wisely. :-) This
293
//only has meaning when BB_FEATURE_SH_STANDALONE_SHELL is enabled.
294
// Only relevant if a shell is enabled. Off by default.
295
//#define BB_FEATURE_SH_APPLETS_ALWAYS_WIN
297
// Uncomment this option for a fancy shell prompt that includes the
298
// current username and hostname. On systems that don't have usernames
299
// or hostnames, this can look hideous.
300
// Only relevant if a shell is enabled.
301
//#define BB_FEATURE_SH_FANCY_PROMPT
303
// Uncomment this option to disable job control. Job control lets you
304
// run jobs in the background (which completely useless for is all you
305
// are doing is running scripts). Disabing this is bad for interactive
306
// use, since when you hit ^C in an application, it will also kill the
307
// shell. This adds about 2.5k on an x86 system.
308
//#define BB_FEATURE_ASH_JOB_CONTROL
310
//Turn on extra fbset options
311
//#define BB_FEATURE_FBSET_FANCY
313
//Turn on fbset readmode support
314
//#define BB_FEATURE_FBSET_READMODE
316
// Support insmod/lsmod/rmmod for post 2.1 kernels
317
#define BB_FEATURE_NEW_MODULE_INTERFACE
319
// Support insmod/lsmod/rmmod for pre 2.1 kernels
320
//#define BB_FEATURE_OLD_MODULE_INTERFACE
322
// Support module version checking
323
//#define BB_FEATURE_INSMOD_VERSION_CHECKING
325
// Support for uClinux memory usage optimization, which will load the image
326
// directly into the kernel memory. This divides memory requrements by three.
327
// If you are not running uClinux (i.e., your CPU has an MMU) leave this
329
//#define BB_FEATURE_INSMOD_LOADINKMEM
331
// Support for Minix filesystem, version 2
332
//#define BB_FEATURE_MINIX2
334
// Enable ifconfig status reporting output -- this feature adds 7k.
335
//#define BB_FEATURE_IFCONFIG_STATUS
337
// Enable ifconfig slip-specific options "keepalive" and "outfill"
338
//#define BB_FEATURE_IFCONFIG_SLIP
340
// Enable ifconfig options "mem_start", "io_addr", and "irq".
341
//#define BB_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
343
// Enable ifconfig option "hw". Currently works for only with "ether".
344
//#define BB_FEATURE_IFCONFIG_HW
346
// Allows "broadcast +" to set broadcast automatically based on hostaddr
347
// and netmask, at a cost of about 100 bytes of code (i386).
348
#define BB_FEATURE_IFCONFIG_BROADCAST_PLUS
350
// Enable busybox --install [-s]
351
// to create links (or symlinks) for all the commands that are
352
// compiled into the binary. (needs /proc filesystem)
353
//#define BB_FEATURE_INSTALLER
355
// Enable a nifty progress meter in wget (adds just under 2k)
356
#define BB_FEATURE_WGET_STATUSBAR
358
// Enable HTTP authentication in wget
359
#define BB_FEATURE_WGET_AUTHENTICATION
361
// Clean up all memory before exiting -- usually not needed
362
// as the OS can clean up... Don't enable this unless you
363
// have a really good reason for cleaning things up manually.
364
//#define BB_FEATURE_CLEAN_UP
366
// Support for human readable output by ls, du, etc.(example 13k, 23M, 235G)
367
#define BB_FEATURE_HUMAN_READABLE
369
// Support for the find -type option.
370
#define BB_FEATURE_FIND_TYPE
372
// Support for the find -perm option.
373
#define BB_FEATURE_FIND_PERM
375
// Support for the find -mtime option.
376
#define BB_FEATURE_FIND_MTIME
378
//// Support for the find -newer option.
379
#define BB_FEATURE_FIND_NEWER
381
// Support for the -A -B and -C context flags in grep
382
//#define BB_FEATURE_GREP_CONTEXT
384
// Support for the EGREP applet (alias to the grep applet)
385
//#define BB_FEATURE_GREP_EGREP_ALIAS
387
// Tell tftp what commands that should be supported.
388
#define BB_FEATURE_TFTP_PUT
389
#define BB_FEATURE_TFTP_GET
392
#define BB_FEATURE_VI_COLON // ":" colon commands, no "ex" mode
393
#define BB_FEATURE_VI_YANKMARK // Yank/Put commands and Mark cmds
394
#define BB_FEATURE_VI_SEARCH // search and replace cmds
395
#define BB_FEATURE_VI_USE_SIGNALS // catch signals
396
#define BB_FEATURE_VI_DOT_CMD // remember previous cmd and "." cmd
397
#define BB_FEATURE_VI_READONLY // vi -R and "view" mode
398
#define BB_FEATURE_VI_SETOPTS // set-able options, ai ic showmatch
399
#define BB_FEATURE_VI_SET // :set
400
//#define BB_FEATURE_VI_WIN_RESIZE // handle window resize
402
// Enable a if you system have setuped locale
403
//#define BB_LOCALE_SUPPORT
405
// Support for TELNET to pass TERM type to remote host. Adds 384 bytes.
406
#define BB_FEATURE_TELNET_TTYPE
408
// Support for devfs.
409
#define BB_FEATURE_DEVFS
411
// End of Features List
418
//---------------------------------------------------
419
// Nothing beyond this point should ever be touched by
420
// mere mortals so leave this stuff alone.
422
#include <features.h>
423
#if defined __UCLIBC__ && ! defined __UCLIBC_HAS_MMU__
424
#undef BB_RPM2CPIO /* Uses gz_open(), which uses fork() */
425
#undef BB_DPKG_DEB /* Uses gz_open(), which uses fork() */
426
#undef BB_FEATURE_TAR_GZIP /* Uses fork() */
427
#undef BB_UPDATE /* Uses daemon() */
429
#if defined BB_ASH || defined BB_HUSH || defined BB_LASH || defined BB_MSH
430
#if defined BB_FEATURE_COMMAND_EDITING
433
#undef BB_FEATURE_COMMAND_EDITING
434
#undef BB_FEATURE_COMMAND_TAB_COMPLETION
435
#undef BB_FEATURE_COMMAND_USERNAME_COMPLETION
436
#undef BB_FEATURE_SH_FANCY_PROMPT
439
#undef BB_FEATURE_SH_APPLETS_ALWAYS_WIN
440
#undef BB_FEATURE_SH_STANDALONE_SHELL
441
#undef BB_FEATURE_SH_FANCY_PROMPT
444
#if (defined BB_ASH || defined BB_HUSH || defined BB_MSH) && ! defined BB_TEST
455
#undef BB_FEATURE_LINUXRC
458
#if defined BB_MOUNT && defined BB_FEATURE_NFSMOUNT
462
#if defined BB_FEATURE_AUTOWIDTH
463
#ifndef BB_FEATURE_USE_TERMIOS
464
#define BB_FEATURE_USE_TERMIOS
468
#if defined BB_INSMOD || defined BB_LSMOD
469
#if ! defined BB_FEATURE_NEW_MODULE_INTERFACE && ! defined BB_FEATURE_OLD_MODULE_INTERFACE
470
#define BB_FEATURE_NEW_MODULE_INTERFACE
479
#if defined BB_FEATURE_IPC_SYSLOG
484
#if defined BB_ASH && defined BB_FEATURE_SH_IS_ASH
485
# define shell_main ash_main
486
#elif defined BB_HUSH && defined BB_FEATURE_SH_IS_HUSH
487
# define shell_main hush_main
488
#elif defined BB_LASH && defined BB_FEATURE_SH_IS_LASH
489
# define shell_main lash_main
490
#elif defined BB_MSH && defined BB_FEATURE_SH_IS_MSH
491
# define shell_main msh_main