#!/bin/sh # # Adapted from the pcmcia-cs/Configure file, license statement below: # # Configure 1.110 1999/06/24 17:37:36 # # The contents of this file are subject to the Mozilla Public License # Version 1.0 (the "License"); you may not use this file except in # compliance with the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and # limitations under the License. # # The initial developer of the original code is David A. Hinds # . Portions created by David A. Hinds # are Copyright (C) 1998 David A. Hinds. All Rights Reserved. #------------------------------------------------------------------------- # linux-wlan-ng/Configure # # 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 ""