#!/bin/sh
#
# Configure 1.125 1999/11/03 18:21:44
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.1 (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
# <dhinds@pcmcia.sourceforge.org>.  Portions created by David A. Hinds
# are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
#
# Alternatively, the contents of this file may be used under the terms
# of the GNU Public License version 2 (the "GPL"), in which case the
# provisions of the GPL are applicable instead of the above.  If you
# wish to allow the use of your version of this file only under the
# terms of the GPL and not to allow others to use your version of this
# file under the MPL, indicate your decision by deleting the provisions
# above and replace them with the notice and other provisions required
# by the GPL.  If you do not delete the provisions above, a recipient
# may use your version of this file under either the MPL or the GPL.
#
#=======================================================================

fail ()
{
    echo ""
    echo "Configuration failed."
    echo ""
    exit 1
}

# Minimal requirements for sanity
if [ ! -f linux/intermezzo_fs.h ] ; then
    echo "Ack!  The InterMezzo distribution is incomplete/damaged!"
    echo "    Unpack again -- and try using a Linux filesystem this time."
    fail
fi

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 [-n|--noprompt] [--kernel=src-dir] [--target=dir]"
    echo "    [--moddir=dir] [--cc=path] [--ld=path] [--debug=debug-flags]"
    echo "    [--uflags=user-flags] [--kflags=kernel-flags]"
    echo "    [--{no}trust] [--kreint] [--current] [--srctree]"
    echo ""
    echo "  -n, --noprompt     non-interactive mode: no prompting"
    echo "  --kernel=DIR       use kernel source tree at DIR"
    echo "  --target=DIR       install all files using DIR as root"
    echo "  --moddir=DIR       install modules under DIR"
    echo "  --cc=PATH          use another C compiler"
    echo "  --ld=PATH          use another linker"
    echo "  --debug=FLAGS      set compiler flags for debugging"
    echo "  --uflags=FLAGS     set compiler flags for user-mode tools"
    echo "  --kflags=FLAGS     set compiler flags for kernel modules"
    echo "  --kreint           enable kernel reintegration (experimental)"
    echo "  --{no}trust        disable or enable trusted user tools"
    echo "  --current          read configuration of current kernel"
    echo "  --srctree          read kernel configuration from source tree"
    exit 1
}

while [ $# -gt 0 ] ; do
    case "$1" in
    -n|--noprompt)	PROMPT=n		;;
    --kernel=*)		arg LINUX $1 		;;
    --target=*)		arg PREFIX $1		;;
    --moddir=*)		arg MODDIR $1		;;
    --cc=*)		arg CC "$1"		;;
    --ld=*)		arg LD "$1"		;;
    --debug=*)		arg PCDEBUG "$1"	;;
    --kflags=*)		arg KFLAGS "$1"		;;
    --uflags=*)		arg UFLAGS "$1"		;;
    --kreint)		CONFIG_KREINT=y		;;
    --trust)		UNSAFE_TOOLS=y		;;
    --notrust)		UNSAFE_TOOLS=n		;;
    --current)		CONF_SRC=1		;;
    --srctree)		CONF_SRC=2		;;
    *)			usage			;;
    esac
    shift
done

#=======================================================================

CONFIG=config.out
CONFIG_H=linux/config.h
VERSION_H=linux/version.h
CONFIG_MK=config.mk
MODVER=linux/modversions.h
rm -f .prereq.ok $CONFIG $CONFIG_H $CONFIG_MK $MODVER $VERSION_H

# Write to temporary files.
CONFIG=${CONFIG}T
CONFIG_H=${CONFIG_H}T
CONFIG_MK=${CONFIG_MK}T
rm -f $CONFIG $CONFIG_H $CONFIG_MK

ln -s config.h $VERSION_H

cat << 'EOF' > $CONFIG
#
# Automatically generated by 'make config' -- don't edit!
#
EOF

cat << 'EOF' > $CONFIG_H
/*
  Automatically generated by 'make config' -- do not edit!
*/
#ifndef _InterMezzo_CONFIG_H
#define _InterMezzo_CONFIG_H

#define AUTOCONF_INCLUDED

EOF

write_bool() {
    value=`eval echo '$'$1`
    if [ "$value" = "y" ] ; then
	echo "$1=y" >> $CONFIG
	echo "$1=y" >> $CONFIG_MK
	echo "#define $1 1" >> $CONFIG_H
    else
	echo "# $1 is not defined" >> $CONFIG
	echo "# $1 is not defined" >> $CONFIG_MK
	echo "#undef  $1" >> $CONFIG_H
    fi
}

