.SILENT: help
VERSION = 0.1.10

-include Makefile.rules

OBJECTSCLI = client.oo tcp.oo nwthread.oo modbus.oo log.oo

DISTNAME=testmodbus-client-$(VERSION)

ifeq ($(CONFIGSET),)
noconfig: help
endif

all: Makefile.rules testmodbus-client$(TARGETEXT)

help:
	echo "set up configuration"
	echo "   make configwindows    to generate the windows build"
	echo "   make configcross      to generate the windows cross build"
	echo "   make configlinux      to generate the linux build"
	echo "   make buildwindows     to generate the build for windows (uses cross compiler)"
	
configlinux: clean
	cp -f Makefile.rules.linux Makefile.rules
	make config

configwindows: clean
	cp -f Makefile.rules.windows Makefile.rules
	make config

configcross: clean
	cp -f Makefile.rules.crosswindows Makefile.rules
	make config

config: Makefile.rules
	echo "#ifndef _CONFIG_H_" > config.h
	echo "#define _CONFIG_H_" >> config.h
	echo "" >> config.h
	echo "#define VERSION \"$(VERSION)\"" >> config.h
	echo "" >> config.h
	echo "#endif" >> config.h

testmodbus-client$(TARGETEXT): $(OBJECTSCLI)
	$(CPP) -o testmodbus-client$(TARGETEXT) $(OBJECTSCLI) $(LDFLAGS) $(LIBS)

.SUFFIXES:
.SUFFIXES:	.c .cc .C .cpp .oo

.cc.oo : $(INCLUDES)
	$(CPP) -o $@ -c $(CPPFLAGS) $<

clean:
	rm -rf TestModbus-Client-$(VERSION)/
	rm -f *.o *.oo *.c~ *.h~ *.cc~ *.ui~ testmodbus-client$(TARGETEXT) Makefile~
	rm -rf *.dll
	rm -rf *.exe
	rm -rf Makefile.rules
	rm -rf test-fc16
	rm -rf test-fc15
	rm -rf config.h

dist: clean
	rm -rf $(DISTNAME)
	mkdir $(DISTNAME)
	cp Makefile* $(DISTNAME)
	cp README.md $(DISTNAME)
	cp LICENSE $(DISTNAME)
	cp Changelog $(DISTNAME)
	cp *.ui $(DISTNAME)
	cp -rf *.h $(DISTNAME)
	cp -rf *.cc $(DISTNAME) 
	tar cvzf $(DISTNAME).tgz $(DISTNAME)
	rm -rf $(DISTNAME)

dep:
	$(CXX) -MM `ls *.cc` $(CXXFLAGS) > $(DEPENDFILE)

buildwindows: clean
	make configcross
	make $(TARGET) -j 9
	mkdir TestModbus-Client-$(VERSION)
	cp *.exe TestModbus-Client-$(VERSION)/
	cp testmodbus-client.ui TestModbus-Client-$(VERSION)/
	cp testmodbus-client.png TestModbus-Client-$(VERSION)/
	cp README.md TestModbus-Client-$(VERSION)/
	cp Changelog TestModbus-Client-$(VERSION)/
	cp LICENSE TestModbus-Client-$(VERSION)/
	./copydlls.sh
	./copydlls.sh
	./copydlls.sh
	./copydlls.sh
	./copyshare.sh
	cp /usr/lib/gcc/x86_64-w64-mingw32/14-win32/*.dll TestModbus-Client-$(VERSION)/
	for i in `ldd TestModbus-Client.exe |grep -vi "/c/windows" | cut -d" " -f3`; do cp $$i TestModbus-Client-$(VERSION)/; done
	mv *.dll TestModbus-Client-$(VERSION)/
	mv share TestModbus-Client-$(VERSION)/
	zip -r TestModbus-Client-$(VERSION)-win.zip TestModbus-Client-$(VERSION)/

-include $(DEPENDFILE)

.PHONY: all
.PHONY: count
.PHONY: clean
