URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [scripts/] [Configure] - Rev 1774
Go to most recent revision | Compare with Previous | Blame | View Log
#! /bin/sh## This script is used to configure the Linux kernel.## 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).## 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 () {:}## help prints the corresponding help text from Configure.help to stdout## help variable#function help () {if [ -f Documentation/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/gp}" Documentation/Configure.help)if [ -z "$text" ]thenecho; echo " Sorry, no help available for this option yet.";echoelse(echo; echo "$text") | ${PAGER:-more}fielseecho;echo " Can't access the file Documentation/Configure.help which"echo " should contain the help texts."echofi}## readln reads a line into $ans.## readln prompt default oldval#function readln () {if [ "$DEFAULT" = "-d" -a -n "$3" ]; thenecho "$1"ans=$2elseecho -n "$1"[ -z "$3" ] && echo -n "(NEW) "IFS='@' read ans || exit 1[ -z "$ans" ] && ans=$2fi}## 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" >>$CONFIGecho "#define $1 1" >>$CONFIG_H;;"m")echo "$1=m" >>$CONFIGecho "#undef $1" >>$CONFIG_Hecho "#define $1_MODULE 1" >>$CONFIG_H;;"n")echo "# $1 is not set" >>$CONFIGecho "#undef $1" >>$CONFIG_H;;esaceval "$1=$2"}## bool processes a boolean argument## bool question define#function bool () {old=$(eval echo "\${$2}")def=${old:-'n'}case "$def" in"y" | "m") defprompt="Y/n/?"def="y";;"n") defprompt="N/y/?";;esacwhile :; doreadln "$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";;esacdone}## tristate processes a tristate argument## tristate question define#function tristate () {if [ "$CONFIG_MODULES" != "y" ]; thenbool "$1" "$2"elseold=$(eval echo "\${$2}")def=${old:-'n'}case "$def" in"y") defprompt="Y/m/n/?";;"m") defprompt="M/n/y/?";;"n") defprompt="N/y/m/?";;esacwhile :; doreadln "$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";;esacdonefi}## 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=$1var=$2need_module=0shift 2while [ $# -gt 0 ]; docase "$1" inn)define_tristate "$var" "n"return;;m)need_module=1;;esacshiftdoneif [ $need_module = 1 ]; thenif [ "$CONFIG_MODULES" = "y" ]; thencase "$def" in"y" | "m") defprompt="M/n/?"def="m";;"n") defprompt="N/m/?";;esacwhile :; doreadln "$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 ) echoecho " 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";;esacdonefielsetristate "$ques" "$var"fi}function dep_bool () {ques=$1var=$2shift 2while [ $# -gt 0 ]; docase "$1" inm | n)define_bool "$var" "n"return;;esacshiftdonebool "$ques" "$var"}function dep_mbool () {ques=$1var=$2shift 2while [ $# -gt 0 ]; docase "$1" inn)define_bool "$var" "n"return;;esacshiftdonebool "$ques" "$var"}## define_int sets the value of a integer argument## define_int define value#function define_int () {echo "$1=$2" >>$CONFIGecho "#define $1 ($2)" >>$CONFIG_Heval "$1=$2"}## int processes an integer argument with optional limits## int question define default#function int () {old=$(eval echo "\${$2}")def=${old:-$3}while :; doreadln "$1 ($2) [$def] " "$def" "$old"if expr "$ans" : '[0-9]*$' > /dev/null; thendefine_int "$2" "$ans"breakelsehelp "$2"fidone}## define_hex sets the value of a hexadecimal argument## define_hex define value#function define_hex () {echo "$1=$2" >>$CONFIGecho "#define $1 0x${2#*[x,X]}" >>$CONFIG_Heval "$1=$2"}## hex processes an hexadecimal argument## hex question define default#function hex () {old=$(eval echo "\${$2}")def=${old:-$3}def=${def#*[x,X]}while :; doreadln "$1 ($2) [$def] " "$def" "$old"ans=${ans#*[x,X]}if expr "$ans" : '[0-9a-fA-F][0-9a-fA-F]*$' > /dev/null; thendefine_hex "$2" "$ans"breakelsehelp "$2"fidone}## define_string sets the value of a string argument## define_string define value#function define_string () {echo "$1=\"$2\"" >>$CONFIGecho "#define $1 \"$2\"" >>$CONFIG_Heval "$1=\"$2\""}## string processes a string argument## string question define default#function string () {old=$(eval echo "\${$2}")def=${old:-$3}while :; doif [ "$old" = "?" ]; thenreadln "$1 ($2) [$def] " "$def" ""elsereadln "$1 ($2) [$def] " "$def" "$old"fiif [ "$ans" = "?" ]; thenhelp "$2"elsebreakfidonedefine_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 -- $choicesfirstvar=$2while [ -n "$2" ]; doif [ -n "$names" ]; thennames="$names, $1"elsenames="$1"fiif [ "$(eval echo \"\${$2}\")" = "y" ]; thenold=$1def=$1fishift; shiftdoneval=""while [ -z "$val" ]; doambg=nreadln "$question ($names) [$def] " "$def" "$old"ans=$(echo $ans | tr a-z A-Z)set -- $choiceswhile [ -n "$1" ]; doname=$(echo $1 | tr a-z A-Z)case "$name" in"$ans"* | */"$ans"* )case "$name" in"$ans" | */"$ans"/* | \"$ans"/* | */"$ans" )val="$2"break # exact match;;esacif [ -n "$val" ]; thenecho;echo \" Sorry, \"$ans\" is ambiguous; please enter a longer string."echoval=""ambg=ybreakelseval="$2"fi;;esacshift; shiftdoneif [ "$val" = "" -a "$ambg" = "n" ]; thenhelp "$firstvar"fidoneset -- $choiceswhile [ -n "$2" ]; doif [ "$2" = "$val" ]; thenecho " defined $val"define_bool "$2" "y"elsedefine_bool "$2" "n"fishift; shiftdone}CONFIG=.tmpconfigCONFIG_H=.tmpconfig.htrap "rm -f $CONFIG $CONFIG_H ; exit 1" 1 2## Make sure we start out with a clean slate.#echo "#" > $CONFIGecho "# Automatically generated make config: don't edit" >> $CONFIGecho "#" >> $CONFIGecho "/*" > $CONFIG_Hecho " * Automatically generated C config: don't edit" >> $CONFIG_Hecho " */" >> $CONFIG_Hecho "#define AUTOCONF_INCLUDED" >> $CONFIG_HDEFAULT=""if [ "$1" = "-d" ] ; thenDEFAULT="-d"shiftfiCONFIG_IN=./config.inif [ "$1" != "" ] ; thenCONFIG_IN=$1fiDEFAULTS=arch/$ARCH/defconfigif [ -f .config ]; thenDEFAULTS=.configfiif [ -f $DEFAULTS ]; thenecho "#"echo "# Using defaults found in" $DEFAULTSecho "#". $DEFAULTSsed -e 's/# \(CONFIG_[^ ]*\) is not.*/\1=n/' <$DEFAULTS >.config-is-not.$$. .config-is-not.$$rm .config-is-not.$$elseecho "#"echo "# No defaults found"echo "#"fi. $CONFIG_INrm -f .config.oldif [ -f .config ]; thenmv .config .config.oldfimv .tmpconfig .configmv .tmpconfig.h include/linux/autoconf.hechoecho "*** End of Linux kernel configuration."echo "*** Check the top-level Makefile for additional configuration."if [ ! -f .hdepend -o "$CONFIG_MODVERSIONS" = "y" ] ; thenecho "*** Next, you must run 'make dep'."elseecho "*** Next, you may run 'make bzImage', 'make bzdisk', or 'make install'."fiechoexit 0
Go to most recent revision | Compare with Previous | Blame | View Log
