#!/bin/sh
src=`dirname "$0"|sed -e 's,/$,,g'`
pfx=/usr/local
libffsox=`pkg-config --variable=prefix libffsox`
libpb=`pkg-config --variable=prefix libpb`

mode="full"
oss="mingw"

help() {
  echo "Usage: $0 [OPTION]... [VAR=VALUE]..."
  exit 1
}

if test "" = "$src"; then src="."; fi

for i in $oss; do
  if test 1 -eq `uname|grep -i $i|wc -l`; then os=$i; fi
done

###############################################################################
extract() {
  echo "$1"|sed -e "s/$2=//g"
}

while test "$1" != ""; do
  case $1 in
    --help) help ;;
    --prefix=*) pfx=`extract "$1" '--prefix'` ;;
    --bindir=*) bindir=`extract "$1" '--bindir'` ;;
    --libdir=*) libdir=`extract "$1" '--libdir'` ;;
    --includedir=*) includedir=`extract "$1" '--includedir'` ;;
    --mode=*) mode=`extract "$1" '--mode'` ;;
    --msvc=*) msvc=`extract "$1" '--msvc'` ;;
    --mssdk=*) mssdk=`extract "$1" '--mssdk'` ;;
    --wasdk=*) wasdk=`extract "$1" '--wasdk'` ;;
    --ffmpeg-src=*) ffmpeg_src=`extract "$1" '--ffmpeg-src'` ;;
    --ffmpeg-build=*) ffmpeg_build=`extract "$1" '--ffmpeg-build'` ;;
    LIBFFSOX=*) libffsox=`extract "$1" 'LIBFFSOX'` ;;
    LIBPB=*) libpb=`extract "$1" 'LIBPB'` ;;
    CFLAGS=*) cflags=`extract "$1" 'CFLAGS'` ;;
    CPPFLAGS=*) cppflags=`extract "$1" 'CPPFLAGS'` ;;
    LDFLAGS=*) ldflags=`extract "$1" 'LDFLAGS'` ;;
    LIBS=*) libs=`extract "$1" 'LIBS'` ;;
    *) echo "Error: Unknow option: $1."; help ;;
  esac
  shift
done

if [ 'x' = "x$msvc" ] || [ 'x' = "x$mssdk" ] || [ 'x' = "x$wasdk" ]; then
  echo "Error: missing --msvc, --mssdk or --wasdk options."
  exit 1
fi

###############################################################################
# transform relative path into absolute
#normpath() {
#  echo "$1"|sed  -e "s,^\([^/]\),$PWD/\1,g"
#}
#
#pfxpath() {
#  if test "" = "$1"; then
#    normpath "$pfx/$2"
#  else
#    normpath "$2"
#  fi 
#}

normpath() {
  if [ 'x' == "x$1" ] || [ "." == "$1" ]; then
    echo "$PWD"
  else
    echo "$1"|sed -e "s,^\([^/]\),$PWD/\1,g"
  fi
}

pfxpath() {
  if [ 'x' == "x$1" ] || [ "." == "$1" ]; then
    echo "$pfx/$2"
  else
    normpath "$1"
  fi 
}

if [ '.' = "$pfx" ]; then pfx=$PWD; fi
if [ '.' = "$src" ]; then src=$PWD; fi

bindir=`pfxpath "$bindir" bin`
libdir=`pfxpath "$libdir" lib`
includedir=`pfxpath "$includedir" include`

src=`normpath "$src"`
pfx=`normpath "$pfx"`
msvc=`normpath "$msvc"`
mssdk=`normpath "$mssdk"`
wasdk=`normpath "$wasdk"`
ffmpeg_src=`normpath "$ffmpeg_src"`
ffmpeg_build=`normpath "$ffmpeg_build"`

###############################################################################
rm -f config.mak
touch config.mak

echo "OS:=$os" >> config.mak
echo "PFX:=$pfx" >> config.mak
echo "SRCDIR:=$src" >> config.mak
echo "BINDIR:=$bindir" >> config.mak
echo "LIBDIR:=$libdir" >> config.mak
echo "INCLUDEDIR:=$includedir" >> config.mak
echo "MODE:=$mode" >> config.mak
echo "MSVC:=$msvc" >> config.mak
echo "MSSDK:=$mssdk" >> config.mak
echo "WASDK:=$wasdk" >> config.mak
echo "FFMPEG_SRC:=$ffmpeg_src" >> config.mak
echo "FFMPEG_BUILD:=$ffmpeg_build" >> config.mak
echo "LIBFFSOX:=$libffsox" >> config.mak
echo "LIBPB:=$libpb" >> config.mak
if test "" != "$cflags"; then echo "CFLAGS+=$cflags" >> config.mak; fi
echo 'CPPFLAGS+=-I$(INCLUDEDIR)' >> config.mak
if test "" != "$cppflags"; then echo "CPPFLAGS+=$cppflags" >> config.mak; fi
echo 'LDFLAGS+=-L$(LIBDIR)' >> config.mak
if test "" != "$ldflags"; then echo "LDFLAGS+=$ldflags" >> config.mak; fi
if test "" != "$libs"; then echo "LIBS+=$libs" >> config.mak; fi

if test ! . -ef $src; then
  echo "cp -p $src/Makefile ."
  cp -p $src/Makefile .
fi
