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

📄 configure

📁 linux 1.0 源代码
💻
字号:
#! /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.## Please send comments / questions / bug fixes to raymondc@microsoft.com.## Each line in the config file is a command.##	# internal comment##		Lines beginning with a `#' are ignored.##	: message##		`:' causes the line to be echoed to the screen.##	* external comment##		`*' causes the line to be placed in the output#		configuration file as a comment as well as being#		echoed to the screen.##	if condition#		... commands ...#	else#		... commands ...#	fi##		This does the obvious thing.  The `else' clause is#		optional.  Conditionals can be nested.##		The `condition' can be any valid bash expression.#		They typically involve tests against environment#		variables set by configuration options.  For example,##		if [ "$CONFIG_SCSI" = "y" ]#			...More stuff...#		fi##		Note!  That there is no `then' keyword.##	bool 'prompt' CONFIG_VARIABLE default##		This prompts the user for a boolean value.#		The prompt may not contain an apostrophe.#		`default' should be either `y' or `n'.#		The user's response is recorded in four places.##		In .config, if `y'#			CONFIG_VARIABLE = CONFIG_VARIABLE#		In .config, if `n'#			# CONFIG_VARIABLE is not set#			#		In autoconf.h, if `y'#			#define CONFIG_VARIABLE 1#		In autoconf.h, if `n'#			#undef CONFIG_VARIABLE##		In config.in, if `y'#			bool 'prompt' CONFIG_VARIABLE y#		In config.in, if `n'#			bool 'prompt' CONFIG_VARIABLE n##		In the environment of the Configure script, if `y'#			CONFIG_VARIABLE = y#		In the environment of the Configure script, if `n'#			CONFIG_VARIABLE = n##		The value is placed into the environment of the Configure#		script so that later parts of config.in can use the `if'#		command to inspect the results of previous queries.##	int 'prompt' CONFIG_VARIABLE default##		This prompts the user for an integer value.#		The prompt may not contain an apostrophe.#		`default' should be an integer.##		The response is recorded as follows.##		In .config#			CONFIG_VARIABLE = response#		In autoconf.h#			#define CONFIG_VARIABLE (response)#		In config.in#			int 'prompt' CONFIG_VARIABLE response#		In the environment of the Configure script#			CONFIG_VARIABLE = response## 050793 - use IFS='@' to get around a bug in a pre-version of bash-1.13# with an empty IFS.## 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## readln reads a line into $ans.##	readln prompt default#function readln () {	echo -n "$1"	IFS='@' read ans </dev/tty || exit 1	[ -z "$ans" ] && ans=$2}# bool processes a boolean argument##	bool tail#function bool () {	# Slimier hack to get bash to rescan a line.	eval "set -- $1"	ans=""	while [ "$ans" != "y" -a "$ans" != "n" ]; do		readln "$1 ($2) [$3] " "$3"	done	if [ "$ans" = "y" ]; then		echo "$2 = $2" >>$CONFIG		echo "#define $2 1" >>$CONFIG_H	else		echo "# $2 is not set" >>$CONFIG		echo "#undef $2" >>$CONFIG_H	fi	raw_input_line="bool '$1' $2 $ans"	eval "$2=$ans"}# int processes an integer argument##	int tail#function int () {	# Slimier hack to get bash to rescan a line.	eval "set -- $1"	ans="x"	while [ $[$ans+0] != "$ans" ]; do		readln "$1 ($2) [$3] " "$3"	done	echo "$2 = $ans" >>$CONFIG	echo "#define $2 ($ans)" >>$CONFIG_H	raw_input_line="int '$1' $2 $ans"	eval "$2=$ans"}CONFIG=.tmpconfigCONFIG_H=include/linux/autoconf.htrap "rm -f $CONFIG $CONFIG_H config.new ; exit 1" 1 2## Make sure we start out with a clean slate.#> config.newecho "#" > $CONFIGecho "# Automatically generated make config: don't edit" >> $CONFIGecho "#" >> $CONFIGecho "/*" > $CONFIG_Hecho " * Automatically generated C config: don't edit" >> $CONFIG_Hecho " */" >> $CONFIG_Hstack=''branch='t'while IFS='@' read raw_input_linedo	# Slimy hack to get bash to rescan a line.	read cmd rest <<-END_OF_COMMAND		$raw_input_line	END_OF_COMMAND	if [ "$cmd" = "*" ]; then		if [ "$branch" = "t" ]; then			echo "$raw_input_line"			echo "# $rest" >>$CONFIG			if [ "$prevcmd" != "*" ]; then				echo >>$CONFIG_H				echo "/* $rest" >>$CONFIG_H			else				echo " * $rest" >>$CONFIG_H			fi			prevcmd="*"		fi	else		[ "$prevcmd" = "*" ] && echo " */" >>$CONFIG_H		prevcmd=""		case "$cmd" in		:)	[ "$branch" = "t" ] && echo "$raw_input_line" ;;		int)	[ "$branch" = "t" ] && int "$rest" ;;		bool)	[ "$branch" = "t" ] && bool "$rest" ;;		exec)	[ "$branch" = "t" ] && ( sh -c "$rest" ) ;;		if)	stack="$branch $stack"			if [ "$branch" = "t" ] && eval "$rest"; then				branch=t			else				branch=f			fi ;;		else)	if [ "$branch" = "t" ]; then				branch=f			else				read branch rest <<-END_OF_STACK					$stack				END_OF_STACK			fi ;;		fi)	[ -z "$stack" ] && echo "Error!  Extra fi." 1>&2			read branch stack <<-END_OF_STACK				$stack			END_OF_STACK			;;		esac	fi	echo "$raw_input_line" >>config.newdone[ "$prevcmd" = "*" ] && echo " */" >>$CONFIG_H[ -z "$stack" ] || echo "Error!  Untermiated if." 1>&2mv config.in config.oldmv config.new config.inechoecho "The linux kernel is now hopefully configured for your setup."echo "Check the top-level Makefile for additional configuration,"echo "and do a 'make dep ; make clean' if you want to be sure all"echo "the files are correctly re-made"echoexit 0

⌨️ 快捷键说明

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