Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | #! /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. # # 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 () { if [ "$DEFAULT" = "-d" ]; then echo "$1" ans=$2 else echo -n "$1" IFS='@' read ans </dev/tty || 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 } # # bool processes a boolean argument # # bool question define default # function bool () { ans="" def=$(eval echo "\${$2:-$3}") while [ "$ans" != "y" -a "$ans" != "n" ]; do readln "$1 ($2) [$def] " "$def" done if [ "$ans" = "y" ]; then echo "$2=y" >>$CONFIG echo "#define $2 1" >>$CONFIG_H else echo "# $2 is not set" >>$CONFIG echo "#undef $2" >>$CONFIG_H fi eval "$2=$ans" } # # int processes an integer argument # # int question define default # function int () { # Slimier hack to get bash to rescan a line. ans="x" def=$(eval echo "\${$2:-$3}") while [ $[$ans+0] != "$ans" ]; do readln "$1 ($2) [$def] " "$def" done echo "$2=$ans" >>$CONFIG echo "#define $2 ($ans)" >>$CONFIG_H eval "$2=$ans" } CONFIG=.tmpconfig CONFIG_H=.tmpconfig.h 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 DEFAULT="" if [ "$1" = "-d" ] ; then DEFAULT="-d" shift fi CONFIG_IN=./config.in if [ "$1" != "" ] ; then CONFIG_IN=$1 fi if [ -f ./.config ] ; then . ./.config sed -e 's/# \(.*\) is not.*/\1=n/' <./.config >/tmp/conf.$$ . /tmp/conf.$$ rm /tmp/conf.$$ fi . $CONFIG_IN if [ "$CONFIG_SOUND" = "y" ] ; then $MAKE -C drivers/sound config || exit 1 fi rm -f .config.old if [ -f .config ]; then mv .config .config.old fi mv .tmpconfig .config mv .tmpconfig.h include/linux/autoconf.h echo echo "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" echo exit 0 |