write_str () {
    value=`eval echo '$'$1`
    echo "$1"=\"$value\" >> $CONFIG
    echo "$1=$value" >> $CONFIG_MK
    echo "#define $1 \"$value\"" >> $CONFIG_H
}

prompt () {
    eval $3=\"$2\"
    if [ "$PROMPT" = "y" ] ; then
	/bin/echo -e "$1 [$2]: \c"
	read tmp
	if [ ! -t 1 ] ; then echo $tmp ; fi
	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 InterMezzo Configuration Script --------"
echo ""
echo "The default responses for each question are correct for most users."
echo "Consult the InterMezzo-HOWTO for additional info about each option."
echo ""

ask_str "Linux source directory" LINUX

SRC=yes
if [ ! -f $LINUX/Makefile ] ; then
    echo "Linux source tree $LINUX is incomplete or missing!"
    if [ -d $LINUX/include/linux ] ; then
	echo "    The kernel header files are present, but not " \
	     "the full source code."
	SRC=no
    else
	echo "    See the HOWTO for a list of FTP sites for current" \
	    "kernel sources."
	fail
    fi
fi

# What kernel are we compiling for?
version () {
    expr $1 \* 65536 + $2 \* 256 + $3
}

if test $SRC != yes; then
  # Fudge the values we would have obtained from the sources.
  SRC_RELEASE=`uname -r`
  ARCH=`uname -m | sed -e 's/i.86/i386/'`
  VERSION=`echo "$SRC_RELEASE" | sed 's/\..*//'`
  PATCHLEVEL=`echo "$SRC_RELEASE" | sed 's/^[^\.]*\.\([^\.]*\)\..*/\1/'`
  SUBLEVEL=`echo "$SRC_RELEASE" | sed 's/.*\.\([0-9]*\).*/\1/'`
  VERSION_CODE=`version $VERSION $PATCHLEVEL $SUBLEVEL`
else

echo ""
for TAG in VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION ; do
    eval `sed -ne "/^$TAG/s/[ 	]//gp" $LINUX/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/include/linux/compile.h ] ; then
    UTS_VERSION=`grep UTS_VERSION $LINUX/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 ""

fi # SRC

ask_str "Alternate target install directory" PREFIX
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]*.*/$SRC_RELEASE/"`
fi
ask_str "  Module install directory" MODDIR

ask_bool "Enable kernel reintergration (EXPERIMENTAL !!!)" CONFIG_KREINT

ask_str "Compiler flags for debugging" PCDEBUG
write_str KFLAGS
write_str UFLAGS

ask_bool "Build 'trusting' versions of modules" UNSAFE_TOOLS

echo ""
echo "The InterMezzo drivers need to be compiled to match the kernel they"
echo "will be used with, or some or all of the modules may fail to load."
echo "If you are not sure what to do, please consult the InterMezzo-HOWTO."
echo ""
echo "How would you like to set kernel-specific options?"
echo "    1 - Read from the currently running kernel"
test $SRC = no || echo "    2 - Read from the Linux source tree"
echo "    3 - Set each option by hand (experts only!)"

ans=""
while [ "$ans" != 1 -a \( $SRC = no -o "$ans" != 2 \) -a "$ans" != 3 ] ; do
    prompt "Enter option (1-3)" "$CONF_SRC" ans
done
CONF_SRC=$ans
echo "CONF_SRC=$CONF_SRC" >> $CONFIG
echo ""

#=======================================================================

symcheck () {
    if $KSYMS | grep "$1" >/dev/null ; then
	eval "$2=y"
    else
	eval "$2=n"
    fi
}

modcheck () {
    if [ "$2" = "y" ] ; then return ; fi
    /sbin/insmod $1 > /dev/null 2>&1
    if /sbin/lsmod | grep -q "^$1 " ; then
	eval "$2=y"
	INSTALL_DEPMOD=y
    fi
}

configcheck () {
    if grep "^$1=y" $AUTOCONF >/dev/null ; then
	eval "$1=y"
    elif grep "^$1=m" $AUTOCONF >/dev/null ; then
	eval "$1=y"
	INSTALL_DEPMOD=y
    else
	eval "$1=n"
    fi
}

printflag() {
    value=`eval echo '$'$2`
    /bin/echo -e "    $1 is \c"
    if [ "$value" = "y" ] ; then
	echo "enabled."
    else
	echo "disabled."
    fi
    write_bool $2
}

