Configure script

Pavel Roskin proski at gnu.org
Mon Mar 3 20:51:19 EST 2003


Hello!

Is there any interest in having a Configure script for HostAP (like the
one in linux-wlan-ng)?

I started writing it.  The preliminary version is attached.  What needs to
be done:

1) Load the previous configuration as defaults.
2) Rewrite the output files only if the configuration is successful.
3) Change the build system to use config.mk and config.h is they are
present.
4) Add all configurable parameters.

I just want to know if this script will be used once it's finished.

I'm subscribed in no-mail mode, make sure to keep me in cc: if you want me
to read your e-mails.

-- 
Regards,
Pavel Roskin
-------------- next part --------------
#! /bin/sh

# Ask user for configurable parameters.
# (C) Pavel Roskin (proski at gnu.org)
#
# This program is free software; you can redistribute it and/or modify 
# it under the terms of the GNU General Public License version 2 as 
# published by the Free Software Foundation. See README and COPYING for 
# more details. 

function echo_n () {
  echo $ECHO_N "$@$ECHO_C"
}


function die () {
  echo "ERROR: $@" 2>&1
  echo "ERROR: Configuration unsuccessful" 2>&1
  exit 1
}


# Write data to configuration file
# Arguments:
# $1 - variable, $2 - value, $3 - config file type.
# Variable from $1 is also assigned the value from $2.
function write_data () {
  case "$3" in
  make)
    echo "$1 = $2" >>config.mk ;;
  header)
    echo "#define $1 $2" >>config.h ;;
  *)
    die "Invalid configuration file" ;;
  esac
  eval "$1=$2"
}


# Write disabled (commented out) data to configuration file
# Arguments:
# $1 - variable, $2 - value, $3 - config file type.
# Variable from $1 is also assigned the value from $2.
function write_disabled_data () {
  case "$3" in
  make)
    echo "# $1 = $2" >>config.mk ;;
  header)
    echo "/* #define $1 $2 */" >>config.h ;;
  *)
    die "Invalid configuration file" ;;
  esac
  eval "$1=$2"
}


# Ask user for a free form string.
# Arguments:
# $1 - message, $2 - default value, $3 - variable, $4 - config file type.
# Variable from $3 is assigned the value entered by the user.
function ask() {
  echo_n "$1 [$2] "
  read i
  if test -z "$i"; then
    i="$2"
  fi

  write_data "$3" "$i" "$4"
}

# Ask user for a boolean value.
# Arguments:
# $1 - message, $2 - default value, $3 - variable, $4 - config file type.
# Variable from $3 is assigned the value entered by the user.
function askbool() {
  case "$2" in
  y) c="[Y/n]" ;;
  n) c="[y/N]" ;;
  *) die "Invalid default for $3"
  esac

  i=
  while test -z "$i"; do
    echo_n "$1 $c "
    read i
    case "x$i" in
    xy) ;;
    xn) ;;
    x) i="$2" ;;
    *) i=""; echo "Invalid input" ;;
    esac
  done

  if test "$i" = "y"; then
    write_data "$3" "1" "$4"
  else
    write_disabled_data "$3" "1" "$4"
  fi
}

# Figure out how to turn off newline in echo.  From Autoconf.
case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
  *c*,-n*) ECHO_N= ECHO_C=' 
' ;;
  *c*,*  ) ECHO_N=-n ECHO_C= ;;
  *)       ECHO_N= ECHO_C='\c' ;;
esac

echo "# Generated by Configure" >config.mk
echo >>config.mk
echo "/* Generated by Configure */" >config.h
echo >>config.h

ask "Linux source directory" "/usr/src/linux" KERNEL_PATH make

test -d $KERNEL_PATH || die "Cannot find Linux source directory"
test -f $KERNEL_PATH/.config || die "Linux source directory is not configured"
. $KERNEL_PATH/.config

if test -z "$CONFIG_PCMCIA"; then
  ask "Path to the PCMCIA sources" "/usr/src/pcmcia" PCMCIA_PATH make
fi

askbool "Build PCMCIA Card Services driver" "y" BUILD_PCMCIA make

if test -n "$CONFIG_PCI"; then
  askbool "Build PLX9052 based PCI driver" "n" BUILD_PLX make
  askbool "Build native PCI driver" "n" BUILD_PCI make
fi

ask "Target root directory (empty to install locally)" "" DESTDIR make

askbool "Enable hostapd support" "n" PRISM2_HOSTAPD header
askbool "Enable firmware download" "n" PRISM2_DOWNLOAD_SUPPORT header


More information about the HostAP mailing list