SDKDIR=$(HOME)/.dotnet/sdk/6.0.102# or whatever your sdk is
CSCPATH=$(SDKDIR)/Roslyn/bincore/csc.dll
NETSTANDARD=$(SDKDIR)/ref/netstandard.dll
CONFIG=$(SDKDIR)/vstest.console.runtimeconfig.json
DOTNET=DOTNET_CLI_TELEMETRY_OPTOUT=1; dotnet
CSC=$(DOTNET) $(CSCPATH) -reference:$(NETSTANDARD)
RUN=$(DOTNET) exec --runtimeconfig $(CONFIG)
CSC = mcs
RUN = mono
CODE = $(filter %.cs,$^)
LIBS = $(addprefix -reference:,$(filter %.dll,$^))
MKEXE = $(CSC) -target:exe -out:$@ $(LIBS) $(CODE)
MKLIB = $(CSC) -target:library -out:$@ $(LIBS) $(CODE)

Out.txt:main.exe
	$(RUN) $< > $@ 2>log
	echo "\ntall matrix:" >> $@
	$(RUN) $< 4 3 >> $@ 2>>log

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

main-qr.exe: main-qr.cs matlib.dll; $(MKEXE)

matlib.dll: ../matrix/matrix.cs ../matrix/vector.cs \
	givensqr.cs gsqr.cs qr.cs
	$(MKLIB);

clean:
	$(RM) Out* *.dll *.exe log*