tweak () {
    if [ $VERSION_CODE -ge `version 2 2 0` ] ; then
	if [ $CONFIG_SMP = "y" ] ; then
	    CONFIG_X86_LOCAL_APIC=y
	    write_bool CONFIG_X86_LOCAL_APIC
	fi
    fi
}

printconfig () {
    echo "Kernel configuration options:"
    printflag "Symmetric multiprocessing support" CONFIG_SMP
    printflag "PCI BIOS support" CONFIG_PCI
    tweak
    printflag "Networking support" CONFIG_INET
    printflag "Module version checking" CONFIG_MODVERSIONS
    printflag "EXT3 journalling support" CONFIG_EXT3_FS
    printflag "EXT2 support" CONFIG_EXT2_FS
    printflag "loopback device debugging support" CONFIG_LOOP_DISCARD
    if [ $ARCH = "alpha" ] ; then
	printflag "DEC Alpha UDB target platform" CONFIG_ALPHA_LCA
    fi
    printflag "/proc filesystem support" CONFIG_PROC_FS
    printflag "sysctl support" CONFIG_SYSCTL
    if [ "$BIGMEM" ] ; then
	if [ "$CONFIG_3GB" = "y" ] ; then MEMMAX=3GB
	elif [ "$CONFIG_2GB" = "y" ] ; then MEMMAX=2GB
	else MEMMAX=1GB ; fi
	echo "    Maximum physical memory: $MEMMAX"
	echo "MEMMAX=$MEMMAX" >> $CONFIG
	write_bool CONFIG_1GB
	write_bool CONFIG_2GB
	write_bool CONFIG_3GB
    fi
}

echo "" >> $CONFIG
echo "" >> $CONFIG_MK
echo "" >> $CONFIG_H

ASMDIR=$LINUX/include/asm-$ARCH
test -d "$ASMDIR" || ASMDIR=$LINUX/include/asm
if [ $ARCH = "i386" ] && grep -qs CONFIG_1GB $ASMDIR/page_offset.h; then
    BIGMEM=y
fi

