aboutsummaryrefslogtreecommitdiff
path: root/Config.in
diff options
context:
space:
mode:
Diffstat (limited to 'Config.in')
-rw-r--r--Config.in618
1 files changed, 309 insertions, 309 deletions
diff --git a/Config.in b/Config.in
index cf72287be..c1cc591f3 100644
--- a/Config.in
+++ b/Config.in
@@ -15,314 +15,314 @@ config DESKTOP
15 bool "Enable compatibility for full-blown desktop systems" 15 bool "Enable compatibility for full-blown desktop systems"
16 default y 16 default y
17 help 17 help
18 Enable applet options and features which are not essential. 18 Enable applet options and features which are not essential.
19 Many applet options have dedicated config options to (de)select them 19 Many applet options have dedicated config options to (de)select them
20 under that applet; this options enables those options which have no 20 under that applet; this options enables those options which have no
21 individual config item for them. 21 individual config item for them.
22 22
23 Select this if you plan to use busybox on full-blown desktop machine 23 Select this if you plan to use busybox on full-blown desktop machine
24 with common Linux distro, which needs higher level of command-line 24 with common Linux distro, which needs higher level of command-line
25 compatibility. 25 compatibility.
26 26
27 If you are preparing your build to be used on an embedded box 27 If you are preparing your build to be used on an embedded box
28 where you have tighter control over the entire set of userspace 28 where you have tighter control over the entire set of userspace
29 tools, you can unselect this option for smaller code size. 29 tools, you can unselect this option for smaller code size.
30 30
31config EXTRA_COMPAT 31config EXTRA_COMPAT
32 bool "Provide compatible behavior for rare corner cases (bigger code)" 32 bool "Provide compatible behavior for rare corner cases (bigger code)"
33 default n 33 default n
34 help 34 help
35 This option makes grep, sed etc handle rare corner cases 35 This option makes grep, sed etc handle rare corner cases
36 (embedded NUL bytes and such). This makes code bigger and uses 36 (embedded NUL bytes and such). This makes code bigger and uses
37 some GNU extensions in libc. You probably only need this option 37 some GNU extensions in libc. You probably only need this option
38 if you plan to run busybox on desktop. 38 if you plan to run busybox on desktop.
39 39
40config INCLUDE_SUSv2 40config INCLUDE_SUSv2
41 bool "Enable obsolete features removed before SUSv3" 41 bool "Enable obsolete features removed before SUSv3"
42 default y 42 default y
43 help 43 help
44 This option will enable backwards compatibility with SuSv2, 44 This option will enable backwards compatibility with SuSv2,
45 specifically, old-style numeric options ('command -1 <file>') 45 specifically, old-style numeric options ('command -1 <file>')
46 will be supported in head, tail, and fold. (Note: should 46 will be supported in head, tail, and fold. (Note: should
47 affect renice too.) 47 affect renice too.)
48 48
49config LONG_OPTS 49config LONG_OPTS
50 bool "Support --long-options" 50 bool "Support --long-options"
51 default y 51 default y
52 help 52 help
53 Enable this if you want busybox applets to use the gnu --long-option 53 Enable this if you want busybox applets to use the gnu --long-option
54 style, in addition to single character -a -b -c style options. 54 style, in addition to single character -a -b -c style options.
55 55
56config SHOW_USAGE 56config SHOW_USAGE
57 bool "Show applet usage messages" 57 bool "Show applet usage messages"
58 default y 58 default y
59 help 59 help
60 Enabling this option, BusyBox applets will show terse help messages 60 Enabling this option, BusyBox applets will show terse help messages
61 when invoked with wrong arguments. 61 when invoked with wrong arguments.
62 If you do not want to show any (helpful) usage message when 62 If you do not want to show any (helpful) usage message when
63 issuing wrong command syntax, you can say 'N' here, 63 issuing wrong command syntax, you can say 'N' here,
64 saving approximately 7k. 64 saving approximately 7k.
65 65
66config FEATURE_VERBOSE_USAGE 66config FEATURE_VERBOSE_USAGE
67 bool "Show verbose applet usage messages" 67 bool "Show verbose applet usage messages"
68 default y 68 default y
69 depends on SHOW_USAGE 69 depends on SHOW_USAGE
70 help 70 help
71 All BusyBox applets will show verbose help messages when 71 All BusyBox applets will show verbose help messages when
72 busybox is invoked with --help. This will add a lot of text to the 72 busybox is invoked with --help. This will add a lot of text to the
73 busybox binary. In the default configuration, this will add about 73 busybox binary. In the default configuration, this will add about
74 13k, but it can add much more depending on your configuration. 74 13k, but it can add much more depending on your configuration.
75 75
76config FEATURE_COMPRESS_USAGE 76config FEATURE_COMPRESS_USAGE
77 bool "Store applet usage messages in compressed form" 77 bool "Store applet usage messages in compressed form"
78 default y 78 default y
79 depends on SHOW_USAGE 79 depends on SHOW_USAGE
80 help 80 help
81 Store usage messages in .bz compressed form, uncompress them 81 Store usage messages in .bz compressed form, uncompress them
82 on-the-fly when <applet> --help is called. 82 on-the-fly when <applet> --help is called.
83 83
84 If you have a really tiny busybox with few applets enabled (and 84 If you have a really tiny busybox with few applets enabled (and
85 bunzip2 isn't one of them), the overhead of the decompressor might 85 bunzip2 isn't one of them), the overhead of the decompressor might
86 be noticeable. Also, if you run executables directly from ROM 86 be noticeable. Also, if you run executables directly from ROM
87 and have very little memory, this might not be a win. Otherwise, 87 and have very little memory, this might not be a win. Otherwise,
88 you probably want this. 88 you probably want this.
89 89
90config LFS 90config LFS
91 bool "Support files > 2 GB" 91 bool "Support files > 2 GB"
92 default y 92 default y
93 help 93 help
94 If you want to build BusyBox with large file support, then enable 94 If you want to build BusyBox with large file support, then enable
95 this option. This will have no effect if your kernel or your C 95 this option. This will have no effect if your kernel or your C
96 library lacks large file support for large files. Some of the 96 library lacks large file support for large files. Some of the
97 programs that can benefit from large file support include dd, gzip, 97 programs that can benefit from large file support include dd, gzip,
98 cp, mount, tar, and many others. If you want to access files larger 98 cp, mount, tar, and many others. If you want to access files larger
99 than 2 Gigabytes, enable this option. 99 than 2 Gigabytes, enable this option.
100 100
101config PAM 101config PAM
102 bool "Support PAM (Pluggable Authentication Modules)" 102 bool "Support PAM (Pluggable Authentication Modules)"
103 default n 103 default n
104 help 104 help
105 Use PAM in some busybox applets (currently login and httpd) instead 105 Use PAM in some busybox applets (currently login and httpd) instead
106 of direct access to password database. 106 of direct access to password database.
107 107
108config FEATURE_DEVPTS 108config FEATURE_DEVPTS
109 bool "Use the devpts filesystem for Unix98 PTYs" 109 bool "Use the devpts filesystem for Unix98 PTYs"
110 default y 110 default y
111 help 111 help
112 Enable if you want BusyBox to use Unix98 PTY support. If enabled, 112 Enable if you want BusyBox to use Unix98 PTY support. If enabled,
113 busybox will use /dev/ptmx for the master side of the pseudoterminal 113 busybox will use /dev/ptmx for the master side of the pseudoterminal
114 and /dev/pts/<number> for the slave side. Otherwise, BSD style 114 and /dev/pts/<number> for the slave side. Otherwise, BSD style
115 /dev/ttyp<number> will be used. To use this option, you should have 115 /dev/ttyp<number> will be used. To use this option, you should have
116 devpts mounted. 116 devpts mounted.
117 117
118config FEATURE_UTMP 118config FEATURE_UTMP
119 bool "Support utmp file" 119 bool "Support utmp file"
120 default y 120 default y
121 help 121 help
122 The file /var/run/utmp is used to track who is currently logged in. 122 The file /var/run/utmp is used to track who is currently logged in.
123 With this option on, certain applets (getty, login, telnetd etc) 123 With this option on, certain applets (getty, login, telnetd etc)
124 will create and delete entries there. 124 will create and delete entries there.
125 "who" applet requires this option. 125 "who" applet requires this option.
126 126
127config FEATURE_WTMP 127config FEATURE_WTMP
128 bool "Support wtmp file" 128 bool "Support wtmp file"
129 default y 129 default y
130 depends on FEATURE_UTMP 130 depends on FEATURE_UTMP
131 help 131 help
132 The file /var/run/wtmp is used to track when users have logged into 132 The file /var/run/wtmp is used to track when users have logged into
133 and logged out of the system. 133 and logged out of the system.
134 With this option on, certain applets (getty, login, telnetd etc) 134 With this option on, certain applets (getty, login, telnetd etc)
135 will append new entries there. 135 will append new entries there.
136 "last" applet requires this option. 136 "last" applet requires this option.
137 137
138config FEATURE_PIDFILE 138config FEATURE_PIDFILE
139 bool "Support writing pidfiles" 139 bool "Support writing pidfiles"
140 default y 140 default y
141 help 141 help
142 This option makes some applets (e.g. crond, syslogd, inetd) write 142 This option makes some applets (e.g. crond, syslogd, inetd) write
143 a pidfile at the configured PID_FILE_PATH. It has no effect 143 a pidfile at the configured PID_FILE_PATH. It has no effect
144 on applets which require pidfiles to run. 144 on applets which require pidfiles to run.
145 145
146config PID_FILE_PATH 146config PID_FILE_PATH
147 string "Directory for pidfiles" 147 string "Directory for pidfiles"
148 default "/var/run" 148 default "/var/run"
149 depends on FEATURE_PIDFILE 149 depends on FEATURE_PIDFILE
150 help 150 help
151 This is the default path where pidfiles are created. Applets which 151 This is the default path where pidfiles are created. Applets which
152 allow you to set the pidfile path on the command line will override 152 allow you to set the pidfile path on the command line will override
153 this value. The option has no effect on applets that require you to 153 this value. The option has no effect on applets that require you to
154 specify a pidfile path. 154 specify a pidfile path.
155 155
156config BUSYBOX 156config BUSYBOX
157 bool "Include busybox applet" 157 bool "Include busybox applet"
158 default y 158 default y
159 help 159 help
160 The busybox applet provides general help regarding busybox and 160 The busybox applet provides general help regarding busybox and
161 allows the included applets to be listed. It's also required 161 allows the included applets to be listed. It's also required
162 if applet links are to be installed at runtime. If you unselect 162 if applet links are to be installed at runtime. If you unselect
163 this option, running busybox without any arguments will give 163 this option, running busybox without any arguments will give
164 just a cryptic error message: 164 just a cryptic error message:
165 165
166 $ busybox 166 $ busybox
167 busybox: applet not found 167 busybox: applet not found
168 168
169 Running "busybox APPLET [ARGS...]" will still work, of course. 169 Running "busybox APPLET [ARGS...]" will still work, of course.
170 170
171config FEATURE_INSTALLER 171config FEATURE_INSTALLER
172 bool "Support --install [-s] to install applet links at runtime" 172 bool "Support --install [-s] to install applet links at runtime"
173 default y 173 default y
174 depends on BUSYBOX 174 depends on BUSYBOX
175 help 175 help
176 Enable 'busybox --install [-s]' support. This will allow you to use 176 Enable 'busybox --install [-s]' support. This will allow you to use
177 busybox at runtime to create hard links or symlinks for all the 177 busybox at runtime to create hard links or symlinks for all the
178 applets that are compiled into busybox. 178 applets that are compiled into busybox.
179 179
180config INSTALL_NO_USR 180config INSTALL_NO_USR
181 bool "Don't use /usr" 181 bool "Don't use /usr"
182 default n 182 default n
183 help 183 help
184 Disable use of /usr. busybox --install and "make install" 184 Disable use of /usr. busybox --install and "make install"
185 will install applets only to /bin and /sbin, 185 will install applets only to /bin and /sbin,
186 never to /usr/bin or /usr/sbin. 186 never to /usr/bin or /usr/sbin.
187 187
188config FEATURE_SUID 188config FEATURE_SUID
189 bool "Drop SUID state for most applets" 189 bool "Drop SUID state for most applets"
190 default y 190 default y
191 help 191 help
192 With this option you can install the busybox binary belonging 192 With this option you can install the busybox binary belonging
193 to root with the suid bit set, enabling some applets to perform 193 to root with the suid bit set, enabling some applets to perform
194 root-level operations even when run by ordinary users 194 root-level operations even when run by ordinary users
195 (for example, mounting of user mounts in fstab needs this). 195 (for example, mounting of user mounts in fstab needs this).
196 196
197 With this option enabled, Busybox drops privileges for applets 197 With this option enabled, Busybox drops privileges for applets
198 that don't need root access, before entering their main() function. 198 that don't need root access, before entering their main() function.
199 199
200 If you are really paranoid and don't want even initial busybox code 200 If you are really paranoid and don't want even initial busybox code
201 to run under root for evey applet, build two busybox binaries with 201 to run under root for evey applet, build two busybox binaries with
202 different applets in them (and the appropriate symlinks pointing 202 different applets in them (and the appropriate symlinks pointing
203 to each binary), and only set the suid bit on the one that needs it. 203 to each binary), and only set the suid bit on the one that needs it.
204 204
205 Some applets which require root rights (need suid bit on the binary 205 Some applets which require root rights (need suid bit on the binary
206 or to be run by root) and will refuse to execute otherwise: 206 or to be run by root) and will refuse to execute otherwise:
207 crontab, login, passwd, su, vlock, wall. 207 crontab, login, passwd, su, vlock, wall.
208 208
209 The applets which will use root rights if they have them 209 The applets which will use root rights if they have them
210 (via suid bit, or because run by root), but would try to work 210 (via suid bit, or because run by root), but would try to work
211 without root right nevertheless: 211 without root right nevertheless:
212 findfs, ping[6], traceroute[6], mount. 212 findfs, ping[6], traceroute[6], mount.
213 213
214 Note that if you DO NOT select this option, but DO make busybox 214 Note that if you DO NOT select this option, but DO make busybox
215 suid root, ALL applets will run under root, which is a huge 215 suid root, ALL applets will run under root, which is a huge
216 security hole (think "cp /some/file /etc/passwd"). 216 security hole (think "cp /some/file /etc/passwd").
217 217
218config FEATURE_SUID_CONFIG 218config FEATURE_SUID_CONFIG
219 bool "Enable SUID configuration via /etc/busybox.conf" 219 bool "Enable SUID configuration via /etc/busybox.conf"
220 default y 220 default y
221 depends on FEATURE_SUID 221 depends on FEATURE_SUID
222 help 222 help
223 Allow the SUID/SGID state of an applet to be determined at runtime 223 Allow the SUID/SGID state of an applet to be determined at runtime
224 by checking /etc/busybox.conf. (This is sort of a poor man's sudo.) 224 by checking /etc/busybox.conf. (This is sort of a poor man's sudo.)
225 The format of this file is as follows: 225 The format of this file is as follows:
226 226
227 APPLET = [Ssx-][Ssx-][x-] [USER.GROUP] 227 APPLET = [Ssx-][Ssx-][x-] [USER.GROUP]
228 228
229 s: USER or GROUP is allowed to execute APPLET. 229 s: USER or GROUP is allowed to execute APPLET.
230 APPLET will run under USER or GROUP 230 APPLET will run under USER or GROUP
231 (reagardless of who's running it). 231 (regardless of who's running it).
232 S: USER or GROUP is NOT allowed to execute APPLET. 232 S: USER or GROUP is NOT allowed to execute APPLET.
233 APPLET will run under USER or GROUP. 233 APPLET will run under USER or GROUP.
234 This option is not very sensical. 234 This option is not very sensical.
235 x: USER/GROUP/others are allowed to execute APPLET. 235 x: USER/GROUP/others are allowed to execute APPLET.
236 No UID/GID change will be done when it is run. 236 No UID/GID change will be done when it is run.
237 -: USER/GROUP/others are not allowed to execute APPLET. 237 -: USER/GROUP/others are not allowed to execute APPLET.
238 238
239 An example might help: 239 An example might help:
240 240
241 [SUID] 241 |[SUID]
242 su = ssx root.0 # applet su can be run by anyone and runs with 242 |su = ssx root.0 # applet su can be run by anyone and runs with
243 # euid=0,egid=0 243 | # euid=0,egid=0
244 su = ssx # exactly the same 244 |su = ssx # exactly the same
245 245 |
246 mount = sx- root.disk # applet mount can be run by root and members 246 |mount = sx- root.disk # applet mount can be run by root and members
247 # of group disk (but not anyone else) 247 | # of group disk (but not anyone else)
248 # and runs with euid=0 (egid is not changed) 248 | # and runs with euid=0 (egid is not changed)
249 249 |
250 cp = --- # disable applet cp for everyone 250 |cp = --- # disable applet cp for everyone
251 251
252 The file has to be owned by user root, group root and has to be 252 The file has to be owned by user root, group root and has to be
253 writeable only by root: 253 writeable only by root:
254 (chown 0.0 /etc/busybox.conf; chmod 600 /etc/busybox.conf) 254 (chown 0.0 /etc/busybox.conf; chmod 600 /etc/busybox.conf)
255 The busybox executable has to be owned by user root, group 255 The busybox executable has to be owned by user root, group
256 root and has to be setuid root for this to work: 256 root and has to be setuid root for this to work:
257 (chown 0.0 /bin/busybox; chmod 4755 /bin/busybox) 257 (chown 0.0 /bin/busybox; chmod 4755 /bin/busybox)
258 258
259 Robert 'sandman' Griebl has more information here: 259 Robert 'sandman' Griebl has more information here:
260 <url: http://www.softforge.de/bb/suid.html >. 260 <url: http://www.softforge.de/bb/suid.html >.
261 261
262config FEATURE_SUID_CONFIG_QUIET 262config FEATURE_SUID_CONFIG_QUIET
263 bool "Suppress warning message if /etc/busybox.conf is not readable" 263 bool "Suppress warning message if /etc/busybox.conf is not readable"
264 default y 264 default y
265 depends on FEATURE_SUID_CONFIG 265 depends on FEATURE_SUID_CONFIG
266 help 266 help
267 /etc/busybox.conf should be readable by the user needing the SUID, 267 /etc/busybox.conf should be readable by the user needing the SUID,
268 check this option to avoid users to be notified about missing 268 check this option to avoid users to be notified about missing
269 permissions. 269 permissions.
270 270
271config FEATURE_PREFER_APPLETS 271config FEATURE_PREFER_APPLETS
272 bool "exec prefers applets" 272 bool "exec prefers applets"
273 default n 273 default n
274 help 274 help
275 This is an experimental option which directs applets about to 275 This is an experimental option which directs applets about to
276 call 'exec' to try and find an applicable busybox applet before 276 call 'exec' to try and find an applicable busybox applet before
277 searching the PATH. This is typically done by exec'ing 277 searching the PATH. This is typically done by exec'ing
278 /proc/self/exe. 278 /proc/self/exe.
279 279
280 This may affect shell, find -exec, xargs and similar applets. 280 This may affect shell, find -exec, xargs and similar applets.
281 They will use applets even if /bin/APPLET -> busybox link 281 They will use applets even if /bin/APPLET -> busybox link
282 is missing (or is not a link to busybox). However, this causes 282 is missing (or is not a link to busybox). However, this causes
283 problems in chroot jails without mounted /proc and with ps/top 283 problems in chroot jails without mounted /proc and with ps/top
284 (command name can be shown as 'exe' for applets started this way). 284 (command name can be shown as 'exe' for applets started this way).
285 285
286config BUSYBOX_EXEC_PATH 286config BUSYBOX_EXEC_PATH
287 string "Path to BusyBox executable" 287 string "Path to BusyBox executable"
288 default "/proc/self/exe" 288 default "/proc/self/exe"
289 help 289 help
290 When Busybox applets need to run other busybox applets, BusyBox 290 When Busybox applets need to run other busybox applets, BusyBox
291 sometimes needs to exec() itself. When the /proc filesystem is 291 sometimes needs to exec() itself. When the /proc filesystem is
292 mounted, /proc/self/exe always points to the currently running 292 mounted, /proc/self/exe always points to the currently running
293 executable. If you haven't got /proc, set this to wherever you 293 executable. If you haven't got /proc, set this to wherever you
294 want to run BusyBox from. 294 want to run BusyBox from.
295 295
296config SELINUX 296config SELINUX
297 bool "Support NSA Security Enhanced Linux" 297 bool "Support NSA Security Enhanced Linux"
298 default n 298 default n
299 select PLATFORM_LINUX 299 select PLATFORM_LINUX
300 help 300 help
301 Enable support for SELinux in applets ls, ps, and id. Also provide 301 Enable support for SELinux in applets ls, ps, and id. Also provide
302 the option of compiling in SELinux applets. 302 the option of compiling in SELinux applets.
303 303
304 If you do not have a complete SELinux userland installed, this stuff 304 If you do not have a complete SELinux userland installed, this stuff
305 will not compile. Specifially, libselinux 1.28 or better is 305 will not compile. Specifially, libselinux 1.28 or better is
306 directly required by busybox. If the installation is located in a 306 directly required by busybox. If the installation is located in a
307 non-standard directory, provide it by invoking make as follows: 307 non-standard directory, provide it by invoking make as follows:
308 308
309 CFLAGS=-I<libselinux-include-path> \ 309 CFLAGS=-I<libselinux-include-path> \
310 LDFLAGS=-L<libselinux-lib-path> \ 310 LDFLAGS=-L<libselinux-lib-path> \
311 make 311 make
312 312
313 Most people will leave this set to 'N'. 313 Most people will leave this set to 'N'.
314 314
315config FEATURE_CLEAN_UP 315config FEATURE_CLEAN_UP
316 bool "Clean up all memory before exiting (usually not needed)" 316 bool "Clean up all memory before exiting (usually not needed)"
317 default n 317 default n
318 help 318 help
319 As a size optimization, busybox normally exits without explicitly 319 As a size optimization, busybox normally exits without explicitly
320 freeing dynamically allocated memory or closing files. This saves 320 freeing dynamically allocated memory or closing files. This saves
321 space since the OS will clean up for us, but it can confuse debuggers 321 space since the OS will clean up for us, but it can confuse debuggers
322 like valgrind, which report tons of memory and resource leaks. 322 like valgrind, which report tons of memory and resource leaks.
323 323
324 Don't enable this unless you have a really good reason to clean 324 Don't enable this unless you have a really good reason to clean
325 things up manually. 325 things up manually.
326 326
327# These are auto-selected by other options 327# These are auto-selected by other options
328 328
@@ -330,26 +330,26 @@ config FEATURE_SYSLOG
330 bool #No description makes it a hidden option 330 bool #No description makes it a hidden option
331 default n 331 default n
332 #help 332 #help
333 # This option is auto-selected when you select any applet which may 333 #This option is auto-selected when you select any applet which may
334 # send its output to syslog. You do not need to select it manually. 334 #send its output to syslog. You do not need to select it manually.
335 335
336config FEATURE_HAVE_RPC 336config FEATURE_HAVE_RPC
337 bool #No description makes it a hidden option 337 bool #No description makes it a hidden option
338 default n 338 default n
339 #help 339 #help
340 # This is automatically selected if any of enabled applets need it. 340 #This is automatically selected if any of enabled applets need it.
341 # You do not need to select it manually. 341 #You do not need to select it manually.
342 342
343config PLATFORM_LINUX 343config PLATFORM_LINUX
344 bool #No description makes it a hidden option 344 bool #No description makes it a hidden option
345 default n 345 default n
346 #help 346 #help
347 # For the most part, busybox requires only POSIX compatibility 347 #For the most part, busybox requires only POSIX compatibility
348 # from the target system, but some applets and features use 348 #from the target system, but some applets and features use
349 # Linux-specific interfaces. 349 #Linux-specific interfaces.
350 # 350 #
351 # This is automatically selected if any applet or feature requires 351 #This is automatically selected if any applet or feature requires
352 # Linux-specific interfaces. You do not need to select it manually. 352 #Linux-specific interfaces. You do not need to select it manually.
353 353
354comment 'Build Options' 354comment 'Build Options'
355 355
@@ -357,37 +357,37 @@ config STATIC
357 bool "Build BusyBox as a static binary (no shared libs)" 357 bool "Build BusyBox as a static binary (no shared libs)"
358 default n 358 default n
359 help 359 help
360 If you want to build a static BusyBox binary, which does not 360 If you want to build a static BusyBox binary, which does not
361 use or require any shared libraries, then enable this option. 361 use or require any shared libraries, then enable this option.
362 This can cause BusyBox to be considerably larger, so you should 362 This can cause BusyBox to be considerably larger, so you should
363 leave this option false unless you have a good reason (i.e. 363 leave this option false unless you have a good reason (i.e.
364 your target platform does not support shared libraries, or 364 your target platform does not support shared libraries, or
365 you are building an initrd which doesn't need anything but 365 you are building an initrd which doesn't need anything but
366 BusyBox, etc). 366 BusyBox, etc).
367 367
368 Most people will leave this set to 'N'. 368 Most people will leave this set to 'N'.
369 369
370config PIE 370config PIE
371 bool "Build BusyBox as a position independent executable" 371 bool "Build BusyBox as a position independent executable"
372 default n 372 default n
373 depends on !STATIC 373 depends on !STATIC
374 help 374 help
375 Hardened code option. PIE binaries are loaded at a different 375 Hardened code option. PIE binaries are loaded at a different
376 address at each invocation. This has some overhead, 376 address at each invocation. This has some overhead,
377 particularly on x86-32 which is short on registers. 377 particularly on x86-32 which is short on registers.
378 378
379 Most people will leave this set to 'N'. 379 Most people will leave this set to 'N'.
380 380
381config NOMMU 381config NOMMU
382 bool "Force NOMMU build" 382 bool "Force NOMMU build"
383 default n 383 default n
384 help 384 help
385 Busybox tries to detect whether architecture it is being 385 Busybox tries to detect whether architecture it is being
386 built against supports MMU or not. If this detection fails, 386 built against supports MMU or not. If this detection fails,
387 or if you want to build NOMMU version of busybox for testing, 387 or if you want to build NOMMU version of busybox for testing,
388 you may force NOMMU build here. 388 you may force NOMMU build here.
389 389
390 Most people will leave this set to 'N'. 390 Most people will leave this set to 'N'.
391 391
392# PIE can be made to work with BUILD_LIBBUSYBOX, but currently 392# PIE can be made to work with BUILD_LIBBUSYBOX, but currently
393# build system does not support that 393# build system does not support that
@@ -396,128 +396,128 @@ config BUILD_LIBBUSYBOX
396 default n 396 default n
397 depends on !FEATURE_PREFER_APPLETS && !PIE && !STATIC 397 depends on !FEATURE_PREFER_APPLETS && !PIE && !STATIC
398 help 398 help
399 Build a shared library libbusybox.so.N.N.N which contains all 399 Build a shared library libbusybox.so.N.N.N which contains all
400 busybox code. 400 busybox code.
401 401
402 This feature allows every applet to be built as a really tiny 402 This feature allows every applet to be built as a really tiny
403 separate executable linked against the library: 403 separate executable linked against the library:
404 $ size 0_lib/l* 404 |$ size 0_lib/l*
405 text data bss dec hex filename 405 | text data bss dec hex filename
406 939 212 28 1179 49b 0_lib/last 406 | 939 212 28 1179 49b 0_lib/last
407 939 212 28 1179 49b 0_lib/less 407 | 939 212 28 1179 49b 0_lib/less
408 919138 8328 1556 929022 e2cfe 0_lib/libbusybox.so.1.N.M 408 | 919138 8328 1556 929022 e2cfe 0_lib/libbusybox.so.1.N.M
409 409
410 This is useful on NOMMU systems which are not capable 410 This is useful on NOMMU systems which are not capable
411 of sharing executables, but are capable of sharing code 411 of sharing executables, but are capable of sharing code
412 in dynamic libraries. 412 in dynamic libraries.
413 413
414config FEATURE_LIBBUSYBOX_STATIC 414config FEATURE_LIBBUSYBOX_STATIC
415 bool "Pull in all external references into libbusybox" 415 bool "Pull in all external references into libbusybox"
416 default n 416 default n
417 depends on BUILD_LIBBUSYBOX 417 depends on BUILD_LIBBUSYBOX
418 help 418 help
419 Make libbusybox library independent, not using or requiring 419 Make libbusybox library independent, not using or requiring
420 any other shared libraries. 420 any other shared libraries.
421 421
422config FEATURE_INDIVIDUAL 422config FEATURE_INDIVIDUAL
423 bool "Produce a binary for each applet, linked against libbusybox" 423 bool "Produce a binary for each applet, linked against libbusybox"
424 default y 424 default y
425 depends on BUILD_LIBBUSYBOX 425 depends on BUILD_LIBBUSYBOX
426 help 426 help
427 If your CPU architecture doesn't allow for sharing text/rodata 427 If your CPU architecture doesn't allow for sharing text/rodata
428 sections of running binaries, but allows for runtime dynamic 428 sections of running binaries, but allows for runtime dynamic
429 libraries, this option will allow you to reduce memory footprint 429 libraries, this option will allow you to reduce memory footprint
430 when you have many different applets running at once. 430 when you have many different applets running at once.
431 431
432 If your CPU architecture allows for sharing text/rodata, 432 If your CPU architecture allows for sharing text/rodata,
433 having single binary is more optimal. 433 having single binary is more optimal.
434 434
435 Each applet will be a tiny program, dynamically linked 435 Each applet will be a tiny program, dynamically linked
436 against libbusybox.so.N.N.N. 436 against libbusybox.so.N.N.N.
437 437
438 You need to have a working dynamic linker. 438 You need to have a working dynamic linker.
439 439
440config FEATURE_SHARED_BUSYBOX 440config FEATURE_SHARED_BUSYBOX
441 bool "Produce additional busybox binary linked against libbusybox" 441 bool "Produce additional busybox binary linked against libbusybox"
442 default y 442 default y
443 depends on BUILD_LIBBUSYBOX 443 depends on BUILD_LIBBUSYBOX
444 help 444 help
445 Build busybox, dynamically linked against libbusybox.so.N.N.N. 445 Build busybox, dynamically linked against libbusybox.so.N.N.N.
446 446
447 You need to have a working dynamic linker. 447 You need to have a working dynamic linker.
448 448
449### config BUILD_AT_ONCE 449### config BUILD_AT_ONCE
450### bool "Compile all sources at once" 450### bool "Compile all sources at once"
451### default n 451### default n
452### help 452### help
453### Normally each source-file is compiled with one invocation of 453### Normally each source-file is compiled with one invocation of
454### the compiler. 454### the compiler.
455### If you set this option, all sources are compiled at once. 455### If you set this option, all sources are compiled at once.
456### This gives the compiler more opportunities to optimize which can 456### This gives the compiler more opportunities to optimize which can
457### result in smaller and/or faster binaries. 457### result in smaller and/or faster binaries.
458### 458###
459### Setting this option will consume alot of memory, e.g. if you 459### Setting this option will consume alot of memory, e.g. if you
460### enable all applets with all features, gcc uses more than 300MB 460### enable all applets with all features, gcc uses more than 300MB
461### RAM during compilation of busybox. 461### RAM during compilation of busybox.
462### 462###
463### This option is most likely only beneficial for newer compilers 463### This option is most likely only beneficial for newer compilers
464### such as gcc-4.1 and above. 464### such as gcc-4.1 and above.
465### 465###
466### Say 'N' unless you know what you are doing. 466### Say 'N' unless you know what you are doing.
467 467
468config CROSS_COMPILER_PREFIX 468config CROSS_COMPILER_PREFIX
469 string "Cross Compiler prefix" 469 string "Cross Compiler prefix"
470 default "" 470 default ""
471 help 471 help
472 If you want to build BusyBox with a cross compiler, then you 472 If you want to build BusyBox with a cross compiler, then you
473 will need to set this to the cross-compiler prefix, for example, 473 will need to set this to the cross-compiler prefix, for example,
474 "i386-uclibc-". 474 "i386-uclibc-".
475 475
476 Note that CROSS_COMPILE environment variable or 476 Note that CROSS_COMPILE environment variable or
477 "make CROSS_COMPILE=xxx ..." will override this selection. 477 "make CROSS_COMPILE=xxx ..." will override this selection.
478 478
479 Native builds leave this empty. 479 Native builds leave this empty.
480 480
481config SYSROOT 481config SYSROOT
482 string "Path to sysroot" 482 string "Path to sysroot"
483 default "" 483 default ""
484 help 484 help
485 If you want to build BusyBox with a cross compiler, then you 485 If you want to build BusyBox with a cross compiler, then you
486 might also need to specify where /usr/include and /usr/lib 486 might also need to specify where /usr/include and /usr/lib
487 will be found. 487 will be found.
488 488
489 For example, BusyBox can be built against an installed 489 For example, BusyBox can be built against an installed
490 Android NDK, platform version 9, for ARM ABI with 490 Android NDK, platform version 9, for ARM ABI with
491 491
492 CONFIG_SYSROOT=/opt/android-ndk/platforms/android-9/arch-arm 492 CONFIG_SYSROOT=/opt/android-ndk/platforms/android-9/arch-arm
493 493
494 Native builds leave this empty. 494 Native builds leave this empty.
495 495
496config EXTRA_CFLAGS 496config EXTRA_CFLAGS
497 string "Additional CFLAGS" 497 string "Additional CFLAGS"
498 default "" 498 default ""
499 help 499 help
500 Additional CFLAGS to pass to the compiler verbatim. 500 Additional CFLAGS to pass to the compiler verbatim.
501 501
502config EXTRA_LDFLAGS 502config EXTRA_LDFLAGS
503 string "Additional LDFLAGS" 503 string "Additional LDFLAGS"
504 default "" 504 default ""
505 help 505 help
506 Additional LDFLAGS to pass to the linker verbatim. 506 Additional LDFLAGS to pass to the linker verbatim.
507 507
508config EXTRA_LDLIBS 508config EXTRA_LDLIBS
509 string "Additional LDLIBS" 509 string "Additional LDLIBS"
510 default "" 510 default ""
511 help 511 help
512 Additional LDLIBS to pass to the linker with -l. 512 Additional LDLIBS to pass to the linker with -l.
513 513
514config USE_PORTABLE_CODE 514config USE_PORTABLE_CODE
515 bool "Avoid using GCC-specific code constructs" 515 bool "Avoid using GCC-specific code constructs"
516 default n 516 default n
517 help 517 help
518 Use this option if you are trying to compile busybox with 518 Use this option if you are trying to compile busybox with
519 compiler other than gcc. 519 compiler other than gcc.
520 If you do use gcc, this option may needlessly increase code size. 520 If you do use gcc, this option may needlessly increase code size.
521 521
522comment 'Installation Options ("make install" behavior)' 522comment 'Installation Options ("make install" behavior)'
523 523
@@ -525,32 +525,32 @@ choice
525 prompt "What kind of applet links to install" 525 prompt "What kind of applet links to install"
526 default INSTALL_APPLET_SYMLINKS 526 default INSTALL_APPLET_SYMLINKS
527 help 527 help
528 Choose what kind of links to applets are created by "make install". 528 Choose what kind of links to applets are created by "make install".
529 529
530config INSTALL_APPLET_SYMLINKS 530config INSTALL_APPLET_SYMLINKS
531 bool "as soft-links" 531 bool "as soft-links"
532 help 532 help
533 Install applets as soft-links to the busybox binary. This needs some 533 Install applets as soft-links to the busybox binary. This needs some
534 free inodes on the filesystem, but might help with filesystem 534 free inodes on the filesystem, but might help with filesystem
535 generators that can't cope with hard-links. 535 generators that can't cope with hard-links.
536 536
537config INSTALL_APPLET_HARDLINKS 537config INSTALL_APPLET_HARDLINKS
538 bool "as hard-links" 538 bool "as hard-links"
539 help 539 help
540 Install applets as hard-links to the busybox binary. This might 540 Install applets as hard-links to the busybox binary. This might
541 count on a filesystem with few inodes. 541 count on a filesystem with few inodes.
542 542
543config INSTALL_APPLET_SCRIPT_WRAPPERS 543config INSTALL_APPLET_SCRIPT_WRAPPERS
544 bool "as script wrappers" 544 bool "as script wrappers"
545 help 545 help
546 Install applets as script wrappers that call the busybox binary. 546 Install applets as script wrappers that call the busybox binary.
547 547
548config INSTALL_APPLET_DONT 548config INSTALL_APPLET_DONT
549 bool "not installed" 549 bool "not installed"
550 help 550 help
551 Do not install applet links. Useful when you plan to use 551 Do not install applet links. Useful when you plan to use
552 busybox --install for installing links, or plan to use 552 busybox --install for installing links, or plan to use
553 a standalone shell and thus don't need applet links. 553 a standalone shell and thus don't need applet links.
554 554
555endchoice 555endchoice
556 556
@@ -559,23 +559,23 @@ choice
559 default INSTALL_SH_APPLET_SYMLINK 559 default INSTALL_SH_APPLET_SYMLINK
560 depends on INSTALL_APPLET_SCRIPT_WRAPPERS 560 depends on INSTALL_APPLET_SCRIPT_WRAPPERS
561 help 561 help
562 Choose how you install /bin/sh applet link. 562 Choose how you install /bin/sh applet link.
563 563
564config INSTALL_SH_APPLET_SYMLINK 564config INSTALL_SH_APPLET_SYMLINK
565 bool "as soft-link" 565 bool "as soft-link"
566 help 566 help
567 Install /bin/sh applet as soft-link to the busybox binary. 567 Install /bin/sh applet as soft-link to the busybox binary.
568 568
569config INSTALL_SH_APPLET_HARDLINK 569config INSTALL_SH_APPLET_HARDLINK
570 bool "as hard-link" 570 bool "as hard-link"
571 help 571 help
572 Install /bin/sh applet as hard-link to the busybox binary. 572 Install /bin/sh applet as hard-link to the busybox binary.
573 573
574config INSTALL_SH_APPLET_SCRIPT_WRAPPER 574config INSTALL_SH_APPLET_SCRIPT_WRAPPER
575 bool "as script wrapper" 575 bool "as script wrapper"
576 help 576 help
577 Install /bin/sh applet as script wrapper that calls 577 Install /bin/sh applet as script wrapper that calls
578 the busybox binary. 578 the busybox binary.
579 579
580endchoice 580endchoice
581 581
@@ -583,7 +583,7 @@ config PREFIX
583 string "BusyBox installation prefix" 583 string "BusyBox installation prefix"
584 default "./_install" 584 default "./_install"
585 help 585 help
586 Define your directory to install BusyBox files/subdirs in. 586 Define your directory to install BusyBox files/subdirs in.
587 587
588comment 'Debugging Options' 588comment 'Debugging Options'
589 589
@@ -591,81 +591,81 @@ config DEBUG
591 bool "Build BusyBox with extra Debugging symbols" 591 bool "Build BusyBox with extra Debugging symbols"
592 default n 592 default n
593 help 593 help
594 Say Y here if you wish to examine BusyBox internals while applets are 594 Say Y here if you wish to examine BusyBox internals while applets are
595 running. This increases the size of the binary considerably, and 595 running. This increases the size of the binary considerably, and
596 should only be used when doing development. If you are doing 596 should only be used when doing development. If you are doing
597 development and want to debug BusyBox, answer Y. 597 development and want to debug BusyBox, answer Y.
598 598
599 Most people should answer N. 599 Most people should answer N.
600 600
601config DEBUG_PESSIMIZE 601config DEBUG_PESSIMIZE
602 bool "Disable compiler optimizations" 602 bool "Disable compiler optimizations"
603 default n 603 default n
604 depends on DEBUG 604 depends on DEBUG
605 help 605 help
606 The compiler's optimization of source code can eliminate and reorder 606 The compiler's optimization of source code can eliminate and reorder
607 code, resulting in an executable that's hard to understand when 607 code, resulting in an executable that's hard to understand when
608 stepping through it with a debugger. This switches it off, resulting 608 stepping through it with a debugger. This switches it off, resulting
609 in a much bigger executable that more closely matches the source 609 in a much bigger executable that more closely matches the source
610 code. 610 code.
611 611
612config DEBUG_SANITIZE 612config DEBUG_SANITIZE
613 bool "Enable runtime sanitizers (ASAN/LSAN/USAN/etc...)" 613 bool "Enable runtime sanitizers (ASAN/LSAN/USAN/etc...)"
614 default n 614 default n
615 help 615 help
616 Say Y here if you want to enable runtime sanitizers. These help 616 Say Y here if you want to enable runtime sanitizers. These help
617 catch bad memory accesses (e.g. buffer overflows), but will make 617 catch bad memory accesses (e.g. buffer overflows), but will make
618 the executable larger and slow down runtime a bit. 618 the executable larger and slow down runtime a bit.
619 619
620 This adds -fsanitize=foo options to gcc command line. 620 This adds -fsanitize=foo options to gcc command line.
621 621
622 If you aren't developing/testing busybox, say N here. 622 If you aren't developing/testing busybox, say N here.
623 623
624config UNIT_TEST 624config UNIT_TEST
625 bool "Build unit tests" 625 bool "Build unit tests"
626 default n 626 default n
627 help 627 help
628 Say Y here if you want to build unit tests (both the framework and 628 Say Y here if you want to build unit tests (both the framework and
629 test cases) as a Busybox applet. This results in bigger code, so you 629 test cases) as a Busybox applet. This results in bigger code, so you
630 probably don't want this option in production builds. 630 probably don't want this option in production builds.
631 631
632config WERROR 632config WERROR
633 bool "Abort compilation on any warning" 633 bool "Abort compilation on any warning"
634 default n 634 default n
635 help 635 help
636 This adds -Werror to gcc command line. 636 This adds -Werror to gcc command line.
637 637
638 Most people should answer N. 638 Most people should answer N.
639 639
640choice 640choice
641 prompt "Additional debugging library" 641 prompt "Additional debugging library"
642 default NO_DEBUG_LIB 642 default NO_DEBUG_LIB
643 help 643 help
644 Using an additional debugging library will make BusyBox become 644 Using an additional debugging library will make BusyBox become
645 considerable larger and will cause it to run more slowly. You 645 considerable larger and will cause it to run more slowly. You
646 should always leave this option disabled for production use. 646 should always leave this option disabled for production use.
647 647
648 dmalloc support: 648 dmalloc support:
649 ---------------- 649 ----------------
650 This enables compiling with dmalloc ( http://dmalloc.com/ ) 650 This enables compiling with dmalloc ( http://dmalloc.com/ )
651 which is an excellent public domain mem leak and malloc problem 651 which is an excellent public domain mem leak and malloc problem
652 detector. To enable dmalloc, before running busybox you will 652 detector. To enable dmalloc, before running busybox you will
653 want to properly set your environment, for example: 653 want to properly set your environment, for example:
654 export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile 654 export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
655 The 'debug=' value is generated using the following command 655 The 'debug=' value is generated using the following command
656 dmalloc -p log-stats -p log-non-free -p log-bad-space \ 656 dmalloc -p log-stats -p log-non-free -p log-bad-space \
657 -p log-elapsed-time -p check-fence -p check-heap \ 657 -p log-elapsed-time -p check-fence -p check-heap \
658 -p check-lists -p check-blank -p check-funcs -p realloc-copy \ 658 -p check-lists -p check-blank -p check-funcs -p realloc-copy \
659 -p allow-free-null 659 -p allow-free-null
660 660
661 Electric-fence support: 661 Electric-fence support:
662 ----------------------- 662 -----------------------
663 This enables compiling with Electric-fence support. Electric 663 This enables compiling with Electric-fence support. Electric
664 fence is another very useful malloc debugging library which uses 664 fence is another very useful malloc debugging library which uses
665 your computer's virtual memory hardware to detect illegal memory 665 your computer's virtual memory hardware to detect illegal memory
666 accesses. This support will make BusyBox be considerable larger 666 accesses. This support will make BusyBox be considerable larger
667 and run slower, so you should leave this option disabled unless 667 and run slower, so you should leave this option disabled unless
668 you are hunting a hard to find memory problem. 668 you are hunting a hard to find memory problem.
669 669
670 670
671config NO_DEBUG_LIB 671config NO_DEBUG_LIB