.SUFFIXES:
MAKEFLAGS += --no-builtin-rules --no-builtin-variables

OB := ecsd
LKM := linkmem
PRG = .exe
ECS := /c/EigenCompilerSuite/runtime

.PHONY: all
all : extsqlite.lib extui.lib

build/winui.obf: src/winui.cpp
	@echo building $@
	@mkdir -p build
	@cd build && cp ../src/winlib.hpp .
	@cd build && cp ../src/ui.cpp .
	@cd build && cp ../src/winui.cpp .
	@cd build && $(OB) -c $(notdir $<)

build/winsqlite.obf: src/winsqlite.cpp
	@echo building $@
	@mkdir -p build
	@cd build && cp ../src/winlib.hpp .
	@cd build && cp ../src/sqlite.cpp .
	@cd build && cp ../src/winsqlite.cpp .
	@cd build && $(OB) -c $(notdir $<)

build/%.obf: src/%.mod
	@echo compiling $< 
	@mkdir -p build
	@cd build && ecsd -c $(addprefix ../, $<)

extsqlite.lib : build/Ext.Sqlite.obf build/winsqlite.obf
	@echo linking $@
	@-rm $@
	@touch $@
	@linklib $@ $^

extui.lib : build/Ext.UI.obf build/winui.obf
	@echo linking $@
	@-rm $@
	@touch $@
	@linklib $@ $^

build/test$(PRG): src/test.mod extui.lib
	@echo building $@
	@mkdir -p build
	@cd build && cp -f ../src/test.mod .
	@cd build && $(OB) $(notdir $<) ../extui.lib

run: build/test$(PRG)
	@cp build/test$(PRG) test$(PRG)
	@./test$(PRG)

.PHONY: clean
clean:
	@echo Clean
	@-rm -rf build