case $CONF_SRC in
    1)
	if [ -x /sbin/ksyms ] ; then
	    KSYMS="/sbin/ksyms -a"
	else
	    echo "Hmmm... /sbin/ksyms is broken.  Using /proc/ksyms..."
	    KSYMS="cat /proc/ksyms"
	fi
	echo "# Options from current kernel" >> $CONFIG
	echo "# Options from current kernel" >> $CONFIG_MK
	echo "/* Options from current kernel */" >> $CONFIG_H
	echo "CHECK=\"/proc/version\"" >> $CONFIG
	echo "CKSUM=\"`cksum < /proc/version`\"" >> $CONFIG
	echo "#define CONFIG_MODULES 1" >> $CONFIG_H
	symcheck smp_invalidate_needed CONFIG_SMP
	symcheck pcibios CONFIG_PCI
	symcheck journal_start CONFIG_EXT3_FS
    CONFIG_EXT2_FS=y
	if (grep "^[ 	]*ext2" /proc/filesystems 1>/dev/null 2>&1); then
     CONFIG_EXT2_FS=y
        fi
	symcheck loop_discard_io CONFIG_LOOP_DISCARD
	symcheck register_netdev CONFIG_INET
	symcheck printk_R CONFIG_MODVERSIONS
	if [ $ARCH = "alpha" ] ; then
	    symcheck hwrpb CONFIG_ALPHA_LCA
	fi
	if [ "$BIGMEM" ] ; then
	    symcheck ^c01 CONFIG_1GB
	    symcheck ^801 CONFIG_2GB
	    symcheck ^401 CONFIG_3GB
	fi
	symcheck proc_root CONFIG_PROC_FS
	symcheck proc_sys_root CONFIG_SYSCTL
	echo "Extracting kernel symbol versions..."
	echo "#ifndef __LINUX_MODVERSIONS_H" > $MODVER
	echo "#define __LINUX_MODVERSIONS_H" >> $MODVER
	H='[0-9a-f][0-9a-f]'
	$KSYMS | sed -ne 's/.* \(.*\)_R\(.*'$H$H$H$H'\)/\1 \2/p' | \
	    awk '{ printf "#define %s\t%s_R%s\n", $1, $1, $2}' \
	    >> $MODVER
	echo "#endif" >> $MODVER
	printconfig
	;;
    2)
	AUTOCONF=$LINUX/.config
	if [ ! -r $AUTOCONF ] ; then
	    echo "Config file $AUTOCONF not present!"
	    echo "    To fix, run 'make config' in $LINUX."
	    fail
	fi
	echo "# Options from $AUTOCONF" >> $CONFIG
	echo "# Options from $AUTOCONF" >> $CONFIG_MK
	echo "/* Options from $AUTOCONF */" >> $CONFIG_H
	echo "CHECK=\"$AUTOCONF\"" >> $CONFIG
	echo "CKSUM=\"`cksum < $AUTOCONF`\"" >> $CONFIG
	echo "#define CONFIG_MODULES 1" >> $CONFIG_H
	if grep "^ *SMP *= *1" $LINUX/Makefile >/dev/null ; then
	    CONFIG_SMP=y
	else
	    configcheck CONFIG_SMP
	fi
	for C in CONFIG_PCI CONFIG_INET CONFIG_MODVERSIONS CONFIG_PROC_FS \
	    CONFIG_EXT3_FS CONFIG_EXT2_FS CONFIG_SYSCTL CONFIG_LOOP_DISCARD; do
	    configcheck $C
	done
	if [ $ARCH = "alpha" ] ; then
	    configcheck CONFIG_ALPHA_LCA
	fi
	if [ "$BIGMEM" ] ; then
	    configcheck CONFIG_1GB
	    configcheck CONFIG_2GB
	    configcheck CONFIG_3GB
	fi
	printconfig
	;;
    3)
	echo "# Configured manually" >> $CONFIG
	echo "# Configured manually" >> $CONFIG_MK
	echo "/* Configured manually */" >> $CONFIG_H
	echo "#define CONFIG_MODULES 1" >> $CONFIG_H
	ask_bool "Symmetric multiprocessing support" CONFIG_SMP
	ask_bool "PCI BIOS support" CONFIG_PCI
	tweak
	ask_bool "TCP/IP networking" CONFIG_INET
	ask_bool "Set version information for module symbols" CONFIG_MODVERSIONS
	ask_bool "EXT2 journalling support" CONFIG_EXT2_FS
	ask_bool "EXT3 journalling support" CONFIG_EXT3_FS
	ask_bool "EXT2 support" CONFIG_EXT2_FS
	if [ $ARCH = "alpha" ] ; then
	    ask_bool "DEC Alpha UDB target platform" CONFIG_ALPHA_LCA
	fi
	if [ "$BIGMEM" ] ; then
	    if [ ! "$MEMMAX" ] ; then MEMMAX=1GB ; fi
	    ans=""
	    while [ "$ans" != "1GB" -a "$ans" != "2GB" ] ; do
		prompt "Maximum physical memory (1GB, 2GB)" "$MEMMAX" ans
	    done
	    echo "MEMMAX=$MEMMAX" >> $CONFIG
	    if [ "$MEMMAX" = "1GB" ] ; then
		CONFIG_1GB=y ; CONFIG_2GB=n ; CONFIG_3GB=n
	    elif [ "$MEMMAX" = "2GB" ] ; then
		CONFIG_1GB=n ; CONFIG_2GB=y ; CONFIG_3GB=n
	    fi
	    write_bool CONFIG_1GB
	    write_bool CONFIG_2GB
	    write_bool CONFIG_3GB
	fi
	ask_bool "/proc filesystem support" CONFIG_PROC_FS
	;;
esac

AFLAGS=
CONFIG_ISA=y
if [ $ARCH = "ppc" ] ; then
    CONFIG_ISA=n
    AFLAGS="-fno-builtin -msoft-float"
    if [ $VERSION_CODE -ge `version 2 1 26` ] ; then
	AFLAGS="$AFLAGS -ffixed-r2"
    fi
elif [ $ARCH = "alpha" ] ; then
    AFLAGS="-mno-fp-regs"
    if [ $VERSION_CODE -ge `version 2 1 26` ] ; then
	AFLAGS="$AFLAGS -ffixed-8"
    fi
fi
echo "ARCH=$ARCH" >> $CONFIG_MK
echo "AFLAGS=$AFLAGS" >> $CONFIG_MK
write_bool CONFIG_ISA

if [ $CONF_SRC != "1" -a "$CONFIG_MODVERSIONS" = "y" ] ; then
    MODVER="$LINUX/include/linux/modversions.h"
    if [ ! -r $MODVER ] ; then
	echo "$MODVER does not exist!"
	echo "    To fix, run 'make dep' in $LINUX."
	fail
    fi
else
    MODVER="$MODVER"
fi

if [ ! -r $LINUX/include/asm ] ; then
    echo "$LINUX/include/asm does not exist!"
    echo "    To fix, do 'ln -s asm-$ARCH asm' in $LINUX/include."
    fail
fi

