CFLAGS=-g -std=c++17 -fpic -fpermissive -Wformat-security -Wsign-compare -Wunused-variable -D "_USING_HID_API" 
LDFLAGS=-g
LDLIBS=-shared -l"usb-1.0" -l"pthread"

mtmms: main.o connection stdafx dynaflex
	g++ $(LDFLAGS) -o libmtmms.so hid.o stdafx.o ASNOne.o TLV.o ApolloExport.o ApolloDevice.o USBConnection.o SocketConnection.o CommPort.o WSConnection.o WebSocketComm.o ApolloAPIFrameWork.o ApolloCommand.o ApolloFileMessage.o ApolloNotification.o ApolloResponse.o  MagTekCommunicationPackage.o SerialCommunicationPackage.o StaticStringBuffer.o $(LDLIBS)
	g++ -l"usb-1.0" -l"pthread" -o libmtmms.a hid.o stdafx.o ASNOne.o TLV.o ApolloExport.o ApolloDevice.o USBConnection.o SocketConnection.o CommPort.o WSConnection.o WebSocketComm.o ApolloAPIFrameWork.o ApolloCommand.o ApolloFileMessage.o ApolloNotification.o ApolloResponse.o  MagTekCommunicationPackage.o SerialCommunicationPackage.o StaticStringBuffer.o $(LDLIBS)

stdafx : stdafx.cpp stdafx.h TLV.cpp TLV.h ASNOne.cpp StaticStringBuffer.cpp
	g++ $(CFLAGS) -c stdafx.cpp TLV.cpp ASNOne.cpp StaticStringBuffer.cpp
	
main.o: ApolloExport.cpp ApolloDevice.cpp stdafx connection dynaflex
	g++ $(CFLAGS) -c ApolloExport.cpp ApolloDevice.cpp

connection: hid.c hidapi.h USBConnection.cpp CommPort.cpp WSConnection.cpp WebSocketComm.cpp SocketConnection.cpp stdafx
	g++ $(CFLAGS) -c hid.c USBConnection.cpp CommPort.cpp WSConnection.cpp WebSocketComm.cpp SocketConnection.cpp
	
dynaflex : stdafx connection ApolloAPIFrameWork.cpp ApolloCommand.cpp ApolloFileMessage.cpp ApolloNotification.cpp ApolloResponse.cpp MagTekCommunicationPackage.cpp SerialCommunicationPackage.cpp
	g++ $(CFLAGS) -c ApolloAPIFrameWork.cpp ApolloCommand.cpp ApolloFileMessage.cpp ApolloNotification.cpp ApolloResponse.cpp MagTekCommunicationPackage.cpp SerialCommunicationPackage.cpp

install:
	install -m 644 libmtmms.so /usr/local/lib

clean:
	rm *.o
	rm libmtmms.so