summaryrefslogtreecommitdiff
path: root/scripts/Configure
diff options
context:
space:
mode:
authorEric Andersen2002-12-05 08:41:41 +0000
committerEric Andersen2002-12-05 08:41:41 +0000
commitc9f20d9fb93c6c316518483fd103f3afab5cf1af (patch)
tree72904548bb54dcaf78017d3b35296765437e0bd5 /scripts/Configure
parentdeca106b6dad70ad0a1312a82d762aa8d8ad52ba (diff)
downloadbusybox-c9f20d9fb93c6c316518483fd103f3afab5cf1af.zip
busybox-c9f20d9fb93c6c316518483fd103f3afab5cf1af.tar.gz
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/Configure705
1 files changed, 0 insertions, 705 deletions
diff --git a/scripts/Configure b/scripts/Configure
deleted file mode 100644
index 0a73a64..0000000
--- a/scripts/Configure
+++ /dev/null
@@ -1,705 +0,0 @@
-#! /bin/sh
-#
-# This script is used to configure BusyBox.
-#
-# It was inspired by the challenge in the original Configure script
-# to ``do something better'', combined with the actual need to ``do
-# something better'' because the old configure script wasn't flexible
-# enough.
-#
-# Raymond Chen was the original author of Configure.
-# Michael Elizabeth Chastain (mec@shout.net) is the current maintainer.
-#
-# 050793 - use IFS='@' to get around a bug in a pre-version of bash-1.13
-# with an empty IFS.
-#
-# 030995 (storner@osiris.ping.dk) - added support for tri-state answers,
-# for selecting modules to compile.
-#
-# 180995 Bernhard Kaindl (bkaindl@ping.at) - added dummy functions for
-# use with a config.in modified for make menuconfig.
-#
-# 301195 (boldt@math.ucsb.edu) - added help text support
-#
-# 281295 Paul Gortmaker - make tri_state functions collapse to boolean
-# if module support is not enabled.
-#
-# 010296 Aaron Ucko (ucko@vax1.rockhurst.edu) - fix int and hex to accept
-# arbitrary ranges
-#
-# 150296 Dick Streefland (dicks@tasking.nl) - report new configuration
-# items and ask for a value even when doing a "make oldconfig"
-#
-# 200396 Tom Dyas (tdyas@eden.rutgers.edu) - when the module option is
-# chosen for an item, define the macro <option_name>_MODULE
-#
-# 090397 Axel Boldt (boldt@math.ucsb.edu) - avoid ? and + in regular
-# expressions for GNU expr since version 1.15 and up use \? and \+.
-#
-# 300397 Phil Blundell (pjb27@cam.ac.uk) - added support for min/max
-# arguments to "int", allow dep_tristate to take a list of dependencies
-# rather than just one.
-#
-# 090398 Axel Boldt (boldt@math.ucsb.edu) - allow for empty lines in help
-# texts.
-#
-# 102598 Michael Chastain (mec@shout.net) - put temporary files in
-# current directory, not in /tmp.
-#
-# 24 January 1999, Michael Elizabeth Chastain, <mec@shout.net>
-# - Improve the exit message (Jeff Ronne).
-#
-# 7 October 2000, Ghozlane Toumi, <gtoumi@messel.emse.fr>
-# added switches for "random" , "all yes" and "all modules"
-#
-
-#
-# Make sure we're really running bash.
-#
-# I would really have preferred to write this script in a language with
-# better string handling, but alas, bash is the only scripting language
-# that I can be reasonable sure everybody has on their linux machine.
-#
-[ -z "$BASH" ] && { echo "Configure requires bash" 1>&2; exit 1; }
-
-# Disable filename globbing once and for all.
-# Enable function cacheing.
-set -f -h
-
-#
-# Dummy functions for use with a config.in modified for menuconf
-#
-function mainmenu_option () {
- :
-}
-function mainmenu_name () {
- :
-}
-function endmenu () {
- :
-}
-
-#
-# returns a random number between 1 and $1
-#
-function rnd () {
- rnd=$[ $RANDOM % $1 + 1 ]
-}
-
-#
-# randomly chose a number in a config list (LIST_CONFIG_NAME)
-# or in a range ( MIN_CONFIG_NAME MAX_CONFIG_NAME )
-# ONLY if there is no forced default (and we are in an "auto" mode)
-# we are limited by the range of values taken by "$RANDOM"
-#
-# rndval CONFIG_NAME
-#
-
-function rndval () {
- [ "$AUTO" != "yes" -o -n "$old" ] && return
- def_list=$(eval echo "\${LIST_$1}")
- def_min=$(eval echo "\${MIN_$1}")
- def_max=$(eval echo "\${MAX_$1}")
-
- if [ -n "$def_list" ]; then
- set -- $(echo $def_list | sed 's/,/ /g')
- rnd $#
- while [ $rnd -le $# ] ; do
- def=$1
- shift
- done
- return
- fi
- if [ -n "$def_min" -a -n "$def_max" ]; then
- rnd $[ $def_max - $def_min ]
- def=$[ $def_min + $rnd ]
- fi
-}
-
-#
-# help prints the corresponding help text from Configure.help to stdout
-#
-# help variable
-#
-function help () {
- if [ -f docs/Configure.help ]
- then
- #first escape regexp special characters in the argument:
- var=$(echo "$1"|sed 's/[][\/.^$*]/\\&/g')
- #now pick out the right help text:
- text=$(sed -n "/^$var[ ]*\$/,\${
- /^$var[ ]*\$/c\\
-${var}:\\
-
- /^#/b
- /^[^ ]/q
- /<file:\\([^>]*\\)>/s//\\1/g
- p
- }" docs/Configure.help)
- if [ -z "$text" ]
- then
- echo; echo " Sorry, no help available for this option yet.";echo
- else
- (echo; echo "$text") | ${PAGER:-more}
- fi
- else
- echo;
- echo " Can't access the file docs/Configure.help which"
- echo " should contain the help texts."
- echo
- fi
-}
-
-
-#
-# readln reads a line into $ans.
-#
-# readln prompt default oldval
-#
-function readln () {
- if [ "$AUTO" = "yes" ]; then
- echo -n "$1"
- ans=$2
- echo $ans
- elif [ "$DEFAULT" = "-d" -a -n "$3" ]; then
- echo "$1"
- ans=$2
- else
- echo -n "$1"
- [ -z "$3" ] && echo -n "(NEW) "
- IFS='@' read ans || exit 1
- [ -z "$ans" ] && ans=$2
- fi
-}
-
-#
-# comment does some pretty-printing
-#
-# comment 'xxx'
-#
-function comment () {
- echo "*"; echo "* $1" ; echo "*"
- (echo "" ; echo "#"; echo "# $1" ; echo "#") >>$CONFIG
- (echo "" ; echo "/*"; echo " * $1" ; echo " */") >>$CONFIG_H
-}
-
-#
-# define_bool sets the value of a boolean argument
-#
-# define_bool define value
-#
-function define_bool () {
- define_tristate $1 $2
-}
-
-function define_tristate () {
- case "$2" in
- "y")
- echo "$1=y" >>$CONFIG
- echo "#define $1 1" >>$CONFIG_H
- ;;
-
- "m")
- echo "$1=m" >>$CONFIG
- echo "#undef $1" >>$CONFIG_H
- echo "#define $1_MODULE 1" >>$CONFIG_H
- ;;
-
- "n")
- echo "# $1 is not set" >>$CONFIG
- echo "#undef $1" >>$CONFIG_H
- ;;
- esac
- eval "$1=$2"
-}
-
-#
-# bool processes a boolean argument
-#
-# bool question define
-#
-function bool () {
- old=$(eval echo "\${$2}")
- def=${old:-'n'}
- if [ "$AUTO" = "yes" -a -z "$old" ]; then
- if [ "$RND" = "-r" ]; then
- rnd 2
- case $rnd in
- "1") def="y" ;;
- "2") def="n" ;;
- esac
- else
- def=$DEF_ANS;
- fi
- fi
- case "$def" in
- "y" | "m") defprompt="Y/n/?"
- def="y"
- ;;
- "n") defprompt="N/y/?"
- ;;
- esac
- while :; do
- readln "$1 ($2) [$defprompt] " "$def" "$old"
- case "$ans" in
- [yY] | [yY]es ) define_bool "$2" "y"
- break;;
- [nN] | [nN]o ) define_bool "$2" "n"
- break;;
- * ) help "$2"
- ;;
- esac
- done
-}
-
-#
-# tristate processes a tristate argument
-#
-# tristate question define
-#
-function tristate () {
- if [ "$CONFIG_MODULES" != "y" ]; then
- bool "$1" "$2"
- else
- old=$(eval echo "\${$2}")
- def=${old:-'n'}
- if [ "$AUTO" = "yes" -a -z "$old" ]; then
- if [ "$RND" = "-r" ]; then
- rnd 3
- case $rnd in
- "1") def="y" ;;
- "2") def="n" ;;
- "3") def="m" ;;
- esac
- else
- def=$DEF_ANS
- fi
- fi
- case "$def" in
- "y") defprompt="Y/m/n/?"
- ;;
- "m") defprompt="M/n/y/?"
- ;;
- "n") defprompt="N/y/m/?"
- ;;
- esac
- while :; do
- readln "$1 ($2) [$defprompt] " "$def" "$old"
- case "$ans" in
- [yY] | [yY]es ) define_tristate "$2" "y"
- break ;;
- [nN] | [nN]o ) define_tristate "$2" "n"
- break ;;
- [mM] ) define_tristate "$2" "m"
- break ;;
- * ) help "$2"
- ;;
- esac
- done
- fi
-}
-
-#
-# dep_tristate processes a tristate argument that depends upon
-# another option or options. If any of the options we depend upon is a
-# module, then the only allowable options are M or N. If all are Y, then
-# this is a normal tristate. This is used in cases where modules
-# are nested, and one module requires the presence of something
-# else in the kernel.
-#
-# dep_tristate question define default ...
-#
-function dep_tristate () {
- old=$(eval echo "\${$2}")
- def=${old:-'n'}
- ques=$1
- var=$2
- need_module=0
- shift 2
- while [ $# -gt 0 ]; do
- case "$1" in
- n)
- define_tristate "$var" "n"
- return
- ;;
- m)
- need_module=1
- ;;
- esac
- shift
- done
-
- if [ $need_module = 1 ]; then
- if [ "$CONFIG_MODULES" = "y" ]; then
- if [ "$AUTO" = "yes" -a -z "$old" ]; then
- if [ "$RND" = "-r" ]; then
- rnd 2
- case $rnd in
- "1") def="m" ;;
- "2") def="n" ;;
- esac
- else
- def=$DEF_ANS
- fi
- fi
- case "$def" in
- "y" | "m") defprompt="M/n/?"
- def="m"
- ;;
- "n") defprompt="N/m/?"
- ;;
- esac
- while :; do
- readln "$ques ($var) [$defprompt] " "$def" "$old"
- case "$ans" in
- [nN] | [nN]o ) define_tristate "$var" "n"
- break ;;
- [mM] ) define_tristate "$var" "m"
- break ;;
- [yY] | [yY]es ) echo
- echo " This answer is not allowed, because it is not consistent with"
- echo " your other choices."
- echo " This driver depends on another one which you chose to compile"
- echo " as a module. This means that you can either compile this one"
- echo " as a module as well (with M) or leave it out altogether (N)."
- echo
- ;;
- * ) help "$var"
- ;;
- esac
- done
- fi
- else
- tristate "$ques" "$var"
- fi
-}
-
-function dep_bool () {
- ques=$1
- var=$2
- shift 2
- while [ $# -gt 0 ]; do
- case "$1" in
- m | n)
- define_bool "$var" "n"
- return
- ;;
- esac
- shift
- done
-
- bool "$ques" "$var"
-}
-
-function dep_mbool () {
- ques=$1
- var=$2
- shift 2
- while [ $# -gt 0 ]; do
- case "$1" in
- n)
- define_bool "$var" "n"
- return
- ;;
- esac
- shift
- done
-
- bool "$ques" "$var"
-}
-
-#
-# define_int sets the value of a integer argument
-#
-# define_int define value
-#
-function define_int () {
- echo "$1=$2" >>$CONFIG
- echo "#define $1 ($2)" >>$CONFIG_H
- eval "$1=$2"
-}
-
-#
-# int processes an integer argument with optional limits
-#
-# int question define default [min max]
-#
-function int () {
- old=$(eval echo "\${$2}")
- def=${old:-$3}
- if [ $# -gt 3 ]; then
- min=$4
- else
- min=-10000000 # !!
- fi
- if [ $# -gt 4 ]; then
- max=$5
- else
- max=10000000 # !!
- fi
- rndval $2
- while :; do
- readln "$1 ($2) [$def] " "$def" "$old"
- if expr \( \( $ans + 0 \) \>= $min \) \& \( $ans \<= $max \) >/dev/null 2>&1 ; then
- define_int "$2" "$ans"
- break
- else
- help "$2"
- fi
- done
-}
-
-#
-# define_hex sets the value of a hexadecimal argument
-#
-# define_hex define value
-#
-function define_hex () {
- echo "$1=$2" >>$CONFIG
- echo "#define $1 0x${2#*[x,X]}" >>$CONFIG_H
- eval "$1=$2"
-}
-
-#
-# hex processes an hexadecimal argument
-#
-# hex question define default
-#
-function hex () {
- old=$(eval echo "\${$2}")
- def=${old:-$3}
- def=${def#*[x,X]}
- rndval $2
- while :; do
- readln "$1 ($2) [$def] " "$def" "$old"
- ans=${ans#*[x,X]}
- if expr "$ans" : '[0-9a-fA-F][0-9a-fA-F]*$' > /dev/null; then
- define_hex "$2" "$ans"
- break
- else
- help "$2"
- fi
- done
-}
-
-#
-# define_string sets the value of a string argument
-#
-# define_string define value
-#
-function define_string () {
- echo "$1=\"$2\"" >>$CONFIG
- echo "#define $1 \"$2\"" >>$CONFIG_H
- eval "$1=\"$2\""
-}
-
-#
-# string processes a string argument
-#
-# string question define default
-#
-function string () {
- old=$(eval echo "\${$2}")
- def=${old:-$3}
- while :; do
- if [ "$old" = "?" ]; then
- readln "$1 ($2) [$def] " "$def" ""
- else
- readln "$1 ($2) [$def] " "$def" "$old"
- fi
- if [ "$ans" = "?" ]; then
- help "$2"
- else
- break
- fi
- done
- define_string "$2" "$ans"
-}
-#
-# choice processes a choice list (1-out-of-n)
-#
-# choice question choice-list default
-#
-# The choice list has a syntax of:
-# NAME WHITESPACE VALUE { WHITESPACE NAME WHITESPACE VALUE }
-# The user may enter any unique prefix of one of the NAMEs and
-# choice will define VALUE as if it were a boolean option.
-# VALUE must be in all uppercase. Normally, VALUE is of the
-# form CONFIG_<something>. Thus, if the user selects <something>,
-# the CPP symbol CONFIG_<something> will be defined and the
-# shell variable CONFIG_<something> will be set to "y".
-#
-function choice () {
- question="$1"
- choices="$2"
- old=
- def=$3
-
- # determine default answer:
- names=""
- set -- $choices
- firstvar=$2
- while [ -n "$2" ]; do
- if [ -n "$names" ]; then
- names="$names, $1"
- else
- names="$1"
- fi
- if [ "$(eval echo \"\${$2}\")" = "y" ]; then
- old=$1
- def=$1
- fi
- shift; shift
- done
-
- if [ "$RND" = "-r" -a -z "$old" ] ; then
- set -- $choices
- rnd $#
- while [ $rnd -le $# ] ; do
- def=$1
- shift ; shift
- done
- fi
-
- val=""
- while [ -z "$val" ]; do
- ambg=n
- readln "$question ($names) [$def] " "$def" "$old"
- ans=$(echo $ans | tr a-z A-Z)
- set -- $choices
- while [ -n "$1" ]; do
- name=$(echo $1 | tr a-z A-Z)
- case "$name" in
- "$ans"* | */"$ans"* )
- case "$name" in
- "$ans" | */"$ans"/* | \
- "$ans"/* | */"$ans" )
- val="$2"
- break # exact match
- ;;
- esac
- if [ -n "$val" ]; then
- echo;echo \
- " Sorry, \"$ans\" is ambiguous; please enter a longer string."
- echo
- val=""
- ambg=y
- break
- else
- val="$2"
- fi;;
- esac
- shift; shift
- done
- if [ "$val" = "" -a "$ambg" = "n" ]; then
- help "$firstvar"
- fi
- done
- set -- $choices
- while [ -n "$2" ]; do
- if [ "$2" = "$val" ]; then
- echo " defined $val"
- define_bool "$2" "y"
- else
- define_bool "$2" "n"
- fi
- shift; shift
- done
-}
-
-CONFIG=.tmpconfig
-CONFIG_H=.tmpconfig.h
-FORCE_DEFAULT=.force_default
-trap "rm -f $CONFIG $CONFIG_H ; exit 1" 1 2
-
-#
-# Make sure we start out with a clean slate.
-#
-echo "#" > $CONFIG
-echo "# Automatically generated make config: don't edit" >> $CONFIG
-echo "#" >> $CONFIG
-
-echo "/*" > $CONFIG_H
-echo " * Automatically generated C config: don't edit" >> $CONFIG_H
-echo " */" >> $CONFIG_H
-echo "#define AUTOCONF_INCLUDED" >> $CONFIG_H
-
-DEFAULT=""
-if [ "$1" = "-d" ] ; then
- DEFAULT="-d"
- shift
-fi
-
-RND=""
-DEF_ANS=""
-AUTO=""
-case "$1" in
- -r) RND="-r" ; AUTO="yes" ; shift ;;
- -y) DEF_ANS="y" ; AUTO="yes" ; shift ;;
- -m) DEF_ANS="m" ; AUTO="yes" ; shift ;;
- -n) DEF_ANS="n" ; AUTO="yes" ; shift ;;
-esac
-
-CONFIG_IN=./config.in
-if [ "$1" != "" ] ; then
- CONFIG_IN=$1
-fi
-
-DEFAULTS=sysdeps/$TARGET_OS/defconfig
-if [ -f .config ]; then
- DEFAULTS=.config
-fi
-
-if [ "$AUTO" != "yes" ]; then
- if [ -f $DEFAULTS ]; then
- echo "#"
- echo "# Using defaults found in" $DEFAULTS
- echo "#"
- . $DEFAULTS
- sed -e 's/# \(CONFIG_[^ ]*\) is not.*/\1=n/' <$DEFAULTS >.config-is-not.$$
- . .config-is-not.$$
- rm .config-is-not.$$
- else
- echo "#"
- echo "# No defaults found"
- echo "#"
- fi
-else
- if [ -f $FORCE_DEFAULT ]; then
- echo "#"
- echo "# Forcing defaults found in $FORCE_DEFAULT"
- echo "#"
- sed -e '
-s/# \(CONFIG_[^ ]*\) is not.*/\1=n/;
-s/# range \(CONFIG_[^ ]*\) \([^ ][^ ]*\) \([^ ][^ ]*\)/MIN_\1=\2; MAX_\1=\3/;
-s/# list \(CONFIG_[^ ]*\) \([^ ][^ ]*\)/LIST_\1=\2/
-' <$FORCE_DEFAULT >.default_val.$$
- . .default_val.$$
- rm .default_val.$$
- else
- echo "#"
- echo "# No defaults found"
- echo "#"
- fi
-fi
-
-. $CONFIG_IN
-
-rm -f .config.old
-if [ -f .config ]; then
- mv .config .config.old
-fi
-mv .tmpconfig .config
-mv .tmpconfig.h include/config.h
-
-echo
-echo "*** End of BusyBox configuration."
-echo "*** Check the top-level Makefile for additional configuration."
-if [ ! -f .hdepend -o "$CONFIG_MODVERSIONS" = "y" ] ; then
- echo "*** Next, you must run 'make dep'."
-else
- echo "*** Next, you may run 'make', or 'make install'."
-fi
-echo
-
-exit 0