EnergyManager_SRCS = EnergyManager.cpp $(wildcard base/*.cpp) $(wildcard structs/*.cpp) http/HTTPClient.cpp http/HTTPCommon.cpp ssdp/SSDPDiscovery.cpp
EnergyManager_OBJS = $(addprefix .obj/, $(EnergyManager_SRCS:.cpp=.o))
Gateway_SRCS = GatewaySimulator.cpp $(wildcard base/*.cpp) $(wildcard structs/*.cpp) http/HTTPClient.cpp http/HTTPCommon.cpp http/HTTPServer.cpp ssdp/SSDPServer.cpp
Gateway_OBJS = $(addprefix .obj/, $(Gateway_SRCS:.cpp=.o))
LDFLAGS = -lpthread
CFLAGS = -Wall -g -DINTERACTIVE_CONSOLE
# By default, the UPnP discovery modul listens on all interfaces. 
# If only the local interface 127.0.0.1 should be used, enable the next line.
#CFLAGS += -DLOCALHOST_ONLY

.PHONY: all dirs clean

all: dirs EnergyManager Gateway

dirs:
	@mkdir -p .obj .obj/http .obj/base .obj/ssdp .obj/structs
	@mkdir -p .deps .deps/http .deps/base .deps/ssdp .deps/structs

.obj/%.o: %.cpp
	$(CXX) $(CFLAGS) -o $@ -c $< -I. -MD -MF .deps/$*.d

EnergyManager: $(EnergyManager_OBJS)
	g++ -Wall -o $@ $(EnergyManager_OBJS) $(LDFLAGS)

Gateway: $(Gateway_OBJS)
	g++ -Wall -o $@ $(Gateway_OBJS) $(LDFLAGS)
	
doc:
	doxygen Doxyfile

DISTNAME = SEMP-Demo
DISTBASEDIR = /tmp
DISTDIR = $(DISTBASEDIR)/$(DISTNAME)

dist:
	rm -f $(DISTNAME).tgz
	rm -rf $(DISTDIR)
	mkdir $(DISTDIR)
	cp -r base handlers http ssdp *.h *.cpp Doxyfile Makefile README.txt $(DISTDIR)
	cp -rH structs $(DISTDIR)
	cd $(DISTDIR); make clean
	tar cvzf $(DISTNAME).tgz -C $(DISTBASEDIR) $(DISTNAME)
	rm -rf $(DISTDIR)

clean:
	rm -rf .obj .deps EnergyManager Gateway
	
-include $(addprefix .deps/, $(EnergyManager_SRCS:.cpp=.d))
-include $(addprefix .deps/, $(Gateway_SRCS:.cpp=.d))
