DLLS = $(addprefix -reference:,$(filter %.dll,$^))
CODE = $(filter %.cs,$^)
MKEXE = mcs -target:exe -out:$@ $(DLLS) $(CODE)
MKDLL = mcs -target:library -out:$@ $(DLLS) $(CODE)

all: Out.txt
Out.txt: main.exe gaussnewton.exe
	>$@
	>log
	for f in $^; do mono $$f >>$@ 2>>log; done

main.exe: main.cs qnewton.dll matlib.dll ; $(MKEXE)
gaussnewton.exe: gaussnewton.cs matlib.dll ; $(MKEXE)

LIBDIR=..
LIBSRC=\
	$(LIBDIR)/QR/givensqr.cs\
	$(LIBDIR)/matrix/vector.cs\
	$(LIBDIR)/matrix/matrix.cs
matlib.dll: $(LIBSRC) ; $(MKDLL)

qnewton.dll: qnewton.cs newton.cs newton2.cs simplex.cs matlib.dll ; $(MKDLL)

clean:
	$(RM) *.exe *.dll [Oo]ut* [Ll]og*
