246 lines
6.1 KiB
Bash
Executable file
246 lines
6.1 KiB
Bash
Executable file
#!/bin/sh
|
|
# Copied almost in its entirety from pcmcia-cs, credits to David Hinds
|
|
# TODO: Since we're dependent on configured pcmcia source, we should change
|
|
# this such that it will ask for the pcmcia source dir and then read
|
|
# all our stuff from pcmcia/config.mk. Would simplify alot of things.
|
|
#
|
|
|
|
fail ()
|
|
{
|
|
echo ""
|
|
echo "Configuration failed"
|
|
echo ""
|
|
exit 1
|
|
}
|
|
|
|
|
|
if [ -r config.out ]; then
|
|
. ./config.out 2> /dev/null
|
|
else
|
|
if [ ! -r config.in ]; then
|
|
echo "config.in does not exist!"
|
|
fail
|
|
fi
|
|
. ./config.in
|
|
fi
|
|
|
|
|
|
PROMPT=y
|
|
|
|
arg () {
|
|
VALUE="`echo X"$2" | sed -e 's/^X--[a-zA-Z_]*=//'`"
|
|
eval $1=\"$VALUE\"
|
|
}
|
|
|
|
usage () {
|
|
echo "usage: $0 "
|
|
exit 1
|
|
}
|
|
|
|
#=======================================================================
|
|
|
|
CONFIG=config.new
|
|
CONFIG_MK=config.mk
|
|
rm -f .prereq.ok $CONFIG $CONFIG_MK $MODVER
|
|
|
|
cat << 'EOF' > $CONFIG
|
|
#
|
|
# Automatically generated by 'make config' -- don't edit!
|
|
#
|
|
EOF
|
|
|
|
write_bool() {
|
|
value=`eval echo '$'$1`
|
|
if [ "$value" = "y" ] ; then
|
|
echo "$1=y" >> $CONFIG
|
|
echo "$1=y" >> $CONFIG_MK
|
|
else
|
|
echo "# $1 is not defined" >> $CONFIG
|
|
echo "# $1 is not defined" >> $CONFIG_MK
|
|
fi
|
|
}
|
|
|
|
write_str () {
|
|
value=`eval echo '$'$1`
|
|
echo "$1"=\"$value\" >> $CONFIG
|
|
echo "$1=$value" >> $CONFIG_MK
|
|
}
|
|
|
|
prompt () {
|
|
eval $3=\"$2\"
|
|
if [ "$PROMPT" = "y" ] ; then
|
|
/bin/echo "$1 [$2]: \c"
|
|
read tmp
|
|
if [ -n "$tmp" ] ; then eval $3=\"$tmp\" ; fi
|
|
else
|
|
/bin/echo "$1 [$2]"
|
|
fi
|
|
}
|
|
|
|
ask_bool () {
|
|
default=`eval echo '$'$2`
|
|
if [ ! "$default" ] ; then default=n ; fi
|
|
answer=""
|
|
while [ "$answer" != "n" -a "$answer" != "y" ] ; do
|
|
prompt "$1 (y/n)" "$default" answer
|
|
done
|
|
eval "$2=$answer"
|
|
write_bool $2
|
|
}
|
|
|
|
ask_str () {
|
|
default=`eval echo '$'$2`
|
|
prompt "$1" "`echo $default`" answer
|
|
eval $2=\"$answer\"
|
|
write_str $2
|
|
}
|
|
|
|
#=======================================================================
|
|
|
|
echo ""
|
|
echo "---------------- Linux WLAN Configuration Script -------------"
|
|
echo ""
|
|
echo "The default responses are correct for most users."
|
|
echo ""
|
|
|
|
# Collect the kernel source tree and test for sanity
|
|
|
|
ask_str "Linux source directory" LINUX_SRC
|
|
|
|
if [ ! -f $LINUX_SRC/Makefile ] ; then
|
|
echo "Linux source tree $LINUX_SRC is incomplete or missing!"
|
|
if [ -d $LINUX_SRC/include/linux ] ; then
|
|
echo " The kernel header files are present, but not " \
|
|
"the full source code."
|
|
fi
|
|
echo " See the HOWTO for a list of FTP sites for current" \
|
|
"kernel sources."
|
|
fail
|
|
fi
|
|
|
|
# What kernel are we compiling for?
|
|
|
|
version () {
|
|
expr $1 \* 65536 + $2 \* 256 + $3
|
|
}
|
|
|
|
echo ""
|
|
for TAG in VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION ; do
|
|
eval `sed -ne "/^$TAG/s/[ ]//gp" $LINUX_SRC/Makefile`
|
|
done
|
|
SRC_RELEASE=$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION
|
|
VERSION_CODE=`version $VERSION $PATCHLEVEL $SUBLEVEL`
|
|
echo "The kernel source tree is version $SRC_RELEASE."
|
|
if [ $VERSION_CODE -lt `version 2 0 0` ] ; then
|
|
echo "This package requires at least a 2.0 series kernel."
|
|
fail
|
|
fi
|
|
CUR_RELEASE=`uname -r`
|
|
if [ "$SRC_RELEASE" != "$CUR_RELEASE" ] ; then
|
|
echo "WARNING: the current kernel is actually version $CUR_RELEASE."
|
|
fi
|
|
ARCH=`uname -m | sed -e 's/i.86/i386/'`
|
|
|
|
# Check for consistent kernel build dates
|
|
|
|
CUR_D=`uname -v | sed -e 's/^#[0-9]* //;s/SMP //'`
|
|
CUR_D=`echo $CUR_D | sed -e 's/\(:[0-9][0-9]\) .* \([12][90]\)/\1 \2/'`
|
|
echo "The current kernel build date is $CUR_D."
|
|
UTS_VERSION="unknown";
|
|
if [ -f $LINUX_SRC/include/linux/compile.h ] ; then
|
|
UTS_VERSION=`grep UTS_VERSION $LINUX_SRC/include/linux/compile.h |
|
|
sed -e 's/.*"\(.*\)"/\1/'`
|
|
SRC_D=`echo $UTS_VERSION | sed -e 's/^#[0-9]* //;s/SMP //'`
|
|
SRC_D=`echo $SRC_D | sed -e 's/\(:[0-9][0-9]\) .* \([12][90]\)/\1 \2/'`
|
|
if [ $SRC_RELEASE = $CUR_RELEASE -a "$SRC_D" != "$CUR_D" ] ; then
|
|
echo "WARNING: the source tree has a build date of $SRC_D."
|
|
if [ `date -d "$SRC_D" +%s` -gt `date -d "$CUR_D" +%s` ] ; then
|
|
echo " Did you forget to install your new kernel?!?"
|
|
fi
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
# PCMCIA Source dir
|
|
PCMCIA_SRC=`/sbin/cardctl -V 2>&1 | sed -e 's/cardctl version //'`
|
|
PCMCIA_SRC=/usr/src/pcmcia-cs-$PCMCIA_SRC
|
|
ask_str "pcmcia-cs source dir" PCMCIA_SRC
|
|
|
|
# Alternate install dir
|
|
ask_str "Alternate target install directory" PREFIX
|
|
DESTDIR=$PREFIX
|
|
write_str DESTDIR
|
|
|
|
# Start looking for the destination module dir
|
|
MODDIR=$MODULES_DIR
|
|
if [ ! "$MODDIR" ] ; then
|
|
if [ -d /lib/modules/preferred ] ; then
|
|
MODDIR=/lib/modules/preferred
|
|
else
|
|
MODDIR=/lib/modules/$SRC_RELEASE
|
|
fi
|
|
else
|
|
MODDIR=`echo $MODDIR | \
|
|
sed -e "s/[0-9]\.[0-9]\.[0-9]*\(-[A-Za-z0-9]*\)*/$SRC_RELEASE/"`
|
|
fi
|
|
ask_str " Module install directory" MODDIR
|
|
MODULES_DIR=$MODDIR
|
|
write_str MODULES_DIR
|
|
|
|
# PCMCIA script dir
|
|
ask_str "PCMCIA script directory" PCMCIA_DIR
|
|
|
|
# Just write some out (we're not prompting right now)
|
|
write_str INST_EXEDIR
|
|
|
|
#=======================================================================
|
|
|
|
# How should the startup scripts be configured?
|
|
|
|
echo ""
|
|
|
|
if [ "$PREFIX" = "" ] ; then
|
|
if [ -d /etc/rc.d/init.d -o -d /etc/init.d -o -d /sbin/init.d ] ; then
|
|
echo "It looks like you have a System V init file setup."
|
|
SYSV_INIT=y
|
|
if [ -d /etc/rc.d/init.d ] ; then
|
|
echo "RC_DIR=/etc/rc.d" >> $CONFIG
|
|
echo "RC_DIR=/etc/rc.d" >> $CONFIG_MK
|
|
elif [ -d /sbin/init.d ] ; then
|
|
echo "RC_DIR=/sbin" >> $CONFIG
|
|
echo "RC_DIR=/sbin" >> $CONFIG_MK
|
|
else
|
|
echo "RC_DIR=/etc" >> $CONFIG
|
|
echo "RC_DIR=/etc" >> $CONFIG_MK
|
|
fi
|
|
else
|
|
echo "It looks like you have a BSD-ish init file setup."
|
|
if ! grep rc.wlan /etc/rc.d/rc.S >/dev/null ; then
|
|
echo " You'll need to edit /etc/rc.d/rc.S to invoke" \
|
|
"/etc/rc.d/rc.wlan (for ISA/PCMCIA cards)"
|
|
echo " so that wlan cards will be started at boot time."
|
|
fi
|
|
SYSV_INIT=
|
|
fi
|
|
write_bool SYSV_INIT
|
|
else
|
|
ask_bool "System V init script layout" SYSV_INIT
|
|
if [ "$SYSV_INIT" = "y" ] ; then
|
|
ask_str "Top-level directory for RC scripts" RC_DIR
|
|
fi
|
|
fi
|
|
if [ ! -x /sbin/depmod ] ; then INSTALL_DEPMOD=n ; fi
|
|
write_bool INSTALL_DEPMOD
|
|
|
|
echo ""
|
|
|
|
#=======================================================================
|
|
|
|
mv $CONFIG config.out
|
|
|
|
touch .prereq.ok
|
|
|
|
echo ""
|
|
echo "Configuration successful."
|
|
echo ""
|