# main StreamGoose build flow

SRC = src
DIST = out
CONFIGBINNAME = streamgoose-config
TCLDIR = tcldep
CROSSPREFIX=x86_64-w64-mingw32
CROSSCC = $(CROSSPREFIX)-gcc
CROSSCXX = $(CROSSPREFIX)-g++
GOBIN ?= go
GOMODTIDY ?= $(GOBIN) mod tidy
MFLAGS = -C $(SRC) GOBIN="$(GOBIN)" GOMODTIDY="$(GOMODTIDY)"

.PHONY: all test clean

all:
	$(MAKE) $(MFLAGS) unix
	$(MAKE) dist

headless:
	$(MAKE) $(MFLAGS) unix-headless
	$(MAKE) dist

win64:
	$(MAKE) $(MFLAGS) win64
	$(MAKE) dist

win64-cross:
	$(MAKE) $(MFLAGS) CGO_ENABLED=1 CC=$(CROSSCC) CXX=$(CROSSCXX) win64
	$(MAKE) dist

win64-headless:
	$(MAKE) $(MFLAGS) win64-headless
	$(MAKE) dist

config-linux:
	cp $(SRC)/conf.tcl $(TCLDIR)/conf.tcl
	cp $(TCLDIR)/tclkit-linux64 $(TCLDIR)/tclruntime
	cd $(TCLDIR) && ./tclkit-linux64 ./sdx.kit qwrap conf.tcl -runtime tclruntime
	mkdir -p $(DIST)
	mv $(TCLDIR)/conf $(DIST)/$(CONFIGBINNAME) 
	rm $(TCLDIR)/tclruntime $(TCLDIR)/conf.tcl

config-win64:
	cp $(SRC)/conf.tcl $(TCLDIR)/conf.tcl
	cp $(TCLDIR)/tclkit-win64.exe $(TCLDIR)/tclruntime.exe
	cd $(TCLDIR) && ./tclkit-win64.exe ./sdx.kit qwrap conf.tcl -runtime tclruntime.exe
	mkdir -p $(DIST)
	mv $(TCLDIR)/conf $(DIST)/$(CONFIGBINNAME).exe
	rm $(TCLDIR)/tclruntime.exe $(TCLDIR)/conf.tcl

config-win64-cross:
	cp $(SRC)/conf.tcl $(TCLDIR)/conf.tcl
	cp $(TCLDIR)/tclkit-win64.exe $(TCLDIR)/tclruntime.exe
	cd $(TCLDIR) && ./tclkit-linux64 ./sdx.kit qwrap conf.tcl -runtime tclruntime.exe
	mkdir -p $(DIST)
	mv $(TCLDIR)/conf $(DIST)/$(CONFIGBINNAME).exe 
	rm $(TCLDIR)/tclruntime.exe $(TCLDIR)/conf.tcl

dist:
	mkdir -p $(DIST)
	mv $(SRC)/streamgoose* $(DIST)/
	cp -r webroot $(DIST)/
	cp -r auth $(DIST)/
	cp -r external $(DIST)/
	cp config.json $(DIST)/
	cp labels.ini $(DIST)/

clean:
	rm -rf $(DIST)

