#!/bin/sh

SOURCE="dwanneal.c
dwmain.c
dwplace.c
dwpostscript.c
dwroute.c
dwdatabase.c
../src/dvbuild.c
../src/dvdatabase.c
../src/dvlexwrap.c
../src/dvparse.c
../src/dvread.c
../src/dvscan.c
../src/dvutil.c"

if [ "$CC" = "" ]; then
    CC=gcc
fi
CFLAGS="-Wall -W -Wno-unused-parameter -Wno-unused-function -I../src -I../util"
LIBS="-lm"

if [ "`uname -m`" = x86_64 ]; then
    CFLAGS="$CFLAGS -m64"
fi

PREFIX="/usr/local"
debuggin=false
while [ $# != 0 ]; do
    if [ "${1%=*}" = "--prefix" ]; then
	PREFIX=${1#*=}
	echo "Configuring to install into $PREFIX"
    elif [ "$1" = "--dmalloc" ]; then
	LIBS="$LIBS -ldmalloc"
	CFLAGS="$CFLAGS -DMALLOC"
	useDmalloc=true
    elif [ "$1" = "--debug" ]; then
	debugging=true
	echo "Configuring for debug compile"
    else
	echo "Unknown option $1. IGNORING."
    fi
    shift
done

if [ "$debugging" = "true" ]; then
    CFLAGS="-g -DDD_DEBUG $CFLAGS"
    LIBS="$LIBS ../util/ddutil-dbg.a"
else
    CFLAGS="-O2 $CFLAGS"
    LIBS="$LIBS ../util/ddutil.a"
fi

if [ ! -d obj ]; then
    mkdir obj
fi

datadraw ../src/Database.dd
datadraw -I ../src Dataview.dd
flex -f -Pdvlex -o../src/dvscan.c ../src/dvscan.l
bison -d -p dv -o ../src/dvparse.c -b dv ../src/dvparse.y

echo "CC=$CC
CFLAGS=$CFLAGS
LIBS=$LIBS
PREFIX=$PREFIX
" > Makefile

echo "OBJECTS=\\" >> Makefile
for sourceFile in $SOURCE; do
    objFile="obj/`basename $sourceFile | sed 's/\.c$/.o/'`"
    echo "$objFile\\" >> Makefile
done

echo "

dataview: \$(OBJECTS) ../util/ddutil-dbg.a
	\$(CC) \$(CFLAGS) \$(OBJECTS) \$(LIBS) -o dataview

clean:
	rm -f \$(OBJECTS)

install: dataview
	install -d \$(PREFIX)/bin
	install dataview \$(PREFIX)/bin

deb:
	fakeroot debian/rules binary && sudo dpkg -i ../*.deb

# Special targets
dwdatabase.h dwdatabase.c: Dataview.dd
	datadraw -I ../src Dataview.dd

../src/dvparse.c ../src/dvparse.h: ../src/dvparse.y ../src/dv.h
	bison -d -p dv -o ../src/dvparse.c -b dv ../src/dvparse.y

../src/dvscan.c: ../src/dvscan.l ../src/dvparse.h ../src/dv.h
	flex -f -Pdvlex -o../src/dvscan.c ../src/dvscan.l

../src/dvdatabase.h ../src/dvdatabase.c: ../src/Database.dd
	datadraw ../src/Database.dd

" >> Makefile

for sourceFile in $SOURCE; do
    objFile="obj/`basename $sourceFile | sed 's/\.c$/.o/'`"
    echo "$objFile: $sourceFile
	\$(CC) -c \$(CFLAGS) $sourceFile -o $objFile
" >> Makefile
done

$CC -M $CFLAGS $SOURCE | sed 's/^\([^ ].*\.o:\)/obj\/\1/' >> Makefile
