#!/bin/sh

# default settings
PREFIX="/usr/local"

# check args
while [ "$1" ]; do
  if [ "$1" == "--prefix" ]; then
    PREFIX="$2"
    shift 1
  fi
  if [ "$1" == "--libdir" ]; then
    LIBDIR="$2"
    shift 1
  fi
  if [ "$1" == "--python" ]; then
    PYTHON="$2"
    shift 1
  fi
  if [ "$1" == "--without-clamav" -o "$1" == "--disable-clamav" ]; then
    CLAMAV="no"
  fi
  if [ "$1" == "--without-dspam" -o "$1" == "--disable-dspam" ]; then
    DSPAM="no"
  fi
  shift 1
done

if [ -z "$LIBDIR" ]; then
  LIBDIR="$PREFIX/lib"
fi
LIBARCH=`basename $LIBDIR`

# check for python
for v in "" 2 2.2 2.3 2.4; do
  which python$v >/dev/null 2>&1 && \
  python$v -c "import sys; sys.exit(sys.version_info[0]>2)" 2>/dev/null && break
done
PYTHON="python$v"
PYTHON_VER=`$PYTHON -c '
import sys
print "python"+str(sys.version_info[0])+"."+str(sys.version_info[1])
'`
for PYTHON_PREFIX in /usr /usr/local; do
  if [ -f $PYTHON_PREFIX/include/$PYTHON_VER/Python.h ]; then
    break
  fi
done

# check for clamav include
if [ -z "$CLAMAV" ]; then
CLAMAV="no"
cat > config.c << EOF
#include <clamav.h>
int main() {
  return CL_CLEAN;
}
EOF
gcc -lclamav config.c -o config.bin >config.log 2>&1
if [ -x ./config.bin ] && ./config.bin; then
  CLAMAV="yes"
fi
rm -f config.c config.bin config.log
fi

# check for dspam include
if [ -z "$DSPAM" ]; then
DSPAM="no"
for DSPAM_PREFIX in /usr /usr/local; do
cat > config.c << EOF
#include <libdspam.h>
int main() {
  return (LIBDSPAM_VERSION_MAJOR>3);
}
EOF
gcc -ldspam -I$DSPAM_PREFIX/include/dspam config.c -o config.bin >config.log 2>&1
if [ -x ./config.bin ] && ./config.bin; then
  DSPAM="yes"
  break
fi
done
rm -f config.c config.bin config.log
fi

echo "Configured settings:"
echo "  Prefix: $PREFIX"
echo "  Libdir: $LIBDIR ($LIBARCH)"
echo "  Python: $PYTHON, version $PYTHON_VER, in $PYTHON_PREFIX"
echo "  ClamAV: $CLAMAV"
if [ "$DSPAM" == "yes" ]; then
  echo "  Dspam: $DSPAM, in $DSPAM_PREFIX"
else
  echo "  Dspam: $DSPAM"
fi

echo -n "Generating Makefiles ... "

backslash() {
  echo "$@" | sed 's/\//\\\//g'
}

for mf in Makefile libclamav/Makefile pydspam/Makefile; do
  sed \
    -e "s/%PREFIX%/`backslash $PREFIX`/g" \
    -e "s/%LIBARCH%/`backslash $LIBARCH`/g" \
    -e "s/%LIBDIR%/`backslash $LIBDIR`/g" \
    -e "s/%PYTHON%/$PYTHON/g" \
    -e "s/%PYTHON_VER%/$PYTHON_VER/g" \
    -e "s/%PYTHON_PREFIX%/`backslash $PYTHON_PREFIX`/g" \
    -e "s/%CLAMAV%/$CLAMAV/g" \
    -e "s/%DSPAM%/$DSPAM/g" \
    -e "s/%DSPAM_PREFIX%/`backslash $DSPAM_PREFIX`/g" \
    < ${mf}.in > $mf
done
echo "done"