if [ "$CONFIG_SMP" = "y" ] ; then
    echo "#define __SMP__ 1" >> $CONFIG_H
fi

echo "" >> $CONFIG
echo "" >> $CONFIG_MK
echo "" >> $CONFIG_H

#=======================================================================

if [ $CONF_SRC -eq 1 ] ; then UTS_VERSION=`uname -v` ; fi

HAS_PROC_BUS=n
NEW_QLOGIC=n
echo "MFLAG=-DMODVERSIONS -include $MODVER" >> $CONFIG_MK

if [ $VERSION_CODE -ge `version 2 0 6` ] ; then
    NEW_QLOGIC=y
fi
if [ $VERSION_CODE -ge `version 2 1 31` -a \
     $VERSION_CODE -le `version 2 1 34` ] ; then
    echo "Kernel versions 2.1.31-33 are broken.  Upgrade to 2.1.34."
    fail
fi
if [ $VERSION_CODE -ge `version 2 1 90` -a \
     $VERSION_CODE -le `version 2 1 102` ] ; then
    echo "Kernel versions 2.1.90-2.1.102 are broken.  Upgrade to 2.2."
    fail
fi
if [ $VERSION_CODE -gt `version 2 1 104` ] ; then
    HAS_PROC_BUS=$CONFIG_PROC_FS
fi

UTS_RELEASE=$SRC_RELEASE
# echo "#undef  UTS_RELEASE" >> $CONFIG_H
write_str UTS_RELEASE
write_str UTS_VERSION
echo "#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))" >> $CONFIG_H
echo "LINUX_VERSION_CODE=$VERSION_CODE" >> $CONFIG
echo "LINUX_VERSION_CODE=$VERSION_CODE" >> $CONFIG_MK
#echo "#undef  LINUX_VERSION_CODE" >> $CONFIG_H
echo "#define LINUX_VERSION_CODE $VERSION_CODE" >> $CONFIG_H

echo "" >> $CONFIG
echo "" >> $CONFIG_MK
echo "" >> $CONFIG_H
echo ""

write_bool HAS_PROC_BUS


#=======================================================================

# Check out the module stuff

if [ ! -x /sbin/insmod -o ! -x /sbin/rmmod -o ! -x /sbin/lsmod ] ; then
    echo "Your module utilities (insmod, rmmod) are missing from /sbin!"
    echo "    To fix, you should build and install the latest set" \
         "of module tools,"
    echo "    available from FTP sites listed in the HOWTO."
    fail
fi

MOD_RELEASE=`/sbin/insmod -V 2>&1 | \
    sed -n -e 's/.*[Vv]ersion \([0-9][0-9.]*[0-9]\).*/\1/p'`
X=`echo $MOD_RELEASE | sed -e 's/\./ /g'`
MOD_CODE=`version $X`
if [ $VERSION_CODE -ge `version 2 1 85` ] ; then
    NEED=`version 2 1 85` ; T=2.1.85
elif [ $VERSION_CODE -ge `version 2 1 18` ] ; then
    NEED=`version 2 1 23` ; T=2.1.23
else
    NEED=`version 2 0 0` ; T=2.0.0
fi

if [ $NEED -gt $MOD_CODE ] ; then
    echo "Your module utilities are version $MOD_RELEASE.  That is too old"
    echo "    for this kernel!  To fix, upgrade to at least version $T."
    fail
fi

#=======================================================================

# Is the boot setup OK?

if [ "$PREFIX" = "" ] ; then
    if [ -f /etc/lilo.conf -a -f /boot/map ] ; then
	if [ /vmlinuz -nt /boot/map ] ; then
	    echo "Your boot map file is older than /vmlinuz. "\
		 "If you installed /vmlinuz"
	    echo "by hand, please run 'lilo' to update your boot"\
		 "data, and then reboot."
#	else
#	    echo "Your 'lilo' installation appears to be OK."
	fi
    else
	echo "It doesn't look like you are using 'lilo'."
    fi
fi

#=======================================================================

# 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.pcmcia /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.pcmcia"
	    echo "    so that InterMezzo services will start 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 ""

#=======================================================================

if [ ! -d /var/run ] ; then
    echo "WARNING: /var/run not found."
    echo "    To fix, do 'mkdir /var/run'."
fi

#=======================================================================

echo "" >> $CONFIG_H
echo "#endif /* _InterMezzo_CONFIG_H */" >> $CONFIG_H

mv $CONFIG config.out
mv $CONFIG_H linux/config.h
mv $CONFIG_MK config.mk

touch .prereq.ok

echo ""
echo "Configuration successful."
echo ""
