diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-12-05 08:41:41 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-12-05 08:41:41 +0000 |
commit | c9f20d9fb93c6c316518483fd103f3afab5cf1af (patch) | |
tree | 72904548bb54dcaf78017d3b35296765437e0bd5 /scripts/Configure | |
parent | deca106b6dad70ad0a1312a82d762aa8d8ad52ba (diff) | |
download | busybox-w32-c9f20d9fb93c6c316518483fd103f3afab5cf1af.tar.gz busybox-w32-c9f20d9fb93c6c316518483fd103f3afab5cf1af.tar.bz2 busybox-w32-c9f20d9fb93c6c316518483fd103f3afab5cf1af.zip |
Yet another major rework of the BusyBox config system, using the considerably
modified Kbuild system I put into uClibc. With this, there should be no more
need to modify Rules.mak since I've moved all the interesting options into the
config system. I think I've got everything updated, but you never know, I may
have made some mistakes, so watch closely.
-Erik
Diffstat (limited to 'scripts/Configure')
-rw-r--r-- | scripts/Configure | 705 |
1 files changed, 0 insertions, 705 deletions
diff --git a/scripts/Configure b/scripts/Configure deleted file mode 100644 index 0a73a6493..000000000 --- a/scripts/Configure +++ /dev/null | |||
@@ -1,705 +0,0 @@ | |||
1 | #! /bin/sh | ||
2 | # | ||
3 | # This script is used to configure BusyBox. | ||
4 | # | ||
5 | # It was inspired by the challenge in the original Configure script | ||
6 | # to ``do something better'', combined with the actual need to ``do | ||
7 | # something better'' because the old configure script wasn't flexible | ||
8 | # enough. | ||
9 | # | ||
10 | # Raymond Chen was the original author of Configure. | ||
11 | # Michael Elizabeth Chastain (mec@shout.net) is the current maintainer. | ||
12 | # | ||
13 | # 050793 - use IFS='@' to get around a bug in a pre-version of bash-1.13 | ||
14 | # with an empty IFS. | ||
15 | # | ||
16 | # 030995 (storner@osiris.ping.dk) - added support for tri-state answers, | ||
17 | # for selecting modules to compile. | ||
18 | # | ||
19 | # 180995 Bernhard Kaindl (bkaindl@ping.at) - added dummy functions for | ||
20 | # use with a config.in modified for make menuconfig. | ||
21 | # | ||
22 | # 301195 (boldt@math.ucsb.edu) - added help text support | ||
23 | # | ||
24 | # 281295 Paul Gortmaker - make tri_state functions collapse to boolean | ||
25 | # if module support is not enabled. | ||
26 | # | ||
27 | # 010296 Aaron Ucko (ucko@vax1.rockhurst.edu) - fix int and hex to accept | ||
28 | # arbitrary ranges | ||
29 | # | ||
30 | # 150296 Dick Streefland (dicks@tasking.nl) - report new configuration | ||
31 | # items and ask for a value even when doing a "make oldconfig" | ||
32 | # | ||
33 | # 200396 Tom Dyas (tdyas@eden.rutgers.edu) - when the module option is | ||
34 | # chosen for an item, define the macro <option_name>_MODULE | ||
35 | # | ||
36 | # 090397 Axel Boldt (boldt@math.ucsb.edu) - avoid ? and + in regular | ||
37 | # expressions for GNU expr since version 1.15 and up use \? and \+. | ||
38 | # | ||
39 | # 300397 Phil Blundell (pjb27@cam.ac.uk) - added support for min/max | ||
40 | # arguments to "int", allow dep_tristate to take a list of dependencies | ||
41 | # rather than just one. | ||
42 | # | ||
43 | # 090398 Axel Boldt (boldt@math.ucsb.edu) - allow for empty lines in help | ||
44 | # texts. | ||
45 | # | ||
46 | # 102598 Michael Chastain (mec@shout.net) - put temporary files in | ||
47 | # current directory, not in /tmp. | ||
48 | # | ||
49 | # 24 January 1999, Michael Elizabeth Chastain, <mec@shout.net> | ||
50 | # - Improve the exit message (Jeff Ronne). | ||
51 | # | ||
52 | # 7 October 2000, Ghozlane Toumi, <gtoumi@messel.emse.fr> | ||
53 | # added switches for "random" , "all yes" and "all modules" | ||
54 | # | ||
55 | |||
56 | # | ||
57 | # Make sure we're really running bash. | ||
58 | # | ||
59 | # I would really have preferred to write this script in a language with | ||
60 | # better string handling, but alas, bash is the only scripting language | ||
61 | # that I can be reasonable sure everybody has on their linux machine. | ||
62 | # | ||
63 | [ -z "$BASH" ] && { echo "Configure requires bash" 1>&2; exit 1; } | ||
64 | |||
65 | # Disable filename globbing once and for all. | ||
66 | # Enable function cacheing. | ||
67 | set -f -h | ||
68 | |||
69 | # | ||
70 | # Dummy functions for use with a config.in modified for menuconf | ||
71 | # | ||
72 | function mainmenu_option () { | ||
73 | : | ||
74 | } | ||
75 | function mainmenu_name () { | ||
76 | : | ||
77 | } | ||
78 | function endmenu () { | ||
79 | : | ||
80 | } | ||
81 | |||
82 | # | ||
83 | # returns a random number between 1 and $1 | ||
84 | # | ||
85 | function rnd () { | ||
86 | rnd=$[ $RANDOM % $1 + 1 ] | ||
87 | } | ||
88 | |||
89 | # | ||
90 | # randomly chose a number in a config list (LIST_CONFIG_NAME) | ||
91 | # or in a range ( MIN_CONFIG_NAME MAX_CONFIG_NAME ) | ||
92 | # ONLY if there is no forced default (and we are in an "auto" mode) | ||
93 | # we are limited by the range of values taken by "$RANDOM" | ||
94 | # | ||
95 | # rndval CONFIG_NAME | ||
96 | # | ||
97 | |||
98 | function rndval () { | ||
99 | [ "$AUTO" != "yes" -o -n "$old" ] && return | ||
100 | def_list=$(eval echo "\${LIST_$1}") | ||
101 | def_min=$(eval echo "\${MIN_$1}") | ||
102 | def_max=$(eval echo "\${MAX_$1}") | ||
103 | |||
104 | if [ -n "$def_list" ]; then | ||
105 | set -- $(echo $def_list | sed 's/,/ /g') | ||
106 | rnd $# | ||
107 | while [ $rnd -le $# ] ; do | ||
108 | def=$1 | ||
109 | shift | ||
110 | done | ||
111 | return | ||
112 | fi | ||
113 | if [ -n "$def_min" -a -n "$def_max" ]; then | ||
114 | rnd $[ $def_max - $def_min ] | ||
115 | def=$[ $def_min + $rnd ] | ||
116 | fi | ||
117 | } | ||
118 | |||
119 | # | ||
120 | # help prints the corresponding help text from Configure.help to stdout | ||
121 | # | ||
122 | # help variable | ||
123 | # | ||
124 | function help () { | ||
125 | if [ -f docs/Configure.help ] | ||
126 | then | ||
127 | #first escape regexp special characters in the argument: | ||
128 | var=$(echo "$1"|sed 's/[][\/.^$*]/\\&/g') | ||
129 | #now pick out the right help text: | ||
130 | text=$(sed -n "/^$var[ ]*\$/,\${ | ||
131 | /^$var[ ]*\$/c\\ | ||
132 | ${var}:\\ | ||
133 | |||
134 | /^#/b | ||
135 | /^[^ ]/q | ||
136 | /<file:\\([^>]*\\)>/s//\\1/g | ||
137 | p | ||
138 | }" docs/Configure.help) | ||
139 | if [ -z "$text" ] | ||
140 | then | ||
141 | echo; echo " Sorry, no help available for this option yet.";echo | ||
142 | else | ||
143 | (echo; echo "$text") | ${PAGER:-more} | ||
144 | fi | ||
145 | else | ||
146 | echo; | ||
147 | echo " Can't access the file docs/Configure.help which" | ||
148 | echo " should contain the help texts." | ||
149 | echo | ||
150 | fi | ||
151 | } | ||
152 | |||
153 | |||
154 | # | ||
155 | # readln reads a line into $ans. | ||
156 | # | ||
157 | # readln prompt default oldval | ||
158 | # | ||
159 | function readln () { | ||
160 | if [ "$AUTO" = "yes" ]; then | ||
161 | echo -n "$1" | ||
162 | ans=$2 | ||
163 | echo $ans | ||
164 | elif [ "$DEFAULT" = "-d" -a -n "$3" ]; then | ||
165 | echo "$1" | ||
166 | ans=$2 | ||
167 | else | ||
168 | echo -n "$1" | ||
169 | [ -z "$3" ] && echo -n "(NEW) " | ||
170 | IFS='@' read ans || exit 1 | ||
171 | [ -z "$ans" ] && ans=$2 | ||
172 | fi | ||
173 | } | ||
174 | |||
175 | # | ||
176 | # comment does some pretty-printing | ||
177 | # | ||
178 | # comment 'xxx' | ||
179 | # | ||
180 | function comment () { | ||
181 | echo "*"; echo "* $1" ; echo "*" | ||
182 | (echo "" ; echo "#"; echo "# $1" ; echo "#") >>$CONFIG | ||
183 | (echo "" ; echo "/*"; echo " * $1" ; echo " */") >>$CONFIG_H | ||
184 | } | ||
185 | |||
186 | # | ||
187 | # define_bool sets the value of a boolean argument | ||
188 | # | ||
189 | # define_bool define value | ||
190 | # | ||
191 | function define_bool () { | ||
192 | define_tristate $1 $2 | ||
193 | } | ||
194 | |||
195 | function define_tristate () { | ||
196 | case "$2" in | ||
197 | "y") | ||
198 | echo "$1=y" >>$CONFIG | ||
199 | echo "#define $1 1" >>$CONFIG_H | ||
200 | ;; | ||
201 | |||
202 | "m") | ||
203 | echo "$1=m" >>$CONFIG | ||
204 | echo "#undef $1" >>$CONFIG_H | ||
205 | echo "#define $1_MODULE 1" >>$CONFIG_H | ||
206 | ;; | ||
207 | |||
208 | "n") | ||
209 | echo "# $1 is not set" >>$CONFIG | ||
210 | echo "#undef $1" >>$CONFIG_H | ||
211 | ;; | ||
212 | esac | ||
213 | eval "$1=$2" | ||
214 | } | ||
215 | |||
216 | # | ||
217 | # bool processes a boolean argument | ||
218 | # | ||
219 | # bool question define | ||
220 | # | ||
221 | function bool () { | ||
222 | old=$(eval echo "\${$2}") | ||
223 | def=${old:-'n'} | ||
224 | if [ "$AUTO" = "yes" -a -z "$old" ]; then | ||
225 | if [ "$RND" = "-r" ]; then | ||
226 | rnd 2 | ||
227 | case $rnd in | ||
228 | "1") def="y" ;; | ||
229 | "2") def="n" ;; | ||
230 | esac | ||
231 | else | ||
232 | def=$DEF_ANS; | ||
233 | fi | ||
234 | fi | ||
235 | case "$def" in | ||
236 | "y" | "m") defprompt="Y/n/?" | ||
237 | def="y" | ||
238 | ;; | ||
239 | "n") defprompt="N/y/?" | ||
240 | ;; | ||
241 | esac | ||
242 | while :; do | ||
243 | readln "$1 ($2) [$defprompt] " "$def" "$old" | ||
244 | case "$ans" in | ||
245 | [yY] | [yY]es ) define_bool "$2" "y" | ||
246 | break;; | ||
247 | [nN] | [nN]o ) define_bool "$2" "n" | ||
248 | break;; | ||
249 | * ) help "$2" | ||
250 | ;; | ||
251 | esac | ||
252 | done | ||
253 | } | ||
254 | |||
255 | # | ||
256 | # tristate processes a tristate argument | ||
257 | # | ||
258 | # tristate question define | ||
259 | # | ||
260 | function tristate () { | ||
261 | if [ "$CONFIG_MODULES" != "y" ]; then | ||
262 | bool "$1" "$2" | ||
263 | else | ||
264 | old=$(eval echo "\${$2}") | ||
265 | def=${old:-'n'} | ||
266 | if [ "$AUTO" = "yes" -a -z "$old" ]; then | ||
267 | if [ "$RND" = "-r" ]; then | ||
268 | rnd 3 | ||
269 | case $rnd in | ||
270 | "1") def="y" ;; | ||
271 | "2") def="n" ;; | ||
272 | "3") def="m" ;; | ||
273 | esac | ||
274 | else | ||
275 | def=$DEF_ANS | ||
276 | fi | ||
277 | fi | ||
278 | case "$def" in | ||
279 | "y") defprompt="Y/m/n/?" | ||
280 | ;; | ||
281 | "m") defprompt="M/n/y/?" | ||
282 | ;; | ||
283 | "n") defprompt="N/y/m/?" | ||
284 | ;; | ||
285 | esac | ||
286 | while :; do | ||
287 | readln "$1 ($2) [$defprompt] " "$def" "$old" | ||
288 | case "$ans" in | ||
289 | [yY] | [yY]es ) define_tristate "$2" "y" | ||
290 | break ;; | ||
291 | [nN] | [nN]o ) define_tristate "$2" "n" | ||
292 | break ;; | ||
293 | [mM] ) define_tristate "$2" "m" | ||
294 | break ;; | ||
295 | * ) help "$2" | ||
296 | ;; | ||
297 | esac | ||
298 | done | ||
299 | fi | ||
300 | } | ||
301 | |||
302 | # | ||
303 | # dep_tristate processes a tristate argument that depends upon | ||
304 | # another option or options. If any of the options we depend upon is a | ||
305 | # module, then the only allowable options are M or N. If all are Y, then | ||
306 | # this is a normal tristate. This is used in cases where modules | ||
307 | # are nested, and one module requires the presence of something | ||
308 | # else in the kernel. | ||
309 | # | ||
310 | # dep_tristate question define default ... | ||
311 | # | ||
312 | function dep_tristate () { | ||
313 | old=$(eval echo "\${$2}") | ||
314 | def=${old:-'n'} | ||
315 | ques=$1 | ||
316 | var=$2 | ||
317 | need_module=0 | ||
318 | shift 2 | ||
319 | while [ $# -gt 0 ]; do | ||
320 | case "$1" in | ||
321 | n) | ||
322 | define_tristate "$var" "n" | ||
323 | return | ||
324 | ;; | ||
325 | m) | ||
326 | need_module=1 | ||
327 | ;; | ||
328 | esac | ||
329 | shift | ||
330 | done | ||
331 | |||
332 | if [ $need_module = 1 ]; then | ||
333 | if [ "$CONFIG_MODULES" = "y" ]; then | ||
334 | if [ "$AUTO" = "yes" -a -z "$old" ]; then | ||
335 | if [ "$RND" = "-r" ]; then | ||
336 | rnd 2 | ||
337 | case $rnd in | ||
338 | "1") def="m" ;; | ||
339 | "2") def="n" ;; | ||
340 | esac | ||
341 | else | ||
342 | def=$DEF_ANS | ||
343 | fi | ||
344 | fi | ||
345 | case "$def" in | ||
346 | "y" | "m") defprompt="M/n/?" | ||
347 | def="m" | ||
348 | ;; | ||
349 | "n") defprompt="N/m/?" | ||
350 | ;; | ||
351 | esac | ||
352 | while :; do | ||
353 | readln "$ques ($var) [$defprompt] " "$def" "$old" | ||
354 | case "$ans" in | ||
355 | [nN] | [nN]o ) define_tristate "$var" "n" | ||
356 | break ;; | ||
357 | [mM] ) define_tristate "$var" "m" | ||
358 | break ;; | ||
359 | [yY] | [yY]es ) echo | ||
360 | echo " This answer is not allowed, because it is not consistent with" | ||
361 | echo " your other choices." | ||
362 | echo " This driver depends on another one which you chose to compile" | ||
363 | echo " as a module. This means that you can either compile this one" | ||
364 | echo " as a module as well (with M) or leave it out altogether (N)." | ||
365 | echo | ||
366 | ;; | ||
367 | * ) help "$var" | ||
368 | ;; | ||
369 | esac | ||
370 | done | ||
371 | fi | ||
372 | else | ||
373 | tristate "$ques" "$var" | ||
374 | fi | ||
375 | } | ||
376 | |||
377 | function dep_bool () { | ||
378 | ques=$1 | ||
379 | var=$2 | ||
380 | shift 2 | ||
381 | while [ $# -gt 0 ]; do | ||
382 | case "$1" in | ||
383 | m | n) | ||
384 | define_bool "$var" "n" | ||
385 | return | ||
386 | ;; | ||
387 | esac | ||
388 | shift | ||
389 | done | ||
390 | |||
391 | bool "$ques" "$var" | ||
392 | } | ||
393 | |||
394 | function dep_mbool () { | ||
395 | ques=$1 | ||
396 | var=$2 | ||
397 | shift 2 | ||
398 | while [ $# -gt 0 ]; do | ||
399 | case "$1" in | ||
400 | n) | ||
401 | define_bool "$var" "n" | ||
402 | return | ||
403 | ;; | ||
404 | esac | ||
405 | shift | ||
406 | done | ||
407 | |||
408 | bool "$ques" "$var" | ||
409 | } | ||
410 | |||
411 | # | ||
412 | # define_int sets the value of a integer argument | ||
413 | # | ||
414 | # define_int define value | ||
415 | # | ||
416 | function define_int () { | ||
417 | echo "$1=$2" >>$CONFIG | ||
418 | echo "#define $1 ($2)" >>$CONFIG_H | ||
419 | eval "$1=$2" | ||
420 | } | ||
421 | |||
422 | # | ||
423 | # int processes an integer argument with optional limits | ||
424 | # | ||
425 | # int question define default [min max] | ||
426 | # | ||
427 | function int () { | ||
428 | old=$(eval echo "\${$2}") | ||
429 | def=${old:-$3} | ||
430 | if [ $# -gt 3 ]; then | ||
431 | min=$4 | ||
432 | else | ||
433 | min=-10000000 # !! | ||
434 | fi | ||
435 | if [ $# -gt 4 ]; then | ||
436 | max=$5 | ||
437 | else | ||
438 | max=10000000 # !! | ||
439 | fi | ||
440 | rndval $2 | ||
441 | while :; do | ||
442 | readln "$1 ($2) [$def] " "$def" "$old" | ||
443 | if expr \( \( $ans + 0 \) \>= $min \) \& \( $ans \<= $max \) >/dev/null 2>&1 ; then | ||
444 | define_int "$2" "$ans" | ||
445 | break | ||
446 | else | ||
447 | help "$2" | ||
448 | fi | ||
449 | done | ||
450 | } | ||
451 | |||
452 | # | ||
453 | # define_hex sets the value of a hexadecimal argument | ||
454 | # | ||
455 | # define_hex define value | ||
456 | # | ||
457 | function define_hex () { | ||
458 | echo "$1=$2" >>$CONFIG | ||
459 | echo "#define $1 0x${2#*[x,X]}" >>$CONFIG_H | ||
460 | eval "$1=$2" | ||
461 | } | ||
462 | |||
463 | # | ||
464 | # hex processes an hexadecimal argument | ||
465 | # | ||
466 | # hex question define default | ||
467 | # | ||
468 | function hex () { | ||
469 | old=$(eval echo "\${$2}") | ||
470 | def=${old:-$3} | ||
471 | def=${def#*[x,X]} | ||
472 | rndval $2 | ||
473 | while :; do | ||
474 | readln "$1 ($2) [$def] " "$def" "$old" | ||
475 | ans=${ans#*[x,X]} | ||
476 | if expr "$ans" : '[0-9a-fA-F][0-9a-fA-F]*$' > /dev/null; then | ||
477 | define_hex "$2" "$ans" | ||
478 | break | ||
479 | else | ||
480 | help "$2" | ||
481 | fi | ||
482 | done | ||
483 | } | ||
484 | |||
485 | # | ||
486 | # define_string sets the value of a string argument | ||
487 | # | ||
488 | # define_string define value | ||
489 | # | ||
490 | function define_string () { | ||
491 | echo "$1=\"$2\"" >>$CONFIG | ||
492 | echo "#define $1 \"$2\"" >>$CONFIG_H | ||
493 | eval "$1=\"$2\"" | ||
494 | } | ||
495 | |||
496 | # | ||
497 | # string processes a string argument | ||
498 | # | ||
499 | # string question define default | ||
500 | # | ||
501 | function string () { | ||
502 | old=$(eval echo "\${$2}") | ||
503 | def=${old:-$3} | ||
504 | while :; do | ||
505 | if [ "$old" = "?" ]; then | ||
506 | readln "$1 ($2) [$def] " "$def" "" | ||
507 | else | ||
508 | readln "$1 ($2) [$def] " "$def" "$old" | ||
509 | fi | ||
510 | if [ "$ans" = "?" ]; then | ||
511 | help "$2" | ||
512 | else | ||
513 | break | ||
514 | fi | ||
515 | done | ||
516 | define_string "$2" "$ans" | ||
517 | } | ||
518 | # | ||
519 | # choice processes a choice list (1-out-of-n) | ||
520 | # | ||
521 | # choice question choice-list default | ||
522 | # | ||
523 | # The choice list has a syntax of: | ||
524 | # NAME WHITESPACE VALUE { WHITESPACE NAME WHITESPACE VALUE } | ||
525 | # The user may enter any unique prefix of one of the NAMEs and | ||
526 | # choice will define VALUE as if it were a boolean option. | ||
527 | # VALUE must be in all uppercase. Normally, VALUE is of the | ||
528 | # form CONFIG_<something>. Thus, if the user selects <something>, | ||
529 | # the CPP symbol CONFIG_<something> will be defined and the | ||
530 | # shell variable CONFIG_<something> will be set to "y". | ||
531 | # | ||
532 | function choice () { | ||
533 | question="$1" | ||
534 | choices="$2" | ||
535 | old= | ||
536 | def=$3 | ||
537 | |||
538 | # determine default answer: | ||
539 | names="" | ||
540 | set -- $choices | ||
541 | firstvar=$2 | ||
542 | while [ -n "$2" ]; do | ||
543 | if [ -n "$names" ]; then | ||
544 | names="$names, $1" | ||
545 | else | ||
546 | names="$1" | ||
547 | fi | ||
548 | if [ "$(eval echo \"\${$2}\")" = "y" ]; then | ||
549 | old=$1 | ||
550 | def=$1 | ||
551 | fi | ||
552 | shift; shift | ||
553 | done | ||
554 | |||
555 | if [ "$RND" = "-r" -a -z "$old" ] ; then | ||
556 | set -- $choices | ||
557 | rnd $# | ||
558 | while [ $rnd -le $# ] ; do | ||
559 | def=$1 | ||
560 | shift ; shift | ||
561 | done | ||
562 | fi | ||
563 | |||
564 | val="" | ||
565 | while [ -z "$val" ]; do | ||
566 | ambg=n | ||
567 | readln "$question ($names) [$def] " "$def" "$old" | ||
568 | ans=$(echo $ans | tr a-z A-Z) | ||
569 | set -- $choices | ||
570 | while [ -n "$1" ]; do | ||
571 | name=$(echo $1 | tr a-z A-Z) | ||
572 | case "$name" in | ||
573 | "$ans"* | */"$ans"* ) | ||
574 | case "$name" in | ||
575 | "$ans" | */"$ans"/* | \ | ||
576 | "$ans"/* | */"$ans" ) | ||
577 | val="$2" | ||
578 | break # exact match | ||
579 | ;; | ||
580 | esac | ||
581 | if [ -n "$val" ]; then | ||
582 | echo;echo \ | ||
583 | " Sorry, \"$ans\" is ambiguous; please enter a longer string." | ||
584 | echo | ||
585 | val="" | ||
586 | ambg=y | ||
587 | break | ||
588 | else | ||
589 | val="$2" | ||
590 | fi;; | ||
591 | esac | ||
592 | shift; shift | ||
593 | done | ||
594 | if [ "$val" = "" -a "$ambg" = "n" ]; then | ||
595 | help "$firstvar" | ||
596 | fi | ||
597 | done | ||
598 | set -- $choices | ||
599 | while [ -n "$2" ]; do | ||
600 | if [ "$2" = "$val" ]; then | ||
601 | echo " defined $val" | ||
602 | define_bool "$2" "y" | ||
603 | else | ||
604 | define_bool "$2" "n" | ||
605 | fi | ||
606 | shift; shift | ||
607 | done | ||
608 | } | ||
609 | |||
610 | CONFIG=.tmpconfig | ||
611 | CONFIG_H=.tmpconfig.h | ||
612 | FORCE_DEFAULT=.force_default | ||
613 | trap "rm -f $CONFIG $CONFIG_H ; exit 1" 1 2 | ||
614 | |||
615 | # | ||
616 | # Make sure we start out with a clean slate. | ||
617 | # | ||
618 | echo "#" > $CONFIG | ||
619 | echo "# Automatically generated make config: don't edit" >> $CONFIG | ||
620 | echo "#" >> $CONFIG | ||
621 | |||
622 | echo "/*" > $CONFIG_H | ||
623 | echo " * Automatically generated C config: don't edit" >> $CONFIG_H | ||
624 | echo " */" >> $CONFIG_H | ||
625 | echo "#define AUTOCONF_INCLUDED" >> $CONFIG_H | ||
626 | |||
627 | DEFAULT="" | ||
628 | if [ "$1" = "-d" ] ; then | ||
629 | DEFAULT="-d" | ||
630 | shift | ||
631 | fi | ||
632 | |||
633 | RND="" | ||
634 | DEF_ANS="" | ||
635 | AUTO="" | ||
636 | case "$1" in | ||
637 | -r) RND="-r" ; AUTO="yes" ; shift ;; | ||
638 | -y) DEF_ANS="y" ; AUTO="yes" ; shift ;; | ||
639 | -m) DEF_ANS="m" ; AUTO="yes" ; shift ;; | ||
640 | -n) DEF_ANS="n" ; AUTO="yes" ; shift ;; | ||
641 | esac | ||
642 | |||
643 | CONFIG_IN=./config.in | ||
644 | if [ "$1" != "" ] ; then | ||
645 | CONFIG_IN=$1 | ||
646 | fi | ||
647 | |||
648 | DEFAULTS=sysdeps/$TARGET_OS/defconfig | ||
649 | if [ -f .config ]; then | ||
650 | DEFAULTS=.config | ||
651 | fi | ||
652 | |||
653 | if [ "$AUTO" != "yes" ]; then | ||
654 | if [ -f $DEFAULTS ]; then | ||
655 | echo "#" | ||
656 | echo "# Using defaults found in" $DEFAULTS | ||
657 | echo "#" | ||
658 | . $DEFAULTS | ||
659 | sed -e 's/# \(CONFIG_[^ ]*\) is not.*/\1=n/' <$DEFAULTS >.config-is-not.$$ | ||
660 | . .config-is-not.$$ | ||
661 | rm .config-is-not.$$ | ||
662 | else | ||
663 | echo "#" | ||
664 | echo "# No defaults found" | ||
665 | echo "#" | ||
666 | fi | ||
667 | else | ||
668 | if [ -f $FORCE_DEFAULT ]; then | ||
669 | echo "#" | ||
670 | echo "# Forcing defaults found in $FORCE_DEFAULT" | ||
671 | echo "#" | ||
672 | sed -e ' | ||
673 | s/# \(CONFIG_[^ ]*\) is not.*/\1=n/; | ||
674 | s/# range \(CONFIG_[^ ]*\) \([^ ][^ ]*\) \([^ ][^ ]*\)/MIN_\1=\2; MAX_\1=\3/; | ||
675 | s/# list \(CONFIG_[^ ]*\) \([^ ][^ ]*\)/LIST_\1=\2/ | ||
676 | ' <$FORCE_DEFAULT >.default_val.$$ | ||
677 | . .default_val.$$ | ||
678 | rm .default_val.$$ | ||
679 | else | ||
680 | echo "#" | ||
681 | echo "# No defaults found" | ||
682 | echo "#" | ||
683 | fi | ||
684 | fi | ||
685 | |||
686 | . $CONFIG_IN | ||
687 | |||
688 | rm -f .config.old | ||
689 | if [ -f .config ]; then | ||
690 | mv .config .config.old | ||
691 | fi | ||
692 | mv .tmpconfig .config | ||
693 | mv .tmpconfig.h include/config.h | ||
694 | |||
695 | echo | ||
696 | echo "*** End of BusyBox configuration." | ||
697 | echo "*** Check the top-level Makefile for additional configuration." | ||
698 | if [ ! -f .hdepend -o "$CONFIG_MODVERSIONS" = "y" ] ; then | ||
699 | echo "*** Next, you must run 'make dep'." | ||
700 | else | ||
701 | echo "*** Next, you may run 'make', or 'make install'." | ||
702 | fi | ||
703 | echo | ||
704 | |||
705 | exit 0 | ||