MCS = mcs #-optimize+ #-platform:arm
MONO = mono #-O=all,-shared #--optimize=unsafe,loop,inline #--gc=sgen --llvm --optimize=all

comma:=,
empty:=
space:=$(empty) $(empty)
commalist = $(subst $(space),$(comma),$(1))

all: out.txt
	cat $<

out.txt: main.exe
	$(MONO) $< > $@

main.exe: main.cs matrix.dll
	$(MCS) $< -o:$@ -r:$(call commalist,$(filter-out $<,$^))

matrix.dll: gramschmidt.cs ../matrix/matrix.cs ../matrix/vector.cs
	$(MCS) $^ /t:library /out:$$(pwd)/$@

clean: ; $(RM) *.dll *.exe out.* *.log *.svg

#%.dll: %.cs ; $(MCS) -t:library $*.cs -o:$*.dll *log
