#!/bin/sh

TF_C=testit.c
TF_E=./testit

PREFIX='/usr/local'
PREFIX_BIN=''
PREFIX_LIB=''
PREFIX_INC=''
PREFIX_MAN=''

SHARED='-shared'
SHARED_CF=''
SHARED_SUFFIX='.so'

ROOT_UID=''

# Bad libxml-2.0 hack:
CFLAGS="$CFLAGS -I/usr/include/libxml2"

echo -n "checking for C compiler... "
if [ "$CC" != '' ]
then
 echo $CC
else
 CC=$(which gcc cc 2> /dev/null | grep ^/ | head -n 1)
 if [ "$CC" = '' ]
 then
  echo 'none'
  exit 1;
 fi
 echo $CC
fi

echo -n "checking for ranlib... "
if [ "$RANLIB" != '' ]
then
 echo $RANLIB
else
 _guess=`echo $CC | sed 's/[gp]*cc\(-.*\)*//'`
 RANLIB=$(which ${_guess}ranlib ranlib 2> /dev/null | grep ^/ | head -n 1)
 if [ "$RANLIB" = '' ]
 then
  echo 'none'
 fi
 echo $RANLIB
fi

echo -n "checking for sysname... "
SYSNAME=$(uname -s)
echo "$SYSNAME"

while [ "$1" != '' ]
do
 case "$1" in
  '--help'|'-h')
   echo '--help                      - This Help'
   echo
   echo '--root-uid UID              - Sets User ID (UID) of the root user/superuser'
   echo
   echo '--ldpath DIR                - Add DIR to (compile time) search list for libs'
   echo '--incpath DIR               - Add DIR to search list for headers'
   echo '--addpath DIR               - Add DIR/lib to lib, DIR/include to header search list'
   echo
   echo '--prefix DIR                - Set general prefix (default: '"$PREFIX"')'
   echo '--prefix-bin DIR            - Set prefix for binarys (default: $PREFIX/bin)'
   echo '--prefix-lib DIR            - Set prefix for librarys (default: $PREFIX/libs)'
   echo '--prefix-inc DIR            - Set prefix for include files (default: $PREFIX/include)'
   echo '--prefix-man DIR            - Set prefix for manpages (default: $PREFIX/man)'
   exit 0;
  ;;
  '--ldpath')
   LDPATH="$LDPATH -L$2"
   shift;
  ;;
  '--incpath')
   INCPATH="$INCPATH -I$2"
   shift;
  ;;
  '--addpath')
   LDPATH="$LDPATH -L$2/lib/"
   INCPATH="$INCPATH -I$2/include/"
   shift;
  ;;
  '--prefix')
   PREFIX="$2"
   shift;
  ;;
  '--prefix-bin')
   PREFIX_BIN="$2"
   shift;
  ;;
  '--prefix-lib')
   PREFIX_LIB="$2"
   shift;
  ;;
  '--prefix-inc')
   PREFIX_INC="$2"
   shift;
  ;;
  '--prefix-man')
   PREFIX_MAN="$2"
   shift;
  ;;
  '--root-uid')
   ROOT_UID="$2"
   shift;
  ;;
  *)
   echo "Error: unknown option: $1" >&2;
   echo "Try: $0 --help" >&2;
   exit 1;
  ;;
 esac;

 shift;
done

exec 4> Makefile.conf 5> config.log

[ "$PREFIX_BIN"  = '' ] && PREFIX_BIN="$PREFIX/bin/"
[ "$PREFIX_LIB"  = '' ] && PREFIX_LIB="$PREFIX/lib/"
[ "$PREFIX_INC"  = '' ] && PREFIX_INC="$PREFIX/include/"
[ "$PREFIX_MAN"  = '' ] && PREFIX_MAN="$PREFIX/share/man/"

{
 echo "SHARED=$SHARED"
 echo "SHARED_CF=$SHARED_CF"
 echo "SHARED_SUFFIX=$SHARED_SUFFIX"
# $fPIC && echo 'fPIC=-fPIC'
 echo
 echo "CC=$CC"
 echo "RANLIB=$RANLIB"
 echo "LDPATH=$LDPATH"
 echo "INCPATH=$INCPATH"
 echo "CFLAGS+=$CFLAGS"
 echo
 echo "PREFIX=$PREFIX"
 echo "PREFIX_BIN=$PREFIX_BIN"
 echo "PREFIX_LIB=$PREFIX_LIB"
 echo "PREFIX_INC=$PREFIX_INC"
 echo "PREFIX_MAN=$PREFIX_MAN"
} >&4

