#$@ output
#$< input
CC=gcc
DEBUG=-ggdb
CFLAGS=$(DEBUG) -Wall
LFLAGS= -lm
#$(CFLAGS)
#TARGET: dependancies
#tab	command1
#tab	command2

Executable13 = Pastore_Hw13
Executable11 = Pastore_Hw11
LibIn = libvecmat.a
Header = header.h libvecmat.h
Ofiles = processinput.o printoutput.o funk.o sumfunk.o gradfunk.o hessfunk.o
Ofiles13 = main13.o parseinput13.o
Ofiles11 = main11.o parseinput11.o
EXTRA_CFLAGS13=-DTHISISPROGRAM11=0
EXTRA_CFLAGS11=-DTHISISPROGRAM11=1


all:$(Executable13) $(Executable11)

$(Ofiles) : $(Header) $(LibIn)

.c: $(Header)
	$(CC) $(CFLAGS) $@.c -c -o $@

quickline13 = $(CC) $(CFLAGS) $(EXTRA_CFLAGS13) -o $@ -c $<
quickline11 = $(CC) $(CFLAGS) $(EXTRA_CFLAGS11) -o $@ -c $<
commonhead = $(Header) $(LibIn)

main13.o: main.c $(commonhead)
	$(quickline13)
parseinput13.o: parseinput.c $(commonhead)
	$(quickline13)

main11.o: main.c $(commonhead)
	$(quickline11)
parseinput11.o: parseinput.c $(commonhead)
	$(quickline11)




$(Executable13) : $(Ofiles) $(Ofiles13) $(Header)
	$(CC) $(CFLAGS) $(LFLAGS) -o $@ $(Ofiles) $(Ofiles13) -L. $(LibIn)

$(Executable11) : $(Ofiles) $(Ofiles11) $(Header)
	$(CC) $(CFLAGS) $(LFLAGS) -o $@  $(Ofiles) $(Ofiles11) -L. $(LibIn)


clean:
	rm -f $(Ofiles) $(Executable11) $(Ofiles11) $(Executable13) $(Ofiles13)
	rm -f singletest quinttest longtestresults

demo: $(Executable13) $(Executable11) x.vec pre
	cat pre x.vec > in
	cat x.vec x.vec x.vec x.vec x.vec > y.vec
	cat in in in in in > y.in
	./Pastore_Hw11 < x.vec > singletest
	echo "" >>singletest
	./Pastore_Hw13 < in >>singletest
	./Pastore_Hw11 < y.vec > quinttest
	echo "" >> quinttest
	./Pastore_Hw13 < y.in >> quinttest
	cat y.in y.in y.in y.in y.in > in25
	cat in25 in25 in25 in25 > in100
	cat in100 in100 in100 in100 in100 >in500
	cat in500 in500 in500 in500 in500 >in2500
	cat in2500 in2500 in2500 in2500 in2500 >in10000
	./Pastore_Hw13 <in10000 > longtest
	tail -n6 longtest >longtestresults
	rm y.vec y.in in25 in100 in500 in2500 in10000 longtest
	cat longtestresults		
