#!/bin/sh

#################### User definitions section. #########################

NAME="gstream"
INCS="pstream.h gstream.h"
SRCS="gstream.cc"
SCRIPTS="*.sh"

#################### End of user definitions section. ##################

DEFPREFIX=/usr/local
CONFIG=${NAME}-config
MAKEFILE=Makefile

display_usage()
{
cat <<EOF 1>&2

Usage:
	`basename $0` [--prefix=prefix_dir] [--bin=bin_dir]
			[--include=include_dir] [--lib=lib_dir]
Defaults:
	prefix_dir=$DEFPREFIX bin_dir=prefix_dir/include
	include_dir=prefix_dir/include lib_dir=prefix_dir/lib

EOF
exit 1
}

PREFIX=""
BIN=""
INC=""
LIB=""
while [[ $# > 0 ]] ; do
    case $1 in
	--prefix=*)
	    PREFIX=`echo "$1" | tr -d '\n' | cut -f 2 -d '='`
	    shift 1
	;;
	--bin=*)
	    BIN=`echo "$1" | tr -d '\n' | cut -f 2 -d '='`
	    shift 1
	;;
	--include=*)
	    INC=`echo "$1" | tr -d '\n' | cut -f 2 -d '='`
	    shift 1
	;;
	--lib=*)
	    LIB=`echo "$1" | tr -d '\n' | cut -f 2 -d '='`
	    shift 1
	;;
	*)
	    display_usage
	    shift 1
	;;
    esac
done

if [[ $PREFIX == "" ]] ; then PREFIX=$DEFPREFIX ; fi
if [[ $BIN == "" ]] ; then BIN=$PREFIX/bin ; fi
if [[ $INC == "" ]] ; then INC=$PREFIX/include ; fi
if [[ $LIB == "" ]] ; then LIB=$PREFIX/lib ; fi
if [[ $CC == "" ]] ; then CC=gcc; fi
if [[ $CXX == "" ]] ; then CXX=g++; fi

cat <<EOF >$CONFIG
#!/bin/sh

display_usage()
{
cat <<EOF2 1>&2

Usage:	 \`basename \$0\` [--cflags] [--libs]

EOF2
exit 1
}

while [[ \$# > 0 ]] ; do
    case \$1 in
	--cflags)
	    echo " -I$INC"
	    shift 1
	;;
	--libs)
	    echo " -L$LIB -l${NAME}"
	    shift 1
	;;
	*)
	    display_usage
	    shift 1
	;;
    esac
done

EOF

chmod +x $CONFIG

cat <<EOF >$MAKEFILE
INCS = $INCS
SRCS = $SRCS
OBJS = \$(patsubst %.c,%.o,\$(patsubst %.cc,%.o,\$(SRCS)))
LIB  = lib${NAME}.a
CC   = $CC
CXX  = $CXX

all : \$(LIB)

\$(LIB) : \$(OBJS)
	ar -r \$@ \$^

%.o : %.c \$(INCS)
	\$(CC) -O3 -c -I. -o \$@ \$<

%.o : %.cc \$(INCS)
	\$(CXX) -O3 -c -I. -o \$@ \$<

clean :
	rm -f \$(LIB) \$(OBJS)

distclean : clean
	rm -f $CONFIG $MAKEFILE

install : all
	mkdir -p ${BIN}
	mkdir -p ${INC}/${NAME}
	mkdir -p ${LIB}
EOF
for F in $SCRIPTS ; do 
cat <<EOF >>$MAKEFILE
	cp $F ${BIN}/
EOF
done
cat <<EOF >>$MAKEFILE
	cp $CONFIG ${BIN}/
EOF
for F in $INCS ; do 
cat <<EOF >>$MAKEFILE
	cp $F ${INC}/${NAME}/
EOF
done
cat <<EOF >>$MAKEFILE
	cp \$(LIB) ${LIB}/

uninstall :
EOF
for F in $SCRIPTS ; do 
cat <<EOF >>$MAKEFILE
	rm -f ${BIN}/$F
EOF
done
cat <<EOF >>$MAKEFILE
	rm -f ${BIN}/$CONFIG
	rm -rf ${INC}/${NAME}
	rm -f ${LIB}/\$(LIB)
EOF