CCTF="$CC $CFLAGS $LDPATH $INCPATH -I. -o $TF_E $TF_C"

{
 cat <<'EOF'
//config.log:

/*
 * Logfile for configure script $Revision: 1.9 $ of RoarAudio PlayList Daemin
 */

EOF
 echo '/* uname: ' $(uname -a) '*/'
 echo '/* Date : ' $(date)  '*/'
 echo

 echo
 echo

 echo "ARGS(): $_CARGS"

 for i in PATH SHELL CC RANLIB PKG_CONFIG SYSNAME
 do
  eval echo "BASICCONF\($i\): \$$i";
 done

 echo
 echo
} >&5


test_lib () {
 echo > $TF_C

 name="$1"
 echo -n "checking for $name... "
 echo "TEST LIB: $name" >&5
 shift;

 lib="$1"

 LIBS=''

 while [ "$1" != '--' ]
 do
  case "$1" in
   'c'|'-lc')
    :; # no need to do anything
   ;;
   '-'*)
    LIBS="$LIBS $1"
   ;;
   *)
    LIBS="-l$1"
   ;;
  esac
  shift;
 done

 shift;

 echo "LIB($name) IS TESTED USING LIBS: $LIBS" >&5

 while [ "$1" != '' ]
 do
  echo "#include <$1>" >> $TF_C
  shift;
 done

 echo 'int main (void) { return 0; }' >> $TF_C

 echo "LIB($name) IS TESTED USING TEST CODE:" >&5
 echo "--- BEGIN OF CODE BLOCK ---" >&5
 cat $TF_C >&5
 echo "--- END OF CODE BLOCK ---" >&5

 echo "LIB($name) HAS COMPILER/LINKER OUTPUT:" >&5
 echo "--- BEGIN OF CHILD OUTPUT BLOCK ---" >&5
 $CCTF $LIBS >&5 2>&5;
 R=$?
 echo "--- END OF CHILD OUTPUT BLOCK ---" >&5

 if [ "$R" = '0' ]
 then
  echo 'yes'
  echo "LIB($name) WAS FOUND" >&5
  if [ "$lib" != 'c' ]
  then
   echo "lib_$lib=$LIBS" >&4
   echo "def_$lib=-DHAVE_LIB_"`echo "$lib" | tr a-z A-Z` >&4
  fi
 else
  echo 'no'
  echo "LIB($name) NOT FOUND" >&5
 fi

 return $R
}

echo -n 'checking for user id of root/superuser... '
if [ "$ROOT_UID" = '(none)' ]
then
 echo "none (disabled by user)"
elif [ "$ROOT_UID" = '' ]
then
 ROOT_USER='root'
 ROOT_UID=`id -u $ROOT_USER`
 if [ "$ROOT_UID" = '' ]
 then
  echo "none (please report this)"
 else
  echo "$ROOT_UID($ROOT_USER)"
  echo "ROOT_UID=$ROOT_UID" >&4
 fi
else
 echo "$ROOT_UID"
 echo "ROOT_UID=$ROOT_UID" >&4
fi


test_lib         WinSockP0     wsock32    -- winsock2.h
test_lib         WinSockP1     ws2_32     -- winsock2.h
test_lib         UUID          uuid       -- uuid/uuid.h
test_lib         OpenSLP       slp        -- slp.h
test_lib         libxml-2      xml2       -- libxml/tree.h libxml/parser.h libxml/xmlreader.h libxml/xpath.h libxml/xpathInternals.h libxml/uri.h
test_lib         RoarAudio     roar       -- roaraudio.h
if [ "$?" != '0' ]
then
 echo "Error: can not find libroar" >&2
 exit 1
fi

echo -n 'checking if cp supports -v... '
if cp -v --help > /dev/null 2> /dev/null
then
 echo "cp_v=-v" >&4
 echo yes
else
 echo "cp_v=" >&4
 echo no
fi

echo >&5
echo '//ll' >&5

rm -f $TF_C $TF_E

#ll
