⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configure

📁 这是一个SIGMA方案的PMP播放器的UCLINUX程序,可播放DVD,VCD,CD MP3...有很好的参考价值.
💻
字号:
#! /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=.tmpconfigCONFIG_H=.tmpconfig.hFORCE_DEFAULT=.force_defaulttrap "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" ] ; then	DEFAULT="-d"	shiftfiRND=""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 ;;esacCONFIG_IN=./config.inif [ "$1" != "" ] ; then	CONFIG_IN=$1fiDEFAULTS=sysdeps/$TARGET_OS/defconfigif [ -f .config ]; then  DEFAULTS=.configfiif [ "$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 "#"  fielse  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_INrm -f .config.oldif [ -f .config ]; then	mv .config .config.oldfimv .tmpconfig .configmv .tmpconfig.h include/config.hechoecho "*** 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'."fiechoexